diff --git a/src/main/java/WayofTime/bloodmagic/client/mesh/ItemSentientSwordMeshDefinition.java b/src/main/java/WayofTime/bloodmagic/client/mesh/ItemSentientSwordMeshDefinition.java new file mode 100644 index 00000000..1950b29c --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/client/mesh/ItemSentientSwordMeshDefinition.java @@ -0,0 +1,25 @@ +package WayofTime.bloodmagic.client.mesh; + +import net.minecraft.client.renderer.ItemMeshDefinition; +import net.minecraft.client.resources.model.ModelResourceLocation; +import net.minecraft.item.ItemStack; +import WayofTime.bloodmagic.item.soul.ItemSentientSword; + +public class ItemSentientSwordMeshDefinition implements ItemMeshDefinition +{ + @Override + public ModelResourceLocation getModelLocation(ItemStack stack) + { + if (stack != null && stack.getItem() instanceof ItemSentientSword) + { + if (((ItemSentientSword) stack.getItem()).getActivated(stack)) + { + return new ModelResourceLocation("bloodmagic:ItemSentientSword1", "inventory"); + } else + { + return new ModelResourceLocation("bloodmagic:ItemSentientSword0", "inventory"); + } + } + return null; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientSword.java b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientSword.java index 28313a26..b716cb75 100644 --- a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientSword.java +++ b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientSword.java @@ -40,8 +40,7 @@ public class ItemSentientSword extends ItemSword implements IDemonWillWeapon super(ModItems.soulToolMaterial); setUnlocalizedName(Constants.Mod.MODID + ".sentientSword"); - setHasSubtypes(true); - setNoRepair(); + setCreativeTab(BloodMagic.tabBloodMagic); } @@ -129,14 +128,19 @@ public class ItemSentientSword extends ItemSword implements IDemonWillWeapon return true; } - private boolean getActivated(ItemStack stack) + public boolean getActivated(ItemStack stack) { - return stack.getItemDamage() > 0; + NBTHelper.checkNBT(stack); + NBTTagCompound tag = stack.getTagCompound(); + + return tag.getBoolean("activated"); } - private ItemStack setActivated(ItemStack stack, boolean activated) + public ItemStack setActivated(ItemStack stack, boolean activated) { - stack.setItemDamage(activated ? 1 : 0); + NBTHelper.checkNBT(stack); + NBTTagCompound tag = stack.getTagCompound(); + tag.setBoolean("activated", activated); return stack; } diff --git a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java index 50713081..5872893f 100644 --- a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java +++ b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java @@ -1,10 +1,12 @@ package WayofTime.bloodmagic.proxy; +import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.obj.OBJLoader; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.client.registry.RenderingRegistry; import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.client.mesh.ItemSentientSwordMeshDefinition; import WayofTime.bloodmagic.client.render.RenderAlchemyArray; import WayofTime.bloodmagic.client.render.RenderAltar; import WayofTime.bloodmagic.client.render.entity.SentientArrowRenderFactory; @@ -43,6 +45,8 @@ public class ClientProxy extends CommonProxy ClientRegistry.bindTileEntitySpecialRenderer(TileAlchemyArray.class, new RenderAlchemyArray()); ClientRegistry.bindTileEntitySpecialRenderer(TileAltar.class, new RenderAltar()); + + ModelLoader.setCustomMeshDefinition(ModItems.sentientSword, new ItemSentientSwordMeshDefinition()); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModItems.java b/src/main/java/WayofTime/bloodmagic/registry/ModItems.java index e24edee3..b84cf4c1 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModItems.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModItems.java @@ -132,7 +132,7 @@ public class ModItems public static Item sentientArmourGem; public static Item.ToolMaterial boundToolMaterial = EnumHelper.addToolMaterial("BoundToolMaterial", 4, 0, 10, 8, 50); - public static Item.ToolMaterial soulToolMaterial = EnumHelper.addToolMaterial("SoulToolMaterial", 4, 0, 7, 8, 50); + public static Item.ToolMaterial soulToolMaterial = EnumHelper.addToolMaterial("SoulToolMaterial", 4, 520, 7, 8, 50); public static void init() { @@ -327,8 +327,8 @@ public class ModItems renderHelper.itemRender(soulGem, 4); renderHelper.itemRender(soulSnare); - renderHelper.itemRender(sentientSword, 0); - renderHelper.itemRender(sentientSword, 1); + renderHelper.customItemRender(sentientSword, 0); + renderHelper.customItemRender(sentientSword, 1); renderHelper.itemRender(sentientBow, 0, "ItemSentientBow"); renderHelper.itemRender(sentientBow, 1, "ItemSentientBow_pulling_0"); renderHelper.itemRender(sentientBow, 2, "ItemSentientBow_pulling_1"); diff --git a/src/main/java/WayofTime/bloodmagic/util/helper/InventoryRenderHelper.java b/src/main/java/WayofTime/bloodmagic/util/helper/InventoryRenderHelper.java index b6f741f7..02e7f4c7 100644 --- a/src/main/java/WayofTime/bloodmagic/util/helper/InventoryRenderHelper.java +++ b/src/main/java/WayofTime/bloodmagic/util/helper/InventoryRenderHelper.java @@ -56,6 +56,25 @@ public class InventoryRenderHelper ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(resName, "inventory")); } + /** + * Registers a Model for the given Item and meta. This does not call + * setCustomModelResourceLocation, to allow the implementation of + * ItemMeshDefinition. + * + * @param item + * - Item to register Model for + * @param meta + * - Meta of Item + * @param name + * - Name of the model JSON + */ + public void customItemRender(Item item, int meta, String name) + { + ResourceLocation resName = new ResourceLocation(domain + name); + + ModelBakery.registerItemVariants(item, resName); + } + /** * Shorthand of {@code itemRender(Item, int, String)} * @@ -69,6 +88,11 @@ public class InventoryRenderHelper itemRender(item, meta, getClassName(item) + meta); } + public void customItemRender(Item item, int meta) + { + customItemRender(item, meta, getClassName(item) + meta); + } + public void itemRender(Item item, String name) { itemRender(item, 0, name);