@SuppressWarnings("unchecked") public <T extends IMaterialStats> T getStatsOrUnknown(String identifier) { T stats = (T) getStatsSafe(identifier); if(stats == null && this != UNKNOWN) { return UNKNOWN.getStats(identifier); } return stats; }
public boolean hasStats(String identifier) { return getStats(identifier) != null; }
protected String getStatName(String type) { return Material.UNKNOWN.getStats(type).getLocalizedName(); }
@Override public ToolNBT buildTagData(List<Material> materials) { HeadMaterialStats handle = materials.get(0).getStats(MaterialTypes.HEAD); HeadMaterialStats head1 = materials.get(1).getStats(MaterialTypes.HEAD); HeadMaterialStats head2 = materials.get(2).getStats(MaterialTypes.HEAD); HeadMaterialStats binding = materials.get(3).getStats(MaterialTypes.HEAD);
HeadMaterialStats stats = mat1.getStats(MaterialTypes.HEAD); List<String> row = Lists.newArrayList(); rows.add(row);
protected int calculateRepairAmount(List<Material> materials, NonNullList<ItemStack> repairItems) { Set<Material> materialsMatched = Sets.newHashSet(); float durability = 0f; // try to match each material once for(int index : getRepairParts()) { Material material = materials.get(index); if(materialsMatched.contains(material)) { continue; } // custom repairing durability += repairCustom(material, repairItems) * getRepairModifierForPart(index); Optional<RecipeMatch.Match> matchOptional = material.matches(repairItems); if(matchOptional.isPresent()) { RecipeMatch.Match match = matchOptional.get(); HeadMaterialStats stats = material.getStats(MaterialTypes.HEAD); if(stats != null) { materialsMatched.add(material); durability += ((float) stats.durability * (float) match.amount * getRepairModifierForPart(index)) / 144f; RecipeMatch.removeMatch(repairItems, match); } } } durability *= 1f + ((float) materialsMatched.size() - 1) / 9f; return (int) durability; }
@Override public void applyEffect(NBTTagCompound rootCompound, NBTTagCompound modifierTag) { NBTTagCompound tag = TagUtil.getToolTag(rootCompound); HeadMaterialStats stats = material.getStats(MaterialTypes.HEAD); tag.setInteger(Tags.HARVESTLEVEL, stats.harvestLevel); // Remove other fortify modifiers, only the last one applies NBTTagList tagList = TagUtil.getModifiersTagList(rootCompound); for(int i = 0; i < tagList.tagCount(); i++) { NBTTagCompound mod = tagList.getCompoundTagAt(i); ModifierNBT data = ModifierNBT.readTag(mod); // only up to ourselves if(data.identifier.equals(this.identifier)) { break; } // remove other fortify occurences if(data.identifier.startsWith("fortify")) { tagList.removeTag(i); i--; // adjust counter } } TagUtil.setModifiersTagList(rootCompound, tagList); }
@Override protected int repairCustom(Material material, NonNullList<ItemStack> repairItems) { Optional<RecipeMatch.Match> matchOptional = RecipeMatch.of(TinkerTools.sharpeningKit).matches(repairItems); if(!matchOptional.isPresent()) { return 0; } RecipeMatch.Match match = matchOptional.get(); for(ItemStack stacks : match.stacks) { // invalid material? if(TinkerTools.sharpeningKit.getMaterial(stacks) != material) { return 0; } } RecipeMatch.removeMatch(repairItems, match); HeadMaterialStats stats = material.getStats(MaterialTypes.HEAD); float durability = stats.durability * match.amount * TinkerTools.sharpeningKit.getCost(); durability /= Material.VALUE_Ingot; return (int) (durability); }
HeadMaterialStats ref = baseMaterial.getStats(MaterialTypes.HEAD);// head.getStats(ToolMaterialStats.TYPE);
private void addStatsDisplay(int x, int y, int w, ArrayList<BookElement> list, Material material, LinkedHashSet<ITrait> allTraits, String stattype) { IMaterialStats stats = material.getStats(stattype); if(stats == null) { return;
public boolean checkMissingMaterialTooltip(ItemStack stack, List<String> tooltip, String statIdentifier) { Material material = getMaterial(stack); if(material == Material.UNKNOWN) { NBTTagCompound tag = TagUtil.getTagSafe(stack); String materialID = tag.getString(Tags.PART_MATERIAL); String error; if(!materialID.isEmpty()) { error = I18n.translateToLocalFormatted("tooltip.part.missing_material", materialID); } else { error = I18n.translateToLocal("tooltip.part.missing_info"); } tooltip.addAll(LocUtils.getTooltips(error)); return true; } else if(statIdentifier != null && material.getStats(statIdentifier) == null) { tooltip.addAll(LocUtils.getTooltips(Util.translateFormatted("tooltip.part.missing_stats", material.getLocalizedName(), statIdentifier))); return true; } return false; } }
private void addStatsDisplay(int x, int y, int w, ArrayList<BookElement> list, LinkedHashSet<ITrait> allTraits, String stattype) { IMaterialStats stats = material.getStats(stattype); if(stats == null) { return; } List<ITrait> traits = material.getAllTraitsForStats(stats.getIdentifier()); allTraits.addAll(traits); // create a list of all valid toolparts with the stats List<ItemStack> parts = Lists.newLinkedList(); for(IToolPart part : TinkerRegistry.getToolParts()) { if(part.hasUseForStat(stats.getIdentifier())) { parts.add(part.getItemstackWithMaterial(material)); } } // said parts next to the name if(parts.size() > 0) { ElementItem display = new ElementTinkerItem(x, y + 1, 0.5f, parts); list.add(display); } // and the name itself ElementText name = new ElementText(x + 10, y, w - 10, 10, stats.getLocalizedName()); name.text[0].underlined = true; list.add(name); y += 12; List<TextData> lineData = Lists.newArrayList(); // add lines of tool information lineData.addAll(getStatLines(stats)); lineData.addAll(getTraitLines(traits, material)); list.add(new ElementText(x, y, w, GuiBook.PAGE_HEIGHT, lineData)); }
if(material.getStats(stats.getIdentifier()) != null) { String registeredBy = "Unknown"; Map<String, ModContainer> matReg = statRegisteredByMod.get(identifier); if(Material.UNKNOWN.getStats(stats.getIdentifier()) == null) { error("Could not add Stat of type \"%s\": Default Material does not have default stats for said type. Please add default-values to the default material \"unknown\" first.", stats .getIdentifier());
@Override public int getDurabilityExtra() { return ((ExtraMaterialStats ) material.getStats("extra")).extraDurability; }
@Override public int getArrowBonusAmmo() { return ((ArrowShaftMaterialStats) material.getStats("shaft")).bonusAmmo; }
@Override public int getDurabilityHead() { return ((HeadMaterialStats) material.getStats("head")).durability; }
if(!checkMissingMaterialTooltip(stack, tooltip, MaterialTypes.HEAD)) { Material material = getMaterial(stack); HeadMaterialStats stats = material.getStats(MaterialTypes.HEAD); if(stats != null) { tooltip.add(HeadMaterialStats.formatHarvestLevel(stats.harvestLevel));
private static void set(Material material, String stat, float miningSpeed) { IMaterialStats oldStat = material.getStats(stat); if(oldStat instanceof HeadMaterialStats) { HeadMaterialStats headStat = (HeadMaterialStats) oldStat; HeadMaterialStats newHead = new HeadMaterialStats(headStat.durability, miningSpeed, headStat.attack, headStat.harvestLevel); material.addStats(newHead); } }
private static void set(Material material, String stat, int level) { IMaterialStats oldStat = material.getStats(stat); if(oldStat instanceof HeadMaterialStats) { HeadMaterialStats headStat = (HeadMaterialStats) oldStat; HeadMaterialStats newHead = new HeadMaterialStats(headStat.durability, headStat.miningspeed, headStat.attack, level); material.addStats(newHead); } }
private static void set(Material material, String stat, float attack) { IMaterialStats oldStat = material.getStats(stat); if(oldStat instanceof HeadMaterialStats) { HeadMaterialStats headStat = (HeadMaterialStats) oldStat; HeadMaterialStats newHead = new HeadMaterialStats(headStat.durability, headStat.miningspeed, attack, headStat.harvestLevel); material.addStats(newHead); } else if(oldStat instanceof FletchingMaterialStats) { FletchingMaterialStats fletch = (FletchingMaterialStats) oldStat; FletchingMaterialStats newShaft = new FletchingMaterialStats(attack, fletch.modifier); material.addStats(newShaft); } }