diff options
| author | Lance5057 <lance5057@gmail.com> | 2018-04-05 15:58:33 -0500 |
|---|---|---|
| committer | Lance5057 <lance5057@gmail.com> | 2018-04-05 15:58:33 -0500 |
| commit | a12793585fc5c4c076cb499b43f0420b8a1f63fe (patch) | |
| tree | 91be14a540e2ceaaa3f919fec52e6d1dcfee1dfd | |
| parent | 2a994c103b1242e7416c4b668f777a6ca1873006 (diff) | |
Armor renderering rewrite started
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(); |
