@Override public ToolNBT buildTagData(List<Material> materials) { HandleMaterialStats handle = materials.get(0).getStatsOrUnknown(MaterialTypes.HANDLE); HeadMaterialStats head = materials.get(1).getStatsOrUnknown(MaterialTypes.HEAD); ExtraMaterialStats extra = materials.get(2).getStatsOrUnknown(MaterialTypes.EXTRA); HandleMaterialStats handle2 = materials.get(3).getStatsOrUnknown(MaterialTypes.HANDLE); ToolNBT data = new ToolNBT(); data.head(head); data.extra(extra); data.handle(handle, handle2); data.durability *= DURABILITY_MODIFIER; return data; } }
@Override public void read(NBTTagCompound tag) { super.read(tag); axeLevel = tag.getInteger(TAG_AxeLevel); shovelLevel = tag.getInteger(TAG_ShovelLevel); }
public NBTTagCompound get() { NBTTagCompound tag = parent.copy(); write(tag); return tag; }
@Override public ToolNBT buildTagData(List<Material> materials) { HandleMaterialStats handle = materials.get(0).getStatsOrUnknown(MaterialTypes.HANDLE); HeadMaterialStats head = materials.get(1).getStatsOrUnknown(MaterialTypes.HEAD); HeadMaterialStats plate1 = materials.get(2).getStatsOrUnknown(MaterialTypes.HEAD); HeadMaterialStats plate2 = materials.get(3).getStatsOrUnknown(MaterialTypes.HEAD); ToolNBT data = new ToolNBT(); data.head(head, head, plate1, plate2); // head itself counts for more data.handle(handle); // harvestlevel is always determined by the head data.harvestLevel = head.harvestLevel; data.durability *= DURABILITY_MODIFIER; return data; } }
@Override public final NBTTagCompound buildTag(List<Material> materials) { return buildTagData(materials).get(); }
public static ToolNBT getToolStats(NBTTagCompound root) { return new ToolNBT(getToolTag(root)); }
TagUtil.getOriginalToolStats(tag1).equals(TagUtil.getOriginalToolStats(tag2)); // unmodified base stats
@Override public void applyEffect(NBTTagCompound rootCompound, NBTTagCompound modifierTag) { ToolNBT data = TagUtil.getToolStats(rootCompound); data.durability += 500; if(data.harvestLevel < HarvestLevels.OBSIDIAN) { data.harvestLevel++; } data.attack += 1f; data.speed += 0.5f; TagUtil.setToolTag(rootCompound, data.get()); } }
public static ToolNBT getOriginalToolStats(NBTTagCompound root) { return new ToolNBT(getTagSafe(root, Tags.TOOL_DATA_ORIG)); }
@Override public ToolNBT buildTagData(List<Material> materials) { HandleMaterialStats handle = materials.get(0).getStatsOrUnknown(MaterialTypes.HANDLE); HeadMaterialStats head = materials.get(1).getStatsOrUnknown(MaterialTypes.HEAD); HeadMaterialStats plate = materials.get(2).getStatsOrUnknown(MaterialTypes.HEAD); ExtraMaterialStats binding = materials.get(3).getStatsOrUnknown(MaterialTypes.EXTRA); ToolNBT data = new ToolNBT(); data.head(head, plate); data.extra(binding); data.handle(handle); data.durability *= DURABILITY_MODIFIER; return data; } }
@Override public void applyEffect(NBTTagCompound rootCompound, NBTTagCompound modifierTag) { ToolBuilder.addEnchantment(rootCompound, Enchantments.SILK_TOUCH); ToolNBT toolData = TagUtil.getToolStats(rootCompound); toolData.speed = Math.max(1f, toolData.speed - 3f); toolData.attack = Math.max(1f, toolData.attack - 3f); TagUtil.setToolTag(rootCompound, toolData.get()); } }
@Override public void write(NBTTagCompound tag) { super.write(tag); tag.setInteger(TAG_AxeLevel, axeLevel); tag.setInteger(TAG_ShovelLevel, shovelLevel); } }
@Override public void read(NBTTagCompound tag) { super.read(tag); this.drawSpeed = tag.getFloat(Tags.DRAWSPEED); this.range = tag.getFloat(Tags.RANGE); this.bonusDamage = tag.getFloat(Tags.PROJECTILE_BONUS_DAMAGE); }
HeadMaterialStats binding = materials.get(3).getStats(MaterialTypes.HEAD); ToolNBT data = new ToolNBT();
@Override public ToolNBT buildTagData(List<Material> materials) { HandleMaterialStats handle = materials.get(0).getStatsOrUnknown(MaterialTypes.HANDLE); HeadMaterialStats head = materials.get(1).getStatsOrUnknown(MaterialTypes.HEAD); HeadMaterialStats plate = materials.get(2).getStatsOrUnknown(MaterialTypes.HEAD); ExtraMaterialStats binding = materials.get(3).getStatsOrUnknown(MaterialTypes.EXTRA); ToolNBT data = new ToolNBT(); data.head(head, plate); data.extra(binding); data.handle(handle); data.attack += 2; data.durability *= DURABILITY_MODIFIER; return data; }
@Override public void applyEffect(NBTTagCompound rootCompound, NBTTagCompound modifierTag) { ToolNBT data = TagUtil.getToolStats(rootCompound); ToolNBT base = TagUtil.getOriginalToolStats(rootCompound); data.durability += base.durability / 2; if(data.harvestLevel < HarvestLevels.DIAMOND) { data.harvestLevel++; } TagUtil.setToolTag(rootCompound, data.get()); } }
@Override public void write(NBTTagCompound tag) { super.write(tag); tag.setFloat(Tags.DRAWSPEED, drawSpeed); tag.setFloat(Tags.RANGE, range); tag.setFloat(Tags.PROJECTILE_BONUS_DAMAGE, bonusDamage); }
@Override public void read(NBTTagCompound tag) { super.read(tag); this.accuracy = tag.getFloat(Tags.ACCURACY); }
@Override public ToolNBT buildTagData(List<Material> materials) { HandleMaterialStats handle = materials.get(0).getStatsOrUnknown(MaterialTypes.HANDLE); HeadMaterialStats head = materials.get(1).getStatsOrUnknown(MaterialTypes.HEAD); HeadMaterialStats shield = materials.get(2).getStatsOrUnknown(MaterialTypes.HEAD); ExtraMaterialStats guard = materials.get(3).getStatsOrUnknown(MaterialTypes.EXTRA); ToolNBT data = new ToolNBT(); data.head(head, shield); data.extra(guard); data.handle(handle); data.attack *= 1.3f; data.attack += 3f; // triple durability! data.durability *= DURABILITY_MODIFIER; return data; }
@SubscribeEvent public void onToolBuilding(TinkerEvent.OnItemBuilding event) { if(TinkerUtil.hasTrait(event.tag, this.getIdentifier())) { ToolNBT data = TagUtil.getToolStats(event.tag); // reduce durability by 20% data.durability = Math.max(1, (data.durability * 80) / 100); TagUtil.setToolTag(event.tag, data.get()); } } }