@Override public boolean isValidMaterial(Material material) { return material.isCastable() && super.isValidMaterial(material); } }
public boolean isValid(IToolPart part, Material material) { return isValidItem(part) && isValidMaterial(material); }
public Collection<ITrait> getApplicableTraitsForMaterial(Material material) { if(!isValidMaterial(material)) { return ImmutableList.of(); } ImmutableList.Builder<ITrait> traits = ImmutableList.builder(); // traits of the types used for(String type : neededTypes) { traits.addAll(material.getAllTraitsForStats(type)); } // use default trait if none is present if(traits.build().isEmpty()) { traits.addAll(material.getDefaultTraits()); } return traits.build(); }
/** Checks whether an Item built from materials has only valid materials. Uses the standard NBT to determine materials. */ public boolean hasValidMaterials(ItemStack stack) { // checks if the materials used support all stats needed NBTTagList list = TagUtil.getBaseMaterialsTagList(stack); List<Material> materials = TinkerUtil.getMaterialsFromTagList(list); // something went wrooooong if(materials.size() != requiredComponents.length) { return false; } // check if all materials used have the stats needed for(int i = 0; i < materials.size(); i++) { Material material = materials.get(i); PartMaterialType required = requiredComponents[i]; if(!required.isValidMaterial(material)) { return false; } } return true; }
protected void addDefaultSubItems(List<ItemStack> subItems, Material... fixedMaterials) { for(Material head : TinkerRegistry.getAllMaterials()) { List<Material> mats = new ArrayList<>(requiredComponents.length); for(int i = 0; i < requiredComponents.length; i++) { if(fixedMaterials.length > i && fixedMaterials[i] != null && requiredComponents[i].isValidMaterial(fixedMaterials[i])) { mats.add(fixedMaterials[i]); } else { // todo: check for applicability with stats mats.add(head); } } ItemStack tool = buildItem(mats); // only valid ones if(hasValidMaterials(tool)) { subItems.add(tool); if(!Config.listAllMaterials) { break; } } } }
if(!pms.get(i).isValidMaterial(materials.get(i))) { materials.set(i, Material.UNKNOWN);