public boolean isValidMaterial(Material material) { for(String type : neededTypes) { if(!material.hasStats(type)) { return false; } } return true; }
@Override public boolean canUseMaterial(Material mat) { return mat.hasStats(MaterialTypes.HEAD); }
public static Collection<Material> getAllMaterialsWithStats(String statType) { ImmutableList.Builder<Material> mats = ImmutableList.builder(); for(Material material : materials.values()) { if(material.hasStats(statType)) { mats.add(material); } } return mats.build(); }
@Override public boolean canUseMaterialForRendering(Material mat) { return mat.hasStats(MaterialTypes.HEAD) || canUseMaterial(mat); } }
private boolean isFluidWithHeadMaterial(Fluid fluid) { return TinkerRegistry.getAllMaterials().stream() .filter(mat -> mat.hasStats(MaterialTypes.HEAD)) .map(Material::getFluid) .anyMatch(fluid::equals); }
@Override public ItemStack getItemstackWithMaterial(Material material) { if(material.hasStats(MaterialTypes.SHAFT)) { return getItemstackWithMaterials(material, Material.UNKNOWN); } return getItemstackWithMaterials(Material.UNKNOWN, material); }
@Override public boolean matches(ItemStack cast, Fluid fluid) { // cast needs to be a shaft with shaft material, fluid needs to belong to a material with head stats return cast.getItem() == TinkerTools.arrowShaft && TinkerTools.arrowShaft.getMaterial(cast).hasStats(MaterialTypes.SHAFT) && isFluidWithHeadMaterial(fluid); }
public void recurse(ToolCore tool, ImmutableList<Material> materials, List<Triple<ItemStack, ImmutableList<Material>, Object[]>> results, Function<ItemStack, ?> fns[]) { // not enough materials yet, recurse if(tool.getRequiredComponents().size() > materials.size()) { for(Material mat : TinkerRegistry.getAllMaterials()) { if(!mat.hasStats(MaterialTypes.HEAD)) { continue; } ImmutableList.Builder<Material> mats = ImmutableList.builder(); mats.addAll(materials); mats.add(mat); recurse(tool, mats.build(), results, fns); } } // enough materials, build it and do stuff with it! else { ItemStack stack = tool.buildItem(materials); Object[] values = new Object[fns.length]; for(int i = 0; i < fns.length; i++) { values[i] = fns[i].apply(stack); } results.add(Triple.of(stack, materials, values)); } }
if(!mat1.hasStats(MaterialTypes.HEAD)) { continue;
.filter(m -> !m.isHidden()) .filter(Material::hasItems) .filter(material -> material.hasStats(materialType)) .collect(Collectors.toList());
List<Material> mats = new ArrayList<>(3); if(head.hasStats(MaterialTypes.HEAD)) { mats.add(TinkerMaterials.wood); mats.add(head);
public ModFortify(Material material) { super("fortify" + material.getIdentifier(), material.materialTextColor); if(!material.hasStats(MaterialTypes.HEAD)) { throw new TinkerAPIException(String.format("Trying to add a fortify-modifier for a material without tool stats: %s", material.getIdentifier())); } this.material = material; addAspects(new ModifierAspect.SingleAspect(this), new ModifierAspect.DataAspect(this), ModifierAspect.harvestOnly); ItemStack kit = TinkerTools.sharpeningKit.getItemstackWithMaterial(material); ItemStack flint = new ItemStack(Items.FLINT); addRecipeMatch(new RecipeMatch.ItemCombination(1, kit, flint)); }
if(mat.hasStats(MaterialTypes.HEAD) && (mat.isCraftable() || mat.isCastable())) { subItems.add(getItemstackWithMaterial(mat)); if(!Config.listAllMaterials) {
putStatTrace(identifier, stats, activeMod); if(Objects.equals(stats.getIdentifier(), MaterialTypes.HEAD) && !material.hasStats(MaterialTypes.PROJECTILE)) { addMaterialStats(material, new ProjectileMaterialStats());
for(Material mat : TinkerRegistry.getAllMaterials()) { if(canUseMaterial(mat) && mat.hasStats(MaterialTypes.SHAFT)) { subItems.add(getItemstackWithMaterials(mat, TinkerMaterials.iron)); if(!Config.listAllMaterials) {
if(!mat1.hasStats(MaterialTypes.HEAD)) { continue;