summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLance5057 <lance5057@gmail.com>2018-04-05 15:58:33 -0500
committerLance5057 <lance5057@gmail.com>2018-04-05 15:58:33 -0500
commita12793585fc5c4c076cb499b43f0420b8a1f63fe (patch)
tree91be14a540e2ceaaa3f919fec52e6d1dcfee1dfd
parent2a994c103b1242e7416c4b668f777a6ca1873006 (diff)
Armor renderering rewrite started
-rw-r--r--src/main/java/lance5057/tDefense/TinkersDefense.java18
-rw-r--r--src/main/java/lance5057/tDefense/armor/events/ArmorRenderEvent.java8
-rw-r--r--src/main/java/lance5057/tDefense/core/events/ArmorRenderEvent.java100
-rw-r--r--src/main/java/lance5057/tDefense/core/events/TDEvents.java17
-rw-r--r--src/main/java/lance5057/tDefense/core/materials/TDMaterials.java11
-rw-r--r--src/main/java/lance5057/tDefense/core/materials/TDTraits.java48
-rw-r--r--src/main/java/lance5057/tDefense/core/materials/traits/AbstractTDTrait.java27
-rw-r--r--src/main/java/lance5057/tDefense/core/materials/traits/ITDTrait.java12
-rw-r--r--src/main/java/lance5057/tDefense/core/materials/traits/TraitMagnetism.java5
-rw-r--r--src/main/java/lance5057/tDefense/core/materials/traits/armor/TraitDamageSourceAlteration.java40
-rw-r--r--src/main/java/lance5057/tDefense/core/materials/traits/armor/TraitPhotosynthetic.java34
-rw-r--r--src/main/java/lance5057/tDefense/core/materials/traits/armor/TraitReduceKnockback.java72
-rw-r--r--src/main/java/lance5057/tDefense/core/materials/traits/armor/TraitStoned.java45
-rw-r--r--src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitAxeLover.java (renamed from src/main/java/lance5057/tDefense/core/materials/traits/TraitAxeLover.java)2
-rw-r--r--src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitBarbed.java (renamed from src/main/java/lance5057/tDefense/core/materials/traits/TraitBarbed.java)2
-rw-r--r--src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitDogToy.java (renamed from src/main/java/lance5057/tDefense/core/materials/traits/TraitDogToy.java)2
-rw-r--r--src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitDulling.java (renamed from src/main/java/lance5057/tDefense/core/materials/traits/TraitDulling.java)2
-rw-r--r--src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitFirestarter.java (renamed from src/main/java/lance5057/tDefense/core/materials/traits/TraitFirestarter.java)2
-rw-r--r--src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitMagnetism.java5
-rw-r--r--src/main/java/lance5057/tDefense/core/tools/TDToolEvents.java110
-rw-r--r--src/main/java/lance5057/tDefense/core/tools/TDTools.java21
-rw-r--r--src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersHood.java12
-rw-r--r--src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersRobe.java12
-rw-r--r--src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersShawl.java12
-rw-r--r--src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersShoes.java12
-rw-r--r--src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersBreastplate.java12
-rw-r--r--src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersGrieves.java12
-rw-r--r--src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersHelm.java12
-rw-r--r--src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersSabatons.java12
-rw-r--r--src/main/java/lance5057/tDefense/core/tools/armor/light/TinkersBoots.java12
-rw-r--r--src/main/java/lance5057/tDefense/core/tools/armor/straps/ItemStraps.java2
-rw-r--r--src/main/java/lance5057/tDefense/core/tools/bases/ArmorCore.java16
-rw-r--r--src/main/java/lance5057/tDefense/proxy/ClientProxy.java9
33 files changed, 649 insertions, 69 deletions
diff --git a/src/main/java/lance5057/tDefense/TinkersDefense.java b/src/main/java/lance5057/tDefense/TinkersDefense.java
index fee4e43..e39b439 100644
--- a/src/main/java/lance5057/tDefense/TinkersDefense.java
+++ b/src/main/java/lance5057/tDefense/TinkersDefense.java
@@ -1,11 +1,12 @@
package lance5057.tDefense;
+import lance5057.tDefense.core.events.TDEvents;
import lance5057.tDefense.core.materials.TDMaterials;
+import lance5057.tDefense.core.materials.TDTraits;
import lance5057.tDefense.core.parts.TDParts;
import lance5057.tDefense.core.tools.TDTools;
import lance5057.tDefense.holiday.HolidayBase;
import lance5057.tDefense.proxy.CommonProxy;
-import lance5057.tDefense.util.RegEvents;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.Mod;
@@ -42,14 +43,14 @@ public class TinkersDefense {
public static final SimpleNetworkWrapper INSTANCE = NetworkRegistry.INSTANCE
.newSimpleChannel(Reference.MOD_ID);
-
- public static RegEvents reg;
public static Modifiers mods;
public static TDParts parts;
public static TDTools tools;
public static TDMaterials mats;
+ public static TDTraits traits;
+ public static TDEvents events;
@SidedProxy(clientSide = "lance5057.tDefense.proxy.ClientProxy", serverSide = "lance5057.tDefense.proxy.CommonProxy")
public static CommonProxy proxy;
@@ -57,13 +58,15 @@ public class TinkersDefense {
@Mod.EventHandler
public void preInit(FMLPreInitializationEvent e) {
- NetworkRegistry.INSTANCE.registerGuiHandler(TinkersDefense.instance, new CommonProxy());
+
holiday = new HolidayBase();
mats = new TDMaterials();
parts = new TDParts();
tools = new TDTools();
+ events = new TDEvents();
+ traits = new TDTraits();
config = new TD_Config();
//core.preInit(e);
@@ -71,6 +74,8 @@ public class TinkersDefense {
mats.preInit(e);
parts.preInit(e);
tools.preInit(e);
+ traits.preInit();
+ events.preInit();
proxy.preInit();
}
@@ -78,11 +83,14 @@ public class TinkersDefense {
@Mod.EventHandler
public void init(FMLInitializationEvent e) {
+ NetworkRegistry.INSTANCE.registerGuiHandler(this, proxy);
//core.init(e);
holiday.init(e);
mats.init(e);
parts.init(e);
tools.init(e);
+ traits.init();
+ events.init();
proxy.init();
phandler.init();
@@ -95,6 +103,8 @@ public class TinkersDefense {
mats.postInit(e);
parts.postInit(e);
tools.postInit(e);
+ traits.postInit();
+ events.postInit();
proxy.postInit();
}
diff --git a/src/main/java/lance5057/tDefense/armor/events/ArmorRenderEvent.java b/src/main/java/lance5057/tDefense/armor/events/ArmorRenderEvent.java
index b19bdfa..6499185 100644
--- a/src/main/java/lance5057/tDefense/armor/events/ArmorRenderEvent.java
+++ b/src/main/java/lance5057/tDefense/armor/events/ArmorRenderEvent.java
@@ -10,17 +10,15 @@
//import net.minecraftforge.fml.relauncher.Side;
//import net.minecraftforge.fml.relauncher.SideOnly;
//import slimeknights.tconstruct.library.tools.ToolCore;
-//import tconstruct.armor.ArmorProxyClient;
-//import tconstruct.armor.player.ArmorExtended;
//
//public class ArmorRenderEvent
//{
//
// @SideOnly(Side.CLIENT)
// @SubscribeEvent
-// public void renderArmorEvent(RenderPlayerEvent.SetArmorModel event)
+// public void renderArmorEvent(RenderPlayerEvent.Post event)
// {
-// if(event.entityPlayer != null)
+// if(event.getEntityPlayer() != null)
// {
// final ArmorExtended armorEx = ArmorProxyClient.armorExtended;
//
@@ -82,7 +80,7 @@
// }
// }
//
-// final float yaw = event.entityPlayer.prevRotationYawHead + (event.entityPlayer.rotationYawHead - event.entityPlayer.prevRotationYawHead) * event.partialRenderTick;
+// final float yaw = event.getEntityPlayer().prevRotationYawHead + (event.entityPlayer.rotationYawHead - event.entityPlayer.prevRotationYawHead) * event.partialRenderTick;
// final float yawOffset = event.entityPlayer.prevRenderYawOffset + (event.entityPlayer.renderYawOffset - event.entityPlayer.prevRenderYawOffset) * event.partialRenderTick;
// final float limbs = event.entityPlayer.prevLimbSwingAmount + (event.entityPlayer.limbSwingAmount - event.entityPlayer.prevLimbSwingAmount) * event.partialRenderTick;
// final float limbSwing = event.entityPlayer.limbSwing - event.entityPlayer.limbSwingAmount * (1.0F - event.partialRenderTick);
diff --git a/src/main/java/lance5057/tDefense/core/events/ArmorRenderEvent.java b/src/main/java/lance5057/tDefense/core/events/ArmorRenderEvent.java
new file mode 100644
index 0000000..f746a82
--- /dev/null
+++ b/src/main/java/lance5057/tDefense/core/events/ArmorRenderEvent.java
@@ -0,0 +1,100 @@
+package lance5057.tDefense.core.events;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.model.ModelBiped;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.EnumAction;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.util.EnumHand;
+import net.minecraft.util.ResourceLocation;
+import net.minecraftforge.client.event.RenderPlayerEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
+import slimeknights.tconstruct.library.utils.TagUtil;
+
+public class ArmorRenderEvent {
+
+ @SideOnly(Side.CLIENT)
+ @SubscribeEvent
+ public static void renderArmorEvent(RenderPlayerEvent.Post event) {
+ Iterable<ItemStack> armor = event.getEntityPlayer().getArmorInventoryList();
+ for (ItemStack i : armor)
+ renderArmor(i);
+ }
+
+ private static void renderArmor(ItemStack stack) {
+ NBTTagList list = TagUtil.getBaseMaterialsTagList(stack);
+ Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation(""));
+ }
+
+ private void TrimArmor(ModelBiped armorModel, RenderPlayerEvent.Post event) {
+ if (armorModel != null) {
+ armorModel.isSneak = event.getEntityPlayer().isSneaking();
+ armorModel.isRiding = event.getEntityPlayer().isRiding();
+ armorModel.isChild = event.getEntityPlayer().isChild();
+
+ armorModel.swingProgress = event.getEntityPlayer().getSwingProgress(event.getPartialRenderTick());
+
+ if (event.getEntityPlayer() instanceof EntityPlayer) {
+ final ItemStack itemstack = event.getEntityPlayer().getHeldItem(EnumHand.MAIN_HAND);
+ final ItemStack itemstackoff = event.getEntityPlayer().getHeldItem(EnumHand.OFF_HAND);
+ // armorModel.heldItemRight = 0;
+ // armorModel.aimedBow = false;
+ if (itemstack != null) // main hand
+ {
+ if (event.getEntityPlayer().getItemInUseCount() > 0) {
+ final EnumAction enumaction = itemstack.getItemUseAction();
+
+ if (enumaction == EnumAction.BLOCK) {
+ armorModel.rightArmPose = ModelBiped.ArmPose.BLOCK;
+ } else if (enumaction == EnumAction.BOW) {
+
+ armorModel.rightArmPose = ModelBiped.ArmPose.BOW_AND_ARROW;
+ }
+ } else {
+ armorModel.rightArmPose = event.getEntityPlayer().getHeldItem(EnumHand.MAIN_HAND) != null
+ ? ModelBiped.ArmPose.ITEM
+ : ModelBiped.ArmPose.EMPTY;
+ }
+ }
+
+ if (itemstack != null) // off hand
+ {
+ if (event.getEntityPlayer().getItemInUseCount() > 0) {
+ final EnumAction enumaction = itemstack.getItemUseAction();
+
+ if (enumaction == EnumAction.BLOCK) {
+ armorModel.leftArmPose = ModelBiped.ArmPose.BLOCK;
+ } else if (enumaction == EnumAction.BOW) {
+
+ armorModel.leftArmPose = ModelBiped.ArmPose.BOW_AND_ARROW;
+ }
+ } else {
+ armorModel.leftArmPose = event.getEntityPlayer().getHeldItem(EnumHand.OFF_HAND) != null
+ ? ModelBiped.ArmPose.ITEM
+ : ModelBiped.ArmPose.EMPTY;
+ }
+ }
+ }
+
+ final float yaw = event.getEntityPlayer().prevRotationYawHead
+ + (event.getEntityPlayer().rotationYawHead - event.getEntityPlayer().prevRotationYawHead)
+ * event.getPartialRenderTick();
+ final float yawOffset = event.getEntityPlayer().prevRenderYawOffset
+ + (event.getEntityPlayer().renderYawOffset - event.getEntityPlayer().prevRenderYawOffset)
+ * event.getPartialRenderTick();
+ final float limbs = event.getEntityPlayer().prevLimbSwingAmount
+ + (event.getEntityPlayer().limbSwingAmount - event.getEntityPlayer().prevLimbSwingAmount)
+ * event.getPartialRenderTick();
+ final float limbSwing = event.getEntityPlayer().limbSwing
+ - event.getEntityPlayer().limbSwingAmount * (1.0F - event.getPartialRenderTick());
+
+ armorModel.setRotationAngles(limbSwing, limbs, event.getEntityPlayer().ticksExisted, yaw - yawOffset,
+ event.getEntityPlayer().rotationPitch, 0.1f, event.getEntityPlayer());
+ armorModel.render(event.getEntityPlayer(), limbSwing, limbs, event.getEntityPlayer().ticksExisted,
+ yaw - yawOffset, event.getEntityPlayer().rotationPitch, 0.1f);
+ }
+ }
+}
diff --git a/src/main/java/lance5057/tDefense/core/events/TDEvents.java b/src/main/java/lance5057/tDefense/core/events/TDEvents.java
new file mode 100644
index 0000000..e12e1e6
--- /dev/null
+++ b/src/main/java/lance5057/tDefense/core/events/TDEvents.java
@@ -0,0 +1,17 @@
+package lance5057.tDefense.core.events;
+
+import net.minecraftforge.common.MinecraftForge;
+
+public class TDEvents {
+ public void preInit() {
+ MinecraftForge.EVENT_BUS.register(ArmorRenderEvent.class);
+ }
+
+ public void init() {
+
+ }
+
+ public void postInit() {
+
+ }
+}
diff --git a/src/main/java/lance5057/tDefense/core/materials/TDMaterials.java b/src/main/java/lance5057/tDefense/core/materials/TDMaterials.java
index c444cba..9652aa8 100644
--- a/src/main/java/lance5057/tDefense/core/materials/TDMaterials.java
+++ b/src/main/java/lance5057/tDefense/core/materials/TDMaterials.java
@@ -429,8 +429,7 @@ public class TDMaterials {
TinkerRegistry.addMaterialStats(TinkerMaterials.stone, ams.new ChestMaterialStats(120, 4, 0, 0));
TinkerRegistry.addMaterialStats(TinkerMaterials.stone, ams.new LegsMaterialStats(120, 3, 0, 0));
TinkerRegistry.addMaterialStats(TinkerMaterials.stone, ams.new FeetMaterialStats(120, 2, 0, 0));
- // TinkerRegistry.addMaterialTrait(TinkerMaterials.stone, dulling,
- // SHIELD);
+ //TinkerRegistry.addMaterialTrait(TinkerMaterials.stone, dulling, SHIELD);
// TinkerMaterials.stone.addTrait(dulling, SHIELD);
TinkerRegistry.addMaterialStats(TinkerMaterials.flint, new ShieldMaterialStats(150, 30));
@@ -709,16 +708,16 @@ public class TDMaterials {
if (tdm.shield != null)
TinkerRegistry.addMaterialStats(m, tdm.shield);
-
+
if (tdm.helm != null)
TinkerRegistry.addMaterialStats(m, tdm.helm);
-
+
if (tdm.chest != null)
TinkerRegistry.addMaterialStats(m, tdm.chest);
-
+
if (tdm.legs != null)
TinkerRegistry.addMaterialStats(m, tdm.legs);
-
+
if (tdm.boots != null)
TinkerRegistry.addMaterialStats(m, tdm.boots);
}
diff --git a/src/main/java/lance5057/tDefense/core/materials/TDTraits.java b/src/main/java/lance5057/tDefense/core/materials/TDTraits.java
new file mode 100644
index 0000000..1ed655c
--- /dev/null
+++ b/src/main/java/lance5057/tDefense/core/materials/TDTraits.java
@@ -0,0 +1,48 @@
+package lance5057.tDefense.core.materials;
+
+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.traits.armor.TraitDamageSourceAlteration;
+import lance5057.tDefense.core.materials.traits.armor.TraitPhotosynthetic;
+import lance5057.tDefense.core.materials.traits.armor.TraitReduceKnockback;
+import lance5057.tDefense.core.materials.traits.armor.TraitStoned;
+import net.minecraft.init.Blocks;
+import net.minecraft.util.DamageSource;
+import slimeknights.tconstruct.tools.TinkerMaterials;
+
+public class TDTraits {
+
+ public TraitPhotosynthetic photosynth = new TraitPhotosynthetic(1);
+ public TraitPhotosynthetic photosynth2 = new TraitPhotosynthetic(2);
+ public TraitReduceKnockback rooted = new TraitReduceKnockback("rooted", 0x875e21, 0.5f, Blocks.DIRT.getDefaultState(), Blocks.GRASS.getDefaultState());
+
+ public TraitDamageSourceAlteration blockhead = new TraitDamageSourceAlteration("blockhead", 0x875e21,
+ new TraitDamageSourceAlteration.DamagePercent(DamageSource.GENERIC, -0.5f),
+ new TraitDamageSourceAlteration.DamagePercent(DamageSource.MAGIC, 0.5f));
+ public TraitStoned stoned = new TraitStoned();
+
+ public void preInit() {
+
+ //TinkerRegistry.addMaterialTrait(TinkerMaterials.wood, rooted, FeetMaterialStats.TYPE);
+ }
+
+ public void init() {
+ //TinkerRegistry.addMaterialTrait(TinkerMaterials.wood, photosynth2, HelmMaterialStats.TYPE);
+ //TinkerRegistry.addMaterialTrait(TinkerMaterials.wood, photosynth, ChestMaterialStats.TYPE);
+ //TinkerRegistry.addMaterialTrait(TinkerMaterials.wood, rooted, LegsMaterialStats.TYPE);
+
+ TinkerMaterials.wood.addTrait(photosynth2, HelmMaterialStats.TYPE);
+ TinkerMaterials.wood.addTrait(photosynth, ChestMaterialStats.TYPE);
+ TinkerMaterials.wood.addTrait(rooted, LegsMaterialStats.TYPE);
+ TinkerMaterials.wood.addTrait(rooted, FeetMaterialStats.TYPE);
+
+ TinkerMaterials.stone.addTrait(blockhead, HelmMaterialStats.TYPE);
+ TinkerMaterials.stone.addTrait(stoned, ChestMaterialStats.TYPE);
+ }
+
+ public void postInit() {
+
+ }
+}
diff --git a/src/main/java/lance5057/tDefense/core/materials/traits/AbstractTDTrait.java b/src/main/java/lance5057/tDefense/core/materials/traits/AbstractTDTrait.java
new file mode 100644
index 0000000..f0c2463
--- /dev/null
+++ b/src/main/java/lance5057/tDefense/core/materials/traits/AbstractTDTrait.java
@@ -0,0 +1,27 @@
+package lance5057.tDefense.core.materials.traits;
+
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.util.text.TextFormatting;
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+import slimeknights.tconstruct.library.traits.AbstractTrait;
+
+public abstract class AbstractTDTrait extends AbstractTrait {
+ public AbstractTDTrait(String identifier, TextFormatting color) {
+ super(identifier, color);
+ }
+
+ public AbstractTDTrait(String identifier, int color) {
+ super(identifier, color);
+ }
+
+ public void onArmorEquip(EntityPlayer e) {
+
+ }
+
+ public void onArmorUnequip(EntityPlayer e) {
+
+ }
+
+ public void onDamageTaken(LivingHurtEvent e) {
+ }
+}
diff --git a/src/main/java/lance5057/tDefense/core/materials/traits/ITDTrait.java b/src/main/java/lance5057/tDefense/core/materials/traits/ITDTrait.java
new file mode 100644
index 0000000..ee5441a
--- /dev/null
+++ b/src/main/java/lance5057/tDefense/core/materials/traits/ITDTrait.java
@@ -0,0 +1,12 @@
+package lance5057.tDefense.core.materials.traits;
+
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+import slimeknights.tconstruct.library.traits.ITrait;
+
+public interface ITDTrait extends ITrait {
+
+ /*
+ * Called when player takes damage while wearing TD armor
+ */
+ void onDamageTaken(LivingHurtEvent e);
+}
diff --git a/src/main/java/lance5057/tDefense/core/materials/traits/TraitMagnetism.java b/src/main/java/lance5057/tDefense/core/materials/traits/TraitMagnetism.java
deleted file mode 100644
index 6ad2bb7..0000000
--- a/src/main/java/lance5057/tDefense/core/materials/traits/TraitMagnetism.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package lance5057.tDefense.core.materials.traits;
-
-public class TraitMagnetism {
-
-}
diff --git a/src/main/java/lance5057/tDefense/core/materials/traits/armor/TraitDamageSourceAlteration.java b/src/main/java/lance5057/tDefense/core/materials/traits/armor/TraitDamageSourceAlteration.java
new file mode 100644
index 0000000..e40fdff
--- /dev/null
+++ b/src/main/java/lance5057/tDefense/core/materials/traits/armor/TraitDamageSourceAlteration.java
@@ -0,0 +1,40 @@
+package lance5057.tDefense.core.materials.traits.armor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import lance5057.tDefense.core.materials.traits.AbstractTDTrait;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.DamageSource;
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+import scala.actors.threadpool.Arrays;
+import slimeknights.tconstruct.library.traits.AbstractTrait;
+
+public class TraitDamageSourceAlteration extends AbstractTDTrait {
+ List<DamagePercent> damageTypes = new ArrayList<DamagePercent>();
+
+ public TraitDamageSourceAlteration(String name, int icolor, DamagePercent... itypes) {
+ super(name, icolor);
+ damageTypes.addAll(Arrays.asList(itypes));
+ }
+
+ @Override
+ public void onDamageTaken(LivingHurtEvent e) {
+
+ }
+
+ public static class DamagePercent
+ {
+ public DamageSource type;
+ public float percent;
+
+ public DamagePercent(DamageSource d, float p)
+ {
+ type = d;
+ percent = p;
+ }
+ }
+}
diff --git a/src/main/java/lance5057/tDefense/core/materials/traits/armor/TraitPhotosynthetic.java b/src/main/java/lance5057/tDefense/core/materials/traits/armor/TraitPhotosynthetic.java
new file mode 100644
index 0000000..98310a0
--- /dev/null
+++ b/src/main/java/lance5057/tDefense/core/materials/traits/armor/TraitPhotosynthetic.java
@@ -0,0 +1,34 @@
+package lance5057.tDefense.core.materials.traits.armor;
+
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.text.TextFormatting;
+import net.minecraft.world.World;
+import slimeknights.tconstruct.library.modifiers.ModifierNBT;
+import slimeknights.tconstruct.library.traits.AbstractTrait;
+import slimeknights.tconstruct.library.traits.AbstractTraitLeveled;
+import slimeknights.tconstruct.library.utils.TinkerUtil;
+
+public class TraitPhotosynthetic extends AbstractTraitLeveled {
+
+ public TraitPhotosynthetic(int level) {
+ super("photosynthetic", 0x875e21, 2, level);
+ }
+
+ @Override
+ public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) {
+ if(!world.isRemote && entity instanceof EntityPlayer && random.nextInt(100) == 0) {
+
+ EntityPlayer e = (EntityPlayer) entity;
+ ModifierNBT data = new ModifierNBT(TinkerUtil.getModifierTag(tool, name));
+
+ if(world.canBlockSeeSky(new BlockPos(e)))
+ e.getFoodStats().setFoodSaturationLevel(e.getFoodStats().getSaturationLevel() + (data.level * 0.5f));
+ if(world.isRainingAt(new BlockPos(e)))
+ e.getFoodStats().setFoodSaturationLevel(e.getFoodStats().getSaturationLevel() + (data.level * 0.5f));
+ }
+ }
+}
diff --git a/src/main/java/lance5057/tDefense/core/materials/traits/armor/TraitReduceKnockback.java b/src/main/java/lance5057/tDefense/core/materials/traits/armor/TraitReduceKnockback.java
new file mode 100644
index 0000000..f20b4fc
--- /dev/null
+++ b/src/main/java/lance5057/tDefense/core/materials/traits/armor/TraitReduceKnockback.java
@@ -0,0 +1,72 @@
+package lance5057.tDefense.core.materials.traits.armor;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import lance5057.tDefense.core.materials.traits.AbstractTDTrait;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.SharedMonsterAttributes;
+import net.minecraft.entity.ai.attributes.AttributeModifier;
+import net.minecraft.entity.ai.attributes.IAttributeInstance;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+import scala.actors.threadpool.Arrays;
+import slimeknights.tconstruct.library.traits.AbstractTrait;
+
+public class TraitReduceKnockback extends AbstractTrait {
+
+ AttributeModifier knockback = new AttributeModifier(UUID.randomUUID(), "td_knockback", 0.5f, 0);
+
+ List<IBlockState> blocks = new ArrayList<IBlockState>();
+ float percentReduced;
+
+ public TraitReduceKnockback(String name, int icolor, float percentReduced, IBlockState... iblocks) {
+ super(name, icolor);
+ blocks.addAll(Arrays.asList(iblocks));
+ }
+
+// @Override
+// public float knockBack(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage,
+// float knockback, float newKnockback, boolean isCritical) {
+// if (blocks.isEmpty() || checkBlock(player))
+// return knockback / percentReduced;
+// return knockback;
+// }
+
+ public void onArmorUnequip(EntityPlayer e) {
+ IAttributeInstance att = e.getEntityAttribute(SharedMonsterAttributes.KNOCKBACK_RESISTANCE);
+ if(att.hasModifier(knockback))
+ {
+ att.removeModifier(knockback);
+ }
+ }
+
+ @Override
+ public void onArmorTick(ItemStack tool, World world, EntityPlayer player) {
+ IAttributeInstance att = player.getEntityAttribute(SharedMonsterAttributes.KNOCKBACK_RESISTANCE);
+ boolean block = checkBlock(player);
+ if(!att.hasModifier(knockback))
+ {
+ if(block)
+ att.applyModifier(knockback);
+ }
+ else
+ {
+ if(!block)
+ att.removeModifier(knockback);
+ }
+ }
+
+ private boolean checkBlock(EntityLivingBase e) {
+ IBlockState b = e.world.getBlockState(new BlockPos(e.posX, e.posY - 1, e.posZ));
+ for (IBlockState bl : blocks) {
+ if (bl.equals(b))
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/src/main/java/lance5057/tDefense/core/materials/traits/armor/TraitStoned.java b/src/main/java/lance5057/tDefense/core/materials/traits/armor/TraitStoned.java
new file mode 100644
index 0000000..9e55daa
--- /dev/null
+++ b/src/main/java/lance5057/tDefense/core/materials/traits/armor/TraitStoned.java
@@ -0,0 +1,45 @@
+package lance5057.tDefense.core.materials.traits.armor;
+
+import java.util.UUID;
+
+import lance5057.tDefense.core.materials.traits.AbstractTDTrait;
+import net.minecraft.entity.SharedMonsterAttributes;
+import net.minecraft.entity.ai.attributes.AttributeModifier;
+import net.minecraft.entity.ai.attributes.IAttributeInstance;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.text.TextFormatting;
+import net.minecraft.world.World;
+
+public class TraitStoned extends AbstractTDTrait {
+
+ AttributeModifier speed = new AttributeModifier(UUID.randomUUID(), "td_speed", -0.01f, 0);
+
+ public TraitStoned() {
+ super("stoned", TextFormatting.DARK_GRAY);
+ }
+
+ @Override
+ public void onArmorEquip(EntityPlayer e) {
+ IAttributeInstance att = e.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED);
+ if (!att.hasModifier(speed)) {
+ att.applyModifier(speed);
+ }
+ }
+
+ @Override
+ public void onArmorUnequip(EntityPlayer e) {
+ IAttributeInstance att = e.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED);
+ if (att.hasModifier(speed)) {
+ att.removeModifier(speed);
+ }
+ }
+
+ @Override
+ public void onArmorTick(ItemStack tool, World world, EntityPlayer player) {
+ if(player.isInWater())
+ {
+ player.motionY += -0.005f;
+ }
+ }
+}
diff --git a/src/main/java/lance5057/tDefense/core/materials/traits/TraitAxeLover.java b/src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitAxeLover.java
index 1bc3c31..1f57e80 100644
--- a/src/main/java/lance5057/tDefense/core/materials/traits/TraitAxeLover.java
+++ b/src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitAxeLover.java
@@ -1,4 +1,4 @@
-package lance5057.tDefense.core.materials.traits;
+package lance5057.tDefense.core.materials.traits.shields;
import java.util.Optional;
diff --git a/src/main/java/lance5057/tDefense/core/materials/traits/TraitBarbed.java b/src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitBarbed.java
index 9e82775..bcdfd19 100644
--- a/src/main/java/lance5057/tDefense/core/materials/traits/TraitBarbed.java
+++ b/src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitBarbed.java
@@ -1,4 +1,4 @@
-package lance5057.tDefense.core.materials.traits;
+package lance5057.tDefense.core.materials.traits.shields;
import java.util.Optional;
diff --git a/src/main/java/lance5057/tDefense/core/materials/traits/TraitDogToy.java b/src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitDogToy.java
index 8cad49c..6dd14d8 100644
--- a/src/main/java/lance5057/tDefense/core/materials/traits/TraitDogToy.java
+++ b/src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitDogToy.java
@@ -1,4 +1,4 @@
-package lance5057.tDefense.core.materials.traits;
+package lance5057.tDefense.core.materials.traits.shields;
import java.util.Optional;
diff --git a/src/main/java/lance5057/tDefense/core/materials/traits/TraitDulling.java b/src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitDulling.java
index badd802..3a6b43b 100644
--- a/src/main/java/lance5057/tDefense/core/materials/traits/TraitDulling.java
+++ b/src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitDulling.java
@@ -1,4 +1,4 @@
-package lance5057.tDefense.core.materials.traits;
+package lance5057.tDefense.core.materials.traits.shields;
import java.util.Optional;
diff --git a/src/main/java/lance5057/tDefense/core/materials/traits/TraitFirestarter.java b/src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitFirestarter.java
index ba30a9b..310b07e 100644
--- a/src/main/java/lance5057/tDefense/core/materials/traits/TraitFirestarter.java
+++ b/src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitFirestarter.java
@@ -1,4 +1,4 @@
-package lance5057.tDefense.core.materials.traits;
+package lance5057.tDefense.core.materials.traits.shields;
import java.util.Optional;
diff --git a/src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitMagnetism.java b/src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitMagnetism.java
new file mode 100644
index 0000000..af878a0
--- /dev/null
+++ b/src/main/java/lance5057/tDefense/core/materials/traits/shields/TraitMagnetism.java
@@ -0,0 +1,5 @@
+package lance5057.tDefense.core.materials.traits.shields;
+
+public class TraitMagnetism {
+
+}
diff --git a/src/main/java/lance5057/tDefense/core/tools/TDToolEvents.java b/src/main/java/lance5057/tDefense/core/tools/TDToolEvents.java
index c677926..cbecb12 100644
--- a/src/main/java/lance5057/tDefense/core/tools/TDToolEvents.java
+++ b/src/main/java/lance5057/tDefense/core/tools/TDToolEvents.java
@@ -1,15 +1,29 @@
package lance5057.tDefense.core.tools;
+import lance5057.tDefense.core.materials.traits.AbstractTDTrait;
+import lance5057.tDefense.core.materials.traits.ITDTrait;
import lance5057.tDefense.core.tools.bases.Shield;
import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagList;
import net.minecraftforge.event.entity.living.LivingHurtEvent;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+import slimeknights.tconstruct.library.TinkerRegistry;
+import slimeknights.tconstruct.library.tools.ToolCore;
+import slimeknights.tconstruct.library.traits.ITrait;
+import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.ToolHelper;
public class TDToolEvents {
+ ItemStack prevHead = new ItemStack(Items.AIR);
+ ItemStack prevChest = new ItemStack(Items.AIR);
+ ItemStack prevLegs = new ItemStack(Items.AIR);
+ ItemStack prevFeet = new ItemStack(Items.AIR);
+
public TDToolEvents() {
}
@@ -17,22 +31,19 @@ public class TDToolEvents {
@SubscribeEvent(priority = EventPriority.LOW)
// lower priority so we get called later since we change tool NBT
public void reducedDamageBlocked(LivingHurtEvent event) {
- if (event.getSource().isUnblockable()
- || event.getSource().isMagicDamage()
- || event.getSource().isExplosion() || event.isCanceled()) {
+ if (event.getSource().isUnblockable() || event.getSource().isMagicDamage() || event.getSource().isExplosion()
+ || event.isCanceled()) {
return;
}
if (event.getEntityLiving() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.getEntityLiving();
- if (player.getActiveItemStack() != null
- && player.getActiveItemStack().getItem() != null
+ if (player.getActiveItemStack() != null && player.getActiveItemStack().getItem() != null
&& player.getActiveItemStack().getItem() instanceof Shield
&& !ToolHelper.isBroken(player.getActiveItemStack())) {
ItemStack shield = player.getActiveItemStack();
- int damage = event.getAmount() < 2f ? 1 : Math.round(event
- .getAmount() / 2f);
+ int damage = event.getAmount() < 2f ? 1 : Math.round(event.getAmount() / 2f);
event.setAmount(event.getAmount() * 0.7f);
if (event.getSource().isProjectile()) {
@@ -44,6 +55,91 @@ public class TDToolEvents {
}
}
+ @SubscribeEvent
+ public void ArmorTick(TickEvent.PlayerTickEvent event) {
+ prevFeet = armorChanged(event, prevFeet, event.player.inventory.armorInventory.get(0));
+ prevLegs = armorChanged(event, prevLegs, event.player.inventory.armorInventory.get(1));
+ prevChest = armorChanged(event, prevChest, event.player.inventory.armorInventory.get(2));
+ prevHead = armorChanged(event, prevHead, event.player.inventory.armorInventory.get(3));
+
+ onArmorTick(event);
+ }
+
+ ItemStack armorChanged(TickEvent.PlayerTickEvent event, ItemStack prev, ItemStack cur) {
+ if (prev.getItem() != cur.getItem()) {
+ if (prev != null && prev.getItem() instanceof ToolCore && !ToolHelper.isBroken(prev)) {
+ NBTTagList list = TagUtil.getTraitsTagList(prev);
+ for (int i = 0; i < list.tagCount(); i++) {
+ if (TinkerRegistry.getTrait(list.getStringTagAt(i)) instanceof ITrait) {
+ ITrait trait = TinkerRegistry.getTrait(list.getStringTagAt(i));
+ if (trait instanceof AbstractTDTrait) {
+ AbstractTDTrait t = (AbstractTDTrait) trait;
+ if (trait != null) {
+ t.onArmorUnequip(event.player);
+ }
+ }
+ }
+ }
+ }
+
+ if (cur != null && cur.getItem() instanceof ToolCore && !ToolHelper.isBroken(cur)) {
+ NBTTagList list = TagUtil.getTraitsTagList(cur);
+ for (int i = 0; i < list.tagCount(); i++) {
+ if (TinkerRegistry.getTrait(list.getStringTagAt(i)) instanceof ITrait) {
+ ITrait trait = TinkerRegistry.getTrait(list.getStringTagAt(i));
+ if (trait instanceof AbstractTDTrait) {
+ AbstractTDTrait t = (AbstractTDTrait) trait;
+ if (trait != null) {
+ t.onArmorEquip(event.player);
+ }
+ }
+ }
+ }
+ }
+ return cur;
+ }
+
+ return prev;
+ }
+
+ void onArmorTick(TickEvent.PlayerTickEvent event) {
+ for (ItemStack tool : event.player.getArmorInventoryList()) {
+ if (tool != null && tool.getItem() instanceof ToolCore && !ToolHelper.isBroken(tool)) {
+ NBTTagList list = TagUtil.getTraitsTagList(tool);
+ for (int i = 0; i < list.tagCount(); i++) {
+ if (TinkerRegistry.getTrait(list.getStringTagAt(i)) instanceof ITrait) {
+ ITrait trait = TinkerRegistry.getTrait(list.getStringTagAt(i));
+ if (trait != null) {
+ trait.onArmorTick(tool, event.player.world, event.player);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void playerDamagedEvent(LivingHurtEvent event) {
+ if (event.getEntity() == null || !(event.getEntity() instanceof EntityPlayer)) {
+ return;
+ }
+
+ // we allow block traits to affect both main and offhand
+ for (ItemStack tool : event.getEntity().getArmorInventoryList()) {
+ if (tool != null && tool.getItem() instanceof ToolCore && !ToolHelper.isBroken(tool)) {
+ NBTTagList list = TagUtil.getTraitsTagList(tool);
+ for (int i = 0; i < list.tagCount(); i++) {
+ if (TinkerRegistry.getTrait(list.getStringTagAt(i)) instanceof ITDTrait) {
+ ITDTrait trait = (ITDTrait) TinkerRegistry.getTrait(list.getStringTagAt(i));
+ if (trait != null) {
+ trait.onDamageTaken(event);
+ }
+ }
+ }
+ }
+ }
+ }
+
// @SubscribeEvent
// public void attackEvent(LivingAttackEvent e) {
// boolean w = e.getEntity().worldObj.isRemote;
diff --git a/src/main/java/lance5057/tDefense/core/tools/TDTools.java b/src/main/java/lance5057/tDefense/core/tools/TDTools.java
index 0ab7a4d..bfb9091 100644
--- a/src/main/java/lance5057/tDefense/core/tools/TDTools.java
+++ b/src/main/java/lance5057/tDefense/core/tools/TDTools.java
@@ -36,6 +36,7 @@ import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.registries.IForgeRegistry;
import slimeknights.tconstruct.library.TinkerRegistry;
+import slimeknights.tconstruct.library.client.CustomTextureCreator;
import slimeknights.tconstruct.library.tools.ToolCore;
@Mod.EventBusSubscriber(modid = Reference.MOD_ID)
@@ -51,12 +52,6 @@ public class TDTools {
public static ToolCore zweihander;
public static ToolCore shears;
public static ToolCore fishingRod;
-
- //armor
- public static ItemStraps strapsHead;
- public static ItemStraps strapsChest;
- public static ItemStraps strapsLegs;
- public static ItemStraps strapsFeet;
public static ToolCore hood;
public static ToolCore shawl;
@@ -95,15 +90,6 @@ public class TDTools {
// PRE-INITIALIZATION
@Subscribe
public void preInit(FMLPreInitializationEvent event) {
- strapsHead = new ItemStraps(EntityEquipmentSlot.HEAD);
- strapsChest = new ItemStraps(EntityEquipmentSlot.CHEST);
- strapsLegs = new ItemStraps(EntityEquipmentSlot.LEGS);
- strapsFeet = new ItemStraps(EntityEquipmentSlot.FEET);
-
- itemList.add(strapsHead);
- itemList.add(strapsChest);
- itemList.add(strapsLegs);
- itemList.add(strapsFeet);
}
private void regTools() {
@@ -158,6 +144,11 @@ public class TDTools {
regTool(grieves, "grieves", event);
regTool(sabatons, "sabatons", event);
+ CustomTextureCreator.registerTexture(new ResourceLocation("tinkersdefense", "armor/helm/_helm_chain"));
+ CustomTextureCreator.registerTexture(new ResourceLocation("tinkersdefense", "armor/helm/_helm_plate"));
+ CustomTextureCreator.registerTexture(new ResourceLocation("tinkersdefense", "armor/helm/_helm_top"));
+ CustomTextureCreator.registerTexture(new ResourceLocation("tinkersdefense", "armor/helm/_helm_visor"));
+
regTool(sheathe, "sheathe", event);
regTool(ring, "ring", event);
regTool(amulet, "amulet", event);
diff --git a/src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersHood.java b/src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersHood.java
index bd5258e..f891770 100644
--- a/src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersHood.java
+++ b/src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersHood.java
@@ -10,6 +10,8 @@ import lance5057.tDefense.core.tools.bases.ArmorCore;
import lance5057.tDefense.util.ArmorNBT;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
@@ -65,8 +67,9 @@ public class TinkersHood extends ArmorCore {
@SideOnly(Side.CLIENT)
@Override
- public ModelBiped getArmorModel(ItemStack stack) {
- return new ModelTinkersHood(stack);
+ public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack,
+ EntityEquipmentSlot armorSlot, net.minecraft.client.model.ModelBiped _default) {
+ return new ModelTinkersHood(itemStack);
}
@Override
@@ -74,4 +77,9 @@ public class TinkersHood extends ArmorCore {
ArmorNBT data = buildDefaultArmorTag(materials, HelmMaterialStats.TYPE);
return data.get();
}
+
+ @Override
+ public EntityEquipmentSlot getArmorSlot(ItemStack stack, EntityEquipmentSlot armorType) {
+ return EntityEquipmentSlot.HEAD;
+ }
}
diff --git a/src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersRobe.java b/src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersRobe.java
index 806349e..ec85a86 100644
--- a/src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersRobe.java
+++ b/src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersRobe.java
@@ -10,6 +10,8 @@ import lance5057.tDefense.core.tools.bases.ArmorCore;
import lance5057.tDefense.util.ArmorNBT;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
@@ -66,9 +68,10 @@ public class TinkersRobe extends ArmorCore
@SideOnly(Side.CLIENT)
@Override
- public ModelBiped getArmorModel(ItemStack stack)
+ public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack,
+ EntityEquipmentSlot armorSlot, net.minecraft.client.model.ModelBiped _default)
{
- return new ModelTinkersRobe(stack);
+ return new ModelTinkersRobe(itemStack);
}
@Override
@@ -76,4 +79,9 @@ public class TinkersRobe extends ArmorCore
ArmorNBT data = buildDefaultArmorTag(materials, LegsMaterialStats.TYPE);
return data.get();
}
+
+ @Override
+ public EntityEquipmentSlot getArmorSlot(ItemStack stack, EntityEquipmentSlot armorType) {
+ return EntityEquipmentSlot.LEGS;
+ }
}
diff --git a/src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersShawl.java b/src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersShawl.java
index 72d425f..2156515 100644
--- a/src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersShawl.java
+++ b/src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersShawl.java
@@ -10,6 +10,8 @@ import lance5057.tDefense.core.tools.bases.ArmorCore;
import lance5057.tDefense.util.ArmorNBT;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
@@ -71,9 +73,10 @@ public class TinkersShawl extends ArmorCore
@SideOnly(Side.CLIENT)
@Override
- public ModelBiped getArmorModel(ItemStack stack)
+ public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack,
+ EntityEquipmentSlot armorSlot, net.minecraft.client.model.ModelBiped _default)
{
- return new ModelTinkersShawl(stack);
+ return new ModelTinkersShawl(itemStack);
}
@Override
@@ -81,4 +84,9 @@ public class TinkersShawl extends ArmorCore
ArmorNBT data = buildDefaultArmorTag(materials, ChestMaterialStats.TYPE);
return data.get();
}
+
+ @Override
+ public EntityEquipmentSlot getArmorSlot(ItemStack stack, EntityEquipmentSlot armorType) {
+ return EntityEquipmentSlot.CHEST;
+ }
}
diff --git a/src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersShoes.java b/src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersShoes.java
index c5a8cea..9af6934 100644
--- a/src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersShoes.java
+++ b/src/main/java/lance5057/tDefense/core/tools/armor/cloth/TinkersShoes.java
@@ -10,6 +10,8 @@ import lance5057.tDefense.core.tools.bases.ArmorCore;
import lance5057.tDefense.util.ArmorNBT;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
@@ -69,9 +71,10 @@ public class TinkersShoes extends ArmorCore
@SideOnly(Side.CLIENT)
@Override
- public ModelBiped getArmorModel(ItemStack stack)
+ public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack,
+ EntityEquipmentSlot armorSlot, net.minecraft.client.model.ModelBiped _default)
{
- return new ModelTinkersShoes(stack);
+ return new ModelTinkersShoes(itemStack);
}
@Override
@@ -79,4 +82,9 @@ public class TinkersShoes extends ArmorCore
ArmorNBT data = buildDefaultArmorTag(materials, FeetMaterialStats.TYPE);
return data.get();
}
+
+ @Override
+ public EntityEquipmentSlot getArmorSlot(ItemStack stack, EntityEquipmentSlot armorType) {
+ return EntityEquipmentSlot.FEET;
+ }
}
diff --git a/src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersBreastplate.java b/src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersBreastplate.java
index 212d53c..5ee2393 100644
--- a/src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersBreastplate.java
+++ b/src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersBreastplate.java
@@ -8,6 +8,8 @@ import lance5057.tDefense.core.tools.armor.renderers.heavy.ModelTinkersBreastpla
import lance5057.tDefense.core.tools.bases.ArmorCore;
import lance5057.tDefense.util.ArmorNBT;
import net.minecraft.client.model.ModelBiped;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fml.relauncher.Side;
@@ -44,9 +46,10 @@ public class TinkersBreastplate extends ArmorCore
@SideOnly(Side.CLIENT)
@Override
- public ModelBiped getArmorModel(ItemStack stack)
+ public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack,
+ EntityEquipmentSlot armorSlot, net.minecraft.client.model.ModelBiped _default)
{
- return new ModelTinkersBreastplate(stack);
+ return new ModelTinkersBreastplate(itemStack);
}
@Override
@@ -54,4 +57,9 @@ public class TinkersBreastplate extends ArmorCore
ArmorNBT data = buildDefaultArmorTag(materials, ChestMaterialStats.TYPE);
return data.get();
}
+
+ @Override
+ public EntityEquipmentSlot getArmorSlot(ItemStack stack, EntityEquipmentSlot armorType) {
+ return EntityEquipmentSlot.CHEST;
+ }
}
diff --git a/src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersGrieves.java b/src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersGrieves.java
index c74ee9e..3d264f1 100644
--- a/src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersGrieves.java
+++ b/src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersGrieves.java
@@ -9,6 +9,8 @@ import lance5057.tDefense.core.tools.armor.renderers.heavy.ModelTinkersGrieves;
import lance5057.tDefense.core.tools.bases.ArmorCore;
import lance5057.tDefense.util.ArmorNBT;
import net.minecraft.client.model.ModelBiped;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fml.relauncher.Side;
@@ -44,9 +46,10 @@ public class TinkersGrieves extends ArmorCore
@SideOnly(Side.CLIENT)
@Override
- public ModelBiped getArmorModel(ItemStack stack)
+ public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack,
+ EntityEquipmentSlot armorSlot, net.minecraft.client.model.ModelBiped _default)
{
- return new ModelTinkersGrieves(stack);
+ return new ModelTinkersGrieves(itemStack);
}
@Override
@@ -54,4 +57,9 @@ public class TinkersGrieves extends ArmorCore
ArmorNBT data = buildDefaultArmorTag(materials, LegsMaterialStats.TYPE);
return data.get();
}
+
+ @Override
+ public EntityEquipmentSlot getArmorSlot(ItemStack stack, EntityEquipmentSlot armorType) {
+ return EntityEquipmentSlot.LEGS;
+ }
}
diff --git a/src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersHelm.java b/src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersHelm.java
index 87b143b..0dadb93 100644
--- a/src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersHelm.java
+++ b/src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersHelm.java
@@ -8,6 +8,8 @@ import lance5057.tDefense.core.tools.armor.renderers.heavy.ModelTinkersHelm;
import lance5057.tDefense.core.tools.bases.ArmorCore;
import lance5057.tDefense.util.ArmorNBT;
import net.minecraft.client.model.ModelBiped;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fml.relauncher.Side;
@@ -44,9 +46,10 @@ public class TinkersHelm extends ArmorCore
@SideOnly(Side.CLIENT)
@Override
- public ModelBiped getArmorModel(ItemStack stack)
+ public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack,
+ EntityEquipmentSlot armorSlot, net.minecraft.client.model.ModelBiped _default)
{
- return new ModelTinkersHelm(stack);
+ return new ModelTinkersHelm(itemStack);
}
@Override
@@ -54,4 +57,9 @@ public class TinkersHelm extends ArmorCore
ArmorNBT data = buildDefaultArmorTag(materials, HelmMaterialStats.TYPE);
return data.get();
}
+
+ @Override
+ public EntityEquipmentSlot getArmorSlot(ItemStack stack, EntityEquipmentSlot armorType) {
+ return EntityEquipmentSlot.HEAD;
+ }
}
diff --git a/src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersSabatons.java b/src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersSabatons.java
index ec5b5ba..4f8adef 100644
--- a/src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersSabatons.java
+++ b/src/main/java/lance5057/tDefense/core/tools/armor/heavy/TinkersSabatons.java
@@ -9,6 +9,8 @@ import lance5057.tDefense.core.tools.armor.renderers.heavy.ModelTinkersSabatons;
import lance5057.tDefense.core.tools.bases.ArmorCore;
import lance5057.tDefense.util.ArmorNBT;
import net.minecraft.client.model.ModelBiped;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fml.relauncher.Side;
@@ -44,9 +46,10 @@ public class TinkersSabatons extends ArmorCore
@SideOnly(Side.CLIENT)
@Override
- public ModelBiped getArmorModel(ItemStack stack)
+ public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack,
+ EntityEquipmentSlot armorSlot, net.minecraft.client.model.ModelBiped _default)
{
- return new ModelTinkersSabatons(stack);
+ return new ModelTinkersSabatons(itemStack);
}
@Override
@@ -54,4 +57,9 @@ public class TinkersSabatons extends ArmorCore
ArmorNBT data = buildDefaultArmorTag(materials, FeetMaterialStats.TYPE);
return data.get();
}
+
+ @Override
+ public EntityEquipmentSlot getArmorSlot(ItemStack stack, EntityEquipmentSlot armorType) {
+ return EntityEquipmentSlot.FEET;
+ }
}
diff --git a/src/main/java/lance5057/tDefense/core/tools/armor/light/TinkersBoots.java b/src/main/java/lance5057/tDefense/core/tools/armor/light/TinkersBoots.java
index 0c1778b..a43e6be 100644
--- a/src/main/java/lance5057/tDefense/core/tools/armor/light/TinkersBoots.java
+++ b/src/main/java/lance5057/tDefense/core/tools/armor/light/TinkersBoots.java
@@ -9,6 +9,8 @@ import lance5057.tDefense.core.tools.armor.renderers.light.ModelTinkersBoots;
import lance5057.tDefense.core.tools.bases.ArmorCore;
import lance5057.tDefense.util.ArmorNBT;
import net.minecraft.client.model.ModelBiped;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fml.relauncher.Side;
@@ -42,9 +44,10 @@ public class TinkersBoots extends ArmorCore
@SideOnly(Side.CLIENT)
@Override
- public ModelBiped getArmorModel(ItemStack stack)
+ public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack,
+ EntityEquipmentSlot armorSlot, net.minecraft.client.model.ModelBiped _default)
{
- return new ModelTinkersBoots(stack);
+ return new ModelTinkersBoots(itemStack);
}
@Override
@@ -52,4 +55,9 @@ public class TinkersBoots extends ArmorCore
ArmorNBT data = buildDefaultArmorTag(materials, FeetMaterialStats.TYPE);
return data.get();
}
+
+ @Override
+ public EntityEquipmentSlot getArmorSlot(ItemStack stack, EntityEquipmentSlot armorType) {
+ return EntityEquipmentSlot.FEET;
+ }
}
diff --git a/src/main/java/lance5057/tDefense/core/tools/armor/straps/ItemStraps.java b/src/main/java/lance5057/tDefense/core/tools/armor/straps/ItemStraps.java
index e7e003f..2822d1a 100644
--- a/src/main/java/lance5057/tDefense/core/tools/armor/straps/ItemStraps.java
+++ b/src/main/java/lance5057/tDefense/core/tools/armor/straps/ItemStraps.java
@@ -76,7 +76,7 @@ public class ItemStraps extends ItemArmor implements ISpecialArmor
{
if(model == null || stack == null || !stack.equals(in))
{
- model = ((ArmorCore)in.getItem()).getArmorModel(in);
+ //model = ((ArmorCore)in.getItem()).getArmorModel(in);
stack = in;
}
return model;
diff --git a/src/main/java/lance5057/tDefense/core/tools/bases/ArmorCore.java b/src/main/java/lance5057/tDefense/core/tools/bases/ArmorCore.java
index e697e0c..1c1acc0 100644
--- a/src/main/java/lance5057/tDefense/core/tools/bases/ArmorCore.java
+++ b/src/main/java/lance5057/tDefense/core/tools/bases/ArmorCore.java
@@ -3,12 +3,16 @@ package lance5057.tDefense.core.tools.bases;
import java.util.ArrayList;
import java.util.List;
+import javax.annotation.Nullable;
+
import lance5057.tDefense.Reference;
import lance5057.tDefense.core.materials.ArmorMaterialStats;
import lance5057.tDefense.util.ArmorNBT;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
+import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation;
@@ -52,7 +56,9 @@ public abstract class ArmorCore extends ToolCore {
public abstract String getArmorTexture(ItemStack stack, int layer);
@SideOnly(Side.CLIENT)
- public abstract ModelBiped getArmorModel(ItemStack stack);
+ @Override
+ @Nullable
+ public abstract ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, EntityEquipmentSlot armorSlot, net.minecraft.client.model.ModelBiped _default);
public ArmorNBT buildDefaultArmorTag(List<Material> materials, String type) {
ArmorNBT data = new ArmorNBT();
@@ -78,4 +84,12 @@ public abstract class ArmorCore extends ToolCore {
return data;
}
+
+ @Override
+ public boolean isValidArmor(ItemStack stack, EntityEquipmentSlot armorType, Entity entity)
+ {
+ return armorType == getArmorSlot(stack, armorType);
+ }
+
+ public abstract EntityEquipmentSlot getArmorSlot(ItemStack stack, EntityEquipmentSlot armorType);
}
diff --git a/src/main/java/lance5057/tDefense/proxy/ClientProxy.java b/src/main/java/lance5057/tDefense/proxy/ClientProxy.java
index acd77d6..651865a 100644
--- a/src/main/java/lance5057/tDefense/proxy/ClientProxy.java
+++ b/src/main/java/lance5057/tDefense/proxy/ClientProxy.java
@@ -6,6 +6,7 @@ import javax.annotation.Nonnull;
import com.google.common.collect.ImmutableList;
+import jline.internal.Log;
import lance5057.tDefense.Reference;
import lance5057.tDefense.TD_Commands;
import lance5057.tDefense.TinkersDefense;
@@ -30,8 +31,13 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.ClientCommandHandler;
+import net.minecraftforge.client.event.RenderPlayerEvent;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
import slimeknights.tconstruct.common.ModelRegisterUtil;
import slimeknights.tconstruct.library.TinkerRegistry;
import slimeknights.tconstruct.library.TinkerRegistryClient;
@@ -41,8 +47,7 @@ import slimeknights.tconstruct.library.materials.Material;
import slimeknights.tconstruct.library.tools.ToolCore;
import slimeknights.tconstruct.library.tools.ToolPart;
-//import lance5057.tDefense.core.renderer.TestSkinChanger;
-
+@Mod.EventBusSubscriber(modid = Reference.MOD_ID)
public class ClientProxy extends CommonProxy {
// static final ToolModelLoader toolmodel = new ToolModelLoader();
// public static final ModelSheath sheath = new ModelSheath();