diff options
Diffstat (limited to 'src/main/java/lance5057/tDefense/util')
7 files changed, 150 insertions, 23 deletions
diff --git a/src/main/java/lance5057/tDefense/util/ArmorNBT.java b/src/main/java/lance5057/tDefense/util/ArmorNBT.java new file mode 100644 index 0000000..28455ff --- /dev/null +++ b/src/main/java/lance5057/tDefense/util/ArmorNBT.java @@ -0,0 +1,144 @@ +package lance5057.tDefense.util; + +import lance5057.tDefense.core.materials.ArmorMaterialStats; +import net.minecraft.nbt.NBTTagCompound; +import slimeknights.tconstruct.library.materials.ExtraMaterialStats; +import slimeknights.tconstruct.library.materials.HandleMaterialStats; +import slimeknights.tconstruct.library.utils.Tags; + +public class ArmorNBT { + + public int durability; + public int armorRating; + public int armorToughness; + public int modifiers; // free modifiers + + private final NBTTagCompound parent; + + public ArmorNBT() { + durability = 0; + armorRating = 0; + armorToughness = 0; + modifiers = 5; + parent = new NBTTagCompound(); + } + + public ArmorNBT(NBTTagCompound tag) { + read(tag); + parent = tag; + } + + /** Initialize the stats with the heads. CALL THIS FIRST */ + public ArmorNBT head(ArmorMaterialStats... heads) { + durability = 0; + armorRating = 0; + armorToughness = 0; + + // average all stats + for(ArmorMaterialStats head : heads) { + if(head != null) { + durability += head.durability; + armorRating += head.rating; + armorToughness += head.toughness; + } + } + + durability = Math.max(1, durability / heads.length); + armorRating /= (float) heads.length; + armorToughness /= (float) heads.length; + + return this; + } + + /** Add stats from the accessoires. Call this second! */ + public ArmorNBT extra(ExtraMaterialStats... extras) { + int dur = 0; + for(ExtraMaterialStats extra : extras) { + if(extra != null) { + dur += extra.extraDurability; + } + } + this.durability += Math.round((float) dur / (float) extras.length); + + return this; + } + + /** Calculate in handles. call this last! */ + public ArmorNBT handle(HandleMaterialStats... handles) { + // (Average Head Durability + Average Extra Durability) * Average Handle Modifier + Average Handle Durability + + int dur = 0; + float modifier = 0f; + for(HandleMaterialStats handle : handles) { + if(handle != null) { + dur += handle.durability; + modifier += handle.modifier; + } + } + + modifier /= (float) handles.length; + this.durability = Math.round((float) this.durability * modifier); + + // add in handle durability change + this.durability += Math.round((float) dur / (float) handles.length); + + this.durability = Math.max(1, this.durability); + + return this; + } + + public void read(NBTTagCompound tag) { + durability = tag.getInteger(Tags.DURABILITY); + armorRating = tag.getInteger("ArmorRating"); + armorToughness = tag.getInteger("ArmorToughness"); + modifiers = tag.getInteger(Tags.FREE_MODIFIERS); + } + + public void write(NBTTagCompound tag) { + tag.setInteger(Tags.DURABILITY, durability); + tag.setInteger("ArmorRating", armorRating); + tag.setInteger("ArmorToughness", armorToughness); + tag.setInteger(Tags.FREE_MODIFIERS, modifiers); + } + + public NBTTagCompound get() { + NBTTagCompound tag = parent.copy(); + write(tag); + + return tag; + } + + // AUtogenerated equals and hashcode + @Override + public boolean equals(Object o) { + if(this == o) { + return true; + } + if(o == null || getClass() != o.getClass()) { + return false; + } + + ArmorNBT toolNBT = (ArmorNBT) o; + + if(durability != toolNBT.durability) { + return false; + } + if(Float.compare(toolNBT.armorRating, armorRating) != 0) { + return false; + } + if(Float.compare(toolNBT.armorToughness, armorToughness) != 0) { + return false; + } + return modifiers == toolNBT.modifiers; + + } + + @Override + public int hashCode() { + int result = durability; + result = 31 * result + (armorRating != +0.0f ? Float.floatToIntBits(armorRating) : 0); + result = 31 * result + (armorToughness != +0.0f ? Float.floatToIntBits(armorToughness) : 0); + result = 31 * result + modifiers; + return result; + } +}
\ No newline at end of file diff --git a/src/main/java/lance5057/tDefense/util/BlocksBase.java b/src/main/java/lance5057/tDefense/util/BlocksBase.java index d33f459..d6b576a 100644 --- a/src/main/java/lance5057/tDefense/util/BlocksBase.java +++ b/src/main/java/lance5057/tDefense/util/BlocksBase.java @@ -5,15 +5,12 @@ import java.util.ArrayList; import lance5057.tDefense.Reference; import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; -import net.minecraftforge.fml.common.registry.GameRegistry; public abstract class BlocksBase { protected static ArrayList<Block> blockList = new ArrayList<Block>(); diff --git a/src/main/java/lance5057/tDefense/util/ItemsBase.java b/src/main/java/lance5057/tDefense/util/ItemsBase.java index aa45463..3e1064b 100644 --- a/src/main/java/lance5057/tDefense/util/ItemsBase.java +++ b/src/main/java/lance5057/tDefense/util/ItemsBase.java @@ -3,7 +3,6 @@ package lance5057.tDefense.util; import java.util.ArrayList; import lance5057.tDefense.Reference; -import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraftforge.event.RegistryEvent; @@ -11,7 +10,6 @@ import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.registries.IForgeRegistry; public abstract class ItemsBase { diff --git a/src/main/java/lance5057/tDefense/util/MetaItem.java b/src/main/java/lance5057/tDefense/util/MetaItem.java index 07b7c8e..1064da6 100644 --- a/src/main/java/lance5057/tDefense/util/MetaItem.java +++ b/src/main/java/lance5057/tDefense/util/MetaItem.java @@ -1,7 +1,5 @@ package lance5057.tDefense.util; -import java.util.List; - import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/main/java/lance5057/tDefense/util/ModuleBase.java b/src/main/java/lance5057/tDefense/util/ModuleBase.java index f03ef9c..b17d76a 100644 --- a/src/main/java/lance5057/tDefense/util/ModuleBase.java +++ b/src/main/java/lance5057/tDefense/util/ModuleBase.java @@ -1,7 +1,5 @@ package lance5057.tDefense.util; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; diff --git a/src/main/java/lance5057/tDefense/util/RegEvents.java b/src/main/java/lance5057/tDefense/util/RegEvents.java index 9d40e1c..35df69e 100644 --- a/src/main/java/lance5057/tDefense/util/RegEvents.java +++ b/src/main/java/lance5057/tDefense/util/RegEvents.java @@ -1,13 +1,5 @@ package lance5057.tDefense.util; -import lance5057.tDefense.Reference; -import lance5057.tDefense.TinkersDefense; -import net.minecraft.item.Item; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; - - public class RegEvents { } diff --git a/src/main/java/lance5057/tDefense/util/TDMatHelper.java b/src/main/java/lance5057/tDefense/util/TDMatHelper.java index ca44320..2a42541 100644 --- a/src/main/java/lance5057/tDefense/util/TDMatHelper.java +++ b/src/main/java/lance5057/tDefense/util/TDMatHelper.java @@ -2,10 +2,10 @@ package lance5057.tDefense.util; import javax.annotation.Nullable; -import lance5057.tDefense.core.materials.BootsMaterialStats; -import lance5057.tDefense.core.materials.ChestMaterialStats; -import lance5057.tDefense.core.materials.HelmMaterialStats; -import lance5057.tDefense.core.materials.LegsMaterialStats; +import lance5057.tDefense.core.materials.ArmorMaterialStats.ChestMaterialStats; +import lance5057.tDefense.core.materials.ArmorMaterialStats.FeetMaterialStats; +import lance5057.tDefense.core.materials.ArmorMaterialStats.HelmMaterialStats; +import lance5057.tDefense.core.materials.ArmorMaterialStats.LegsMaterialStats; import lance5057.tDefense.core.materials.ShieldMaterialStats; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -37,7 +37,7 @@ public class TDMatHelper public HelmMaterialStats helm; public ChestMaterialStats chest; public LegsMaterialStats legs; - public BootsMaterialStats boots; + public FeetMaterialStats boots; public ItemStack gem; public ItemStack ingot; @@ -151,7 +151,7 @@ public class TDMatHelper return this; } - public TDMatHelper setBoots(BootsMaterialStats h) + public TDMatHelper setBoots(FeetMaterialStats h) { boots = h; return this; |
