summaryrefslogtreecommitdiff
path: root/src/main/java/lance5057/tDefense/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/lance5057/tDefense/util')
-rw-r--r--src/main/java/lance5057/tDefense/util/ArmorNBT.java144
-rw-r--r--src/main/java/lance5057/tDefense/util/BlocksBase.java3
-rw-r--r--src/main/java/lance5057/tDefense/util/ItemsBase.java2
-rw-r--r--src/main/java/lance5057/tDefense/util/MetaItem.java2
-rw-r--r--src/main/java/lance5057/tDefense/util/ModuleBase.java2
-rw-r--r--src/main/java/lance5057/tDefense/util/RegEvents.java8
-rw-r--r--src/main/java/lance5057/tDefense/util/TDMatHelper.java12
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;