From c32332c5df4474df1962ba55e74b6b14756f11c3 Mon Sep 17 00:00:00 2001 From: Arcaratus Date: Sun, 11 Mar 2018 19:29:35 -0400 Subject: [PATCH 1/5] Add charging textures for Bound Tools Also nuked BlockStack and ItemStackWrapper usage in the tools --- .../bloodmagic/item/ItemBoundAxe.java | 34 ++--- .../bloodmagic/item/ItemBoundPickaxe.java | 32 ++-- .../bloodmagic/item/ItemBoundShovel.java | 34 ++--- .../bloodmagic/item/ItemBoundSword.java | 21 ++- .../bloodmagic/item/ItemBoundTool.java | 137 ++++++++---------- .../WayofTime/bloodmagic/util/Constants.java | 2 +- .../bloodmagic/models/item/bound_axe.json | 50 +++++++ .../bloodmagic/models/item/bound_pickaxe.json | 50 +++++++ .../bloodmagic/models/item/bound_shovel.json | 50 +++++++ .../bloodmagic/models/item/bound_sword.json | 50 +++++++ .../item/bound_tools/bound_axe_activated.json | 6 + .../bound_tools/bound_axe_activated_0.json | 7 + .../bound_tools/bound_axe_activated_1.json | 7 + .../bound_tools/bound_axe_activated_2.json | 7 + .../bound_tools/bound_axe_activated_3.json | 7 + .../bound_tools/bound_axe_activated_4.json | 7 + .../bound_tools/bound_pickaxe_activated.json | 6 + .../bound_pickaxe_activated_0.json | 7 + .../bound_pickaxe_activated_1.json | 7 + .../bound_pickaxe_activated_2.json | 7 + .../bound_pickaxe_activated_3.json | 7 + .../bound_pickaxe_activated_4.json | 7 + .../bound_tools/bound_shovel_activated.json | 6 + .../bound_tools/bound_shovel_activated_0.json | 7 + .../bound_tools/bound_shovel_activated_1.json | 7 + .../bound_tools/bound_shovel_activated_2.json | 7 + .../bound_tools/bound_shovel_activated_3.json | 7 + .../bound_tools/bound_shovel_activated_4.json | 7 + .../bound_tools/bound_sword_activated.json | 6 + .../bound_tools/bound_sword_activated_0.json | 7 + .../bound_tools/bound_sword_activated_1.json | 7 + .../bound_tools/bound_sword_activated_2.json | 7 + .../bound_tools/bound_sword_activated_3.json | 7 + .../bound_tools/bound_sword_activated_4.json | 7 + .../item/bound_tools/item_deactivated.json | 6 + 35 files changed, 488 insertions(+), 142 deletions(-) create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_axe.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_pickaxe.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_shovel.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_sword.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_0.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_1.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_2.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_3.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_4.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_0.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_1.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_2.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_3.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_4.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_0.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_1.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_2.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_3.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_4.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_0.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_1.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_2.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_3.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_4.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/bound_tools/item_deactivated.json diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java index f4b092e0fd..4dbf90f41b 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java @@ -2,12 +2,8 @@ import WayofTime.bloodmagic.client.IMeshProvider; import WayofTime.bloodmagic.client.mesh.CustomMeshDefinitionActivatable; -import WayofTime.bloodmagic.util.BlockStack; -import WayofTime.bloodmagic.util.ItemStackWrapper; import WayofTime.bloodmagic.util.helper.NetworkHelper; -import com.google.common.collect.HashMultiset; -import com.google.common.collect.Multimap; -import com.google.common.collect.Sets; +import com.google.common.collect.*; import net.minecraft.block.Block; import net.minecraft.block.BlockLeaves; import net.minecraft.block.material.Material; @@ -22,6 +18,7 @@ import net.minecraft.init.Enchantments; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.ItemStack; +import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; @@ -30,7 +27,6 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import java.util.List; import java.util.Set; import java.util.function.Consumer; @@ -60,7 +56,7 @@ protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, int fortuneLvl = EnchantmentHelper.getEnchantmentLevel(Enchantments.FORTUNE, stack); int range = charge / 6; //Charge is a max of 30 - want 5 to be the max - HashMultiset drops = HashMultiset.create(); + HashMultiset drops = HashMultiset.create(); BlockPos playerPos = player.getPosition(); @@ -68,29 +64,29 @@ protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, for (int j = 0; j <= 2 * range; j++) { for (int k = -range; k <= range; k++) { BlockPos blockPos = playerPos.add(i, j, k); - BlockStack blockStack = BlockStack.getStackFromPos(world, blockPos); + IBlockState blockState = world.getBlockState(blockPos); - if (blockStack.getBlock().isAir(blockStack.getState(), world, blockPos)) + if (blockState.getBlock().isAir(blockState, world, blockPos)) continue; - if (blockStack.getState().getMaterial() != Material.WOOD && !EFFECTIVE_ON.contains(blockStack.getBlock())) + if (blockState.getMaterial() != Material.WOOD && !EFFECTIVE_ON.contains(blockState.getBlock())) continue; - BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(world, blockPos, blockStack.getState(), player); + BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(world, blockPos, blockState, player); if (MinecraftForge.EVENT_BUS.post(event) || event.getResult() == Event.Result.DENY) continue; - if (blockStack.getState().getBlockHardness(world, blockPos) != -1.0F) { - float strengthVsBlock = getDestroySpeed(stack, blockStack.getState()); + if (blockState.getBlockHardness(world, blockPos) != -1.0F) { + float strengthVsBlock = getDestroySpeed(stack, blockState); - if (strengthVsBlock > 1.1F || blockStack.getBlock() instanceof BlockLeaves && world.canMineBlockBody(player, blockPos)) { - if (silkTouch && blockStack.getBlock().canSilkHarvest(world, blockPos, world.getBlockState(blockPos), player)) - drops.add(new ItemStackWrapper(blockStack)); + if (strengthVsBlock > 1.1F || blockState.getBlock() instanceof BlockLeaves && world.canMineBlockBody(player, blockPos)) { + if (silkTouch && blockState.getBlock().canSilkHarvest(world, blockPos, world.getBlockState(blockPos), player)) + drops.add(new ItemStack(blockState.getBlock(), 1, blockState.getBlock().getMetaFromState(blockState))); else { - List itemDrops = blockStack.getBlock().getDrops(world, blockPos, world.getBlockState(blockPos), fortuneLvl); + NonNullList itemDrops = NonNullList.create(); + blockState.getBlock().getDrops(itemDrops, world, blockPos, blockState, fortuneLvl); - for (ItemStack stacks : itemDrops) - drops.add(ItemStackWrapper.getHolder(stacks)); + drops.addAll(itemDrops); } world.setBlockToAir(blockPos); diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java index 8e7da20c82..bf8a0f3766 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java @@ -2,12 +2,8 @@ import WayofTime.bloodmagic.client.IMeshProvider; import WayofTime.bloodmagic.client.mesh.CustomMeshDefinitionActivatable; -import WayofTime.bloodmagic.util.BlockStack; -import WayofTime.bloodmagic.util.ItemStackWrapper; import WayofTime.bloodmagic.util.helper.NetworkHelper; -import com.google.common.collect.HashMultiset; -import com.google.common.collect.Multimap; -import com.google.common.collect.Sets; +import com.google.common.collect.*; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; @@ -21,6 +17,7 @@ import net.minecraft.init.Enchantments; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.ItemStack; +import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; @@ -29,7 +26,6 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import java.util.List; import java.util.Set; import java.util.function.Consumer; @@ -74,7 +70,7 @@ protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, int fortuneLvl = EnchantmentHelper.getEnchantmentLevel(Enchantments.FORTUNE, stack); int range = (charge / 6); //Charge is a max of 30 - want 5 to be the max - HashMultiset drops = HashMultiset.create(); + HashMultiset drops = HashMultiset.create(); BlockPos playerPos = player.getPosition(); @@ -82,28 +78,28 @@ protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, for (int j = 0; j <= 2 * range; j++) { for (int k = -range; k <= range; k++) { BlockPos blockPos = playerPos.add(i, j, k); - BlockStack blockStack = BlockStack.getStackFromPos(world, blockPos); + IBlockState blockState = world.getBlockState(blockPos); - if (blockStack.getBlock().isAir(blockStack.getState(), world, blockPos)) + if (blockState.getBlock().isAir(blockState, world, blockPos)) continue; - if (blockStack.getState().getMaterial() != Material.ROCK && !EFFECTIVE_ON.contains(blockStack.getBlock())) + if (blockState.getMaterial() != Material.ROCK && !EFFECTIVE_ON.contains(blockState.getBlock())) continue; - BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(world, blockPos, blockStack.getState(), player); + BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(world, blockPos, blockState, player); if (MinecraftForge.EVENT_BUS.post(event) || event.getResult() == Event.Result.DENY) continue; - if (blockStack.getBlock() != null && blockStack.getBlock().getBlockHardness(blockStack.getState(), world, blockPos) != -1) { - float strengthVsBlock = getDestroySpeed(stack, blockStack.getState()); + if (blockState.getBlock().getBlockHardness(blockState, world, blockPos) != -1) { + float strengthVsBlock = getDestroySpeed(stack, blockState); if (strengthVsBlock > 1.1F && world.canMineBlockBody(player, blockPos)) { - if (silkTouch && blockStack.getBlock().canSilkHarvest(world, blockPos, world.getBlockState(blockPos), player)) - drops.add(new ItemStackWrapper(blockStack)); + if (silkTouch && blockState.getBlock().canSilkHarvest(world, blockPos, world.getBlockState(blockPos), player)) + drops.add(new ItemStack(blockState.getBlock(), 1, blockState.getBlock().getMetaFromState(blockState))); else { - List itemDrops = blockStack.getBlock().getDrops(world, blockPos, world.getBlockState(blockPos), fortuneLvl); - for (ItemStack stacks : itemDrops) - drops.add(ItemStackWrapper.getHolder(stacks)); + NonNullList itemDrops = NonNullList.create(); + blockState.getBlock().getDrops(itemDrops, world, blockPos, world.getBlockState(blockPos), fortuneLvl); + drops.addAll(itemDrops); } world.setBlockToAir(blockPos); diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java index a1426e9e9e..fa65c9137d 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java @@ -2,12 +2,8 @@ import WayofTime.bloodmagic.client.IMeshProvider; import WayofTime.bloodmagic.client.mesh.CustomMeshDefinitionActivatable; -import WayofTime.bloodmagic.util.BlockStack; -import WayofTime.bloodmagic.util.ItemStackWrapper; import WayofTime.bloodmagic.util.helper.NetworkHelper; -import com.google.common.collect.HashMultiset; -import com.google.common.collect.Multimap; -import com.google.common.collect.Sets; +import com.google.common.collect.*; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; @@ -21,6 +17,7 @@ import net.minecraft.init.Enchantments; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.ItemStack; +import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; @@ -29,7 +26,6 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import java.util.List; import java.util.Set; import java.util.function.Consumer; @@ -59,7 +55,7 @@ protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, int fortuneLvl = EnchantmentHelper.getEnchantmentLevel(Enchantments.FORTUNE, stack); int range = charge / 6; //Charge is a max of 30 - want 5 to be the max - HashMultiset drops = HashMultiset.create(); + HashMultiset drops = HashMultiset.create(); BlockPos playerPos = player.getPosition(); @@ -67,29 +63,29 @@ protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, for (int j = 0; j <= 2 * range; j++) { for (int k = -range; k <= range; k++) { BlockPos blockPos = playerPos.add(i, j, k); - BlockStack blockStack = BlockStack.getStackFromPos(world, blockPos); + IBlockState blockState = world.getBlockState(blockPos); - if (blockStack.getBlock().isAir(blockStack.getState(), world, blockPos)) + if (blockState.getBlock().isAir(blockState, world, blockPos)) continue; - Material material = blockStack.getState().getMaterial(); - if (material != Material.GROUND && material != Material.CLAY && material != Material.GRASS && !EFFECTIVE_ON.contains(blockStack.getBlock())) + Material material = blockState.getMaterial(); + if (material != Material.GROUND && material != Material.CLAY && material != Material.GRASS && !EFFECTIVE_ON.contains(blockState.getBlock())) continue; - BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(world, blockPos, blockStack.getState(), player); + BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(world, blockPos, blockState, player); if (MinecraftForge.EVENT_BUS.post(event) || event.getResult() == Event.Result.DENY) continue; - if (blockStack.getBlock() != null && blockStack.getBlock().getBlockHardness(blockStack.getState(), world, blockPos) != -1) { - float strengthVsBlock = getDestroySpeed(stack, blockStack.getState()); + if (blockState.getBlock().getBlockHardness(blockState, world, blockPos) != -1) { + float strengthVsBlock = getDestroySpeed(stack, blockState); if (strengthVsBlock > 1.1F && world.canMineBlockBody(player, blockPos)) { - if (silkTouch && blockStack.getBlock().canSilkHarvest(world, blockPos, world.getBlockState(blockPos), player)) - drops.add(new ItemStackWrapper(blockStack)); + if (silkTouch && blockState.getBlock().canSilkHarvest(world, blockPos, world.getBlockState(blockPos), player)) + drops.add(new ItemStack(blockState.getBlock(), 1, blockState.getBlock().getMetaFromState(blockState))); else { - List itemDrops = blockStack.getBlock().getDrops(world, blockPos, world.getBlockState(blockPos), fortuneLvl); - for (ItemStack stacks : itemDrops) - drops.add(ItemStackWrapper.getHolder(stacks)); + NonNullList itemDrops = NonNullList.create(); + blockState.getBlock().getDrops(itemDrops, world, blockPos, world.getBlockState(blockPos), fortuneLvl); + drops.addAll(itemDrops); } world.setBlockToAir(blockPos); diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java index 1c67b32012..b7702657fe 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java @@ -16,22 +16,18 @@ import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.*; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.EntityEquipmentSlot; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemSword; -import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumHand; -import net.minecraft.util.NonNullList; +import net.minecraft.item.*; +import net.minecraft.util.*; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import javax.annotation.Nullable; import java.util.List; import java.util.function.Consumer; @@ -41,6 +37,15 @@ public ItemBoundSword() { setUnlocalizedName(BloodMagic.MODID + ".bound.sword"); setCreativeTab(BloodMagic.TAB_BM); + + addPropertyOverride(new ResourceLocation("bloodmagic", "activated"), new IItemPropertyGetter() + { + @SideOnly(Side.CLIENT) + public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn) + { + return getActivated(stack) ? 1F : 0F; + } + }); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundTool.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundTool.java index 4c39abddf0..7c874a244a 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundTool.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundTool.java @@ -1,19 +1,16 @@ package WayofTime.bloodmagic.item; import WayofTime.bloodmagic.BloodMagic; +import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; import WayofTime.bloodmagic.core.data.Binding; -import WayofTime.bloodmagic.util.ItemStackWrapper; import WayofTime.bloodmagic.event.BoundToolEvent; import WayofTime.bloodmagic.iface.IActivatable; import WayofTime.bloodmagic.iface.IBindable; -import WayofTime.bloodmagic.util.helper.NetworkHelper; -import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; +import WayofTime.bloodmagic.util.Constants; import WayofTime.bloodmagic.util.Utils; +import WayofTime.bloodmagic.util.helper.NetworkHelper; import WayofTime.bloodmagic.util.helper.TextHelper; -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Multimap; -import com.google.common.collect.Multiset; +import com.google.common.collect.*; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.util.ITooltipFlag; @@ -24,30 +21,24 @@ import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.EntityEquipmentSlot; -import net.minecraft.item.EnumAction; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemTool; -import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumHand; -import net.minecraft.util.NonNullList; +import net.minecraft.item.*; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.*; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import java.util.HashMap; +import javax.annotation.Nullable; import java.util.List; -import java.util.Map; import java.util.Set; public class ItemBoundTool extends ItemTool implements IBindable, IActivatable { - public final int chargeTime = 30; + public final int MAX_CHARGE_TIME = 30; protected final String tooltipBase; private final String name; - public Map heldDownMap = new HashMap<>(); - public Map heldDownCountMap = new HashMap<>(); public ItemBoundTool(String name, float damage, Set effectiveBlocks) { super(damage, 1, RegistrarBloodMagicItems.BOUND_TOOL_MATERIAL, effectiveBlocks); @@ -55,6 +46,24 @@ public ItemBoundTool(String name, float damage, Set effectiveBlocks) { setCreativeTab(BloodMagic.TAB_BM); setHarvestLevel(name, 4); + addPropertyOverride(new ResourceLocation("bloodmagic", "activated"), new IItemPropertyGetter() + { + @SideOnly(Side.CLIENT) + public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn) + { + return getActivated(stack) ? 1F : 0F; + } + }); + + addPropertyOverride(new ResourceLocation("bloodmagic", "charge"), new IItemPropertyGetter() + { + @SideOnly(Side.CLIENT) + public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn) + { + return entityIn != null && getActivated(stack) && entityIn.isHandActive() && entityIn.getActiveItemStack() == stack ? MathHelper.clamp((float)Math.min(getCharge(stack), MAX_CHARGE_TIME) / (float)MAX_CHARGE_TIME, 0.0F, 1.0F) : 0; + } + }); + this.name = name; this.tooltipBase = "tooltip.bloodmagic.bound." + name + "."; } @@ -85,39 +94,16 @@ public void onUpdate(ItemStack stack, World world, Entity entity, int itemSlot, return; } - if (entity instanceof EntityPlayer && getActivated(stack) && isSelected && getBeingHeldDown(stack) && stack == ((EntityPlayer) entity).getActiveItemStack()) { + if (entity instanceof EntityPlayer && getActivated(stack) && isSelected && stack == ((EntityPlayer) entity).getActiveItemStack()) { EntityPlayer player = (EntityPlayer) entity; - setHeldDownCount(stack, Math.min(player.getItemInUseCount(), chargeTime)); - } else if (!isSelected) { - setBeingHeldDown(stack, false); + if (world.isRemote) + setCharge(stack, Math.min(72000 - player.getItemInUseCount(), MAX_CHARGE_TIME)); } if (entity instanceof EntityPlayer && getActivated(stack) && world.getTotalWorldTime() % 80 == 0) NetworkHelper.getSoulNetwork(binding).syphonAndDamage((EntityPlayer) entity, 20); } - protected int getHeldDownCount(ItemStack stack) { - if (!heldDownCountMap.containsKey(stack)) - return 0; - - return heldDownCountMap.get(stack); - } - - protected void setHeldDownCount(ItemStack stack, int count) { - heldDownCountMap.put(stack, count); - } - - protected boolean getBeingHeldDown(ItemStack stack) { - if (!heldDownMap.containsKey(stack)) - return false; - - return heldDownMap.get(stack); - } - - protected void setBeingHeldDown(ItemStack stack, boolean heldDown) { - heldDownMap.put(stack, heldDown); - } - @Override public ActionResult onItemRightClick(World world, EntityPlayer player, EnumHand hand) { ItemStack stack = player.getHeldItem(hand); @@ -148,8 +134,9 @@ public void onPlayerStoppedUsing(ItemStack stack, World worldIn, EntityLivingBas i = event.charge; - onBoundRelease(stack, worldIn, player, Math.min(i, chargeTime)); - setBeingHeldDown(stack, false); + onBoundRelease(stack, worldIn, player, Math.min(i, MAX_CHARGE_TIME)); + if (worldIn.isRemote) + setCharge(stack, 0); } } } @@ -205,16 +192,6 @@ public Multimap getItemAttributeModifiers(EntityEquip return ArrayListMultimap.create(); // No-op } - @Override - public boolean showDurabilityBar(ItemStack stack) { - return getActivated(stack) && getBeingHeldDown(stack); - } - - @Override - public double getDurabilityForDisplay(ItemStack stack) { - return ((double) -Math.min(getHeldDownCount(stack), chargeTime) / chargeTime) + 1; - } - public String getTooltipBase() { return tooltipBase; } @@ -223,31 +200,37 @@ public String getName() { return name; } - public Map getHeldDownMap() { - return heldDownMap; - } - - public Map getHeldDownCountMap() { - return heldDownCountMap; - } - - public int getChargeTime() { - return chargeTime; - } - - protected static void dropStacks(Multiset drops, World world, BlockPos posToDrop) { - for (Multiset.Entry entry : drops.entrySet()) { + protected static void dropStacks(Multiset drops, World world, BlockPos posToDrop) { + for (Multiset.Entry entry : drops.entrySet()) { int count = entry.getCount(); - ItemStackWrapper stack = entry.getElement(); - int maxStackSize = stack.item.getItemStackLimit(stack.toStack(1)); + ItemStack stack = entry.getElement(); + int maxStackSize = stack.getItem().getItemStackLimit(stack); while (count >= maxStackSize) { - world.spawnEntity(new EntityItem(world, posToDrop.getX(), posToDrop.getY(), posToDrop.getZ(), stack.toStack(maxStackSize))); + ItemStack s = stack.copy(); + s.setCount(maxStackSize); + world.spawnEntity(new EntityItem(world, posToDrop.getX(), posToDrop.getY(), posToDrop.getZ(), s)); count -= maxStackSize; } - if (count > 0) - world.spawnEntity(new EntityItem(world, posToDrop.getX(), posToDrop.getY(), posToDrop.getZ(), stack.toStack(count))); + if (count > 0) { + ItemStack s = stack.copy(); + s.setCount(count); + world.spawnEntity(new EntityItem(world, posToDrop.getX(), posToDrop.getY(), posToDrop.getZ(), s)); + } + } + } + + protected int getCharge(ItemStack stack) { + return !stack.isEmpty() && stack.hasTagCompound() ? stack.getTagCompound().getInteger(Constants.NBT.CHARGE) : 0; + } + + protected void setCharge(ItemStack stack, int chargeTime) { + if (!stack.isEmpty()) { + if (!stack.hasTagCompound()) + stack.setTagCompound(new NBTTagCompound()); + + stack.getTagCompound().setInteger(Constants.NBT.CHARGE, chargeTime); } } -} +} \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/util/Constants.java b/src/main/java/WayofTime/bloodmagic/util/Constants.java index 77d6d512c3..57e18949ff 100644 --- a/src/main/java/WayofTime/bloodmagic/util/Constants.java +++ b/src/main/java/WayofTime/bloodmagic/util/Constants.java @@ -82,7 +82,7 @@ public static class NBT { public static final String LIVING_ARMOUR = "livingArmour"; - public static final String CHARGE_TIME = "chargeTime"; + public static final String CHARGE = "charge"; public static final String HELD_DOWN = "heldDown"; public static final String UPGRADE_POISON_TIMER = "poisonTimer"; diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_axe.json b/src/main/resources/assets/bloodmagic/models/item/bound_axe.json new file mode 100644 index 0000000000..42853e9303 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_axe.json @@ -0,0 +1,50 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundAxe_activated" + }, + "overrides": [ + { + "predicate": { + "bloodmagic:activated": 0 + }, + "model": "bloodmagic:item/bound_tools/item_deactivated" + }, + { + "predicate": { + "bloodmagic:activated": 1 + }, + "model": "bloodmagic:item/bound_tools/bound_axe_activated" + }, + { + "predicate": { + "bloodmagic:charge": 0.2 + }, + "model": "bloodmagic:item/bound_tools/bound_axe_activated_0" + }, + { + "predicate": { + "bloodmagic:charge": 0.4 + }, + "model": "bloodmagic:item/bound_tools/bound_axe_activated_1" + }, + { + "predicate": { + "bloodmagic:charge": 0.6 + }, + "model": "bloodmagic:item/bound_tools/bound_axe_activated_2" + }, + { + "predicate": { + "bloodmagic:charge": 0.8 + }, + "model": "bloodmagic:item/bound_tools/bound_axe_activated_3" + }, + { + "predicate": { + "bloodmagic:charge": 1 + }, + "model": "bloodmagic:item/bound_tools/bound_axe_activated_4" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_pickaxe.json b/src/main/resources/assets/bloodmagic/models/item/bound_pickaxe.json new file mode 100644 index 0000000000..b9af7d4b45 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_pickaxe.json @@ -0,0 +1,50 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundPickaxe_activated" + }, + "overrides": [ + { + "predicate": { + "bloodmagic:activated": 0 + }, + "model": "bloodmagic:item/bound_tools/item_deactivated" + }, + { + "predicate": { + "bloodmagic:activated": 1 + }, + "model": "bloodmagic:item/bound_tools/bound_pickaxe_activated" + }, + { + "predicate": { + "bloodmagic:charge": 0.2 + }, + "model": "bloodmagic:item/bound_tools/bound_pickaxe_activated_0" + }, + { + "predicate": { + "bloodmagic:charge": 0.4 + }, + "model": "bloodmagic:item/bound_tools/bound_pickaxe_activated_1" + }, + { + "predicate": { + "bloodmagic:charge": 0.6 + }, + "model": "bloodmagic:item/bound_tools/bound_pickaxe_activated_2" + }, + { + "predicate": { + "bloodmagic:charge": 0.8 + }, + "model": "bloodmagic:item/bound_tools/bound_pickaxe_activated_3" + }, + { + "predicate": { + "bloodmagic:charge": 1 + }, + "model": "bloodmagic:item/bound_tools/bound_pickaxe_activated_4" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_shovel.json b/src/main/resources/assets/bloodmagic/models/item/bound_shovel.json new file mode 100644 index 0000000000..ffdcf68595 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_shovel.json @@ -0,0 +1,50 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundShovel_activated" + }, + "overrides": [ + { + "predicate": { + "bloodmagic:activated": 0 + }, + "model": "bloodmagic:item/bound_tools/item_deactivated" + }, + { + "predicate": { + "bloodmagic:activated": 1 + }, + "model": "bloodmagic:item/bound_tools/bound_shovel_activated" + }, + { + "predicate": { + "bloodmagic:charge": 0.2 + }, + "model": "bloodmagic:item/bound_tools/bound_shovel_activated_0" + }, + { + "predicate": { + "bloodmagic:charge": 0.4 + }, + "model": "bloodmagic:item/bound_tools/bound_shovel_activated_1" + }, + { + "predicate": { + "bloodmagic:charge": 0.6 + }, + "model": "bloodmagic:item/bound_tools/bound_shovel_activated_2" + }, + { + "predicate": { + "bloodmagic:charge": 0.8 + }, + "model": "bloodmagic:item/bound_tools/bound_shovel_activated_3" + }, + { + "predicate": { + "bloodmagic:charge": 1 + }, + "model": "bloodmagic:item/bound_tools/bound_shovel_activated_4" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_sword.json b/src/main/resources/assets/bloodmagic/models/item/bound_sword.json new file mode 100644 index 0000000000..ef64b7cf51 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_sword.json @@ -0,0 +1,50 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundSword_activated" + }, + "overrides": [ + { + "predicate": { + "bloodmagic:activated": 0 + }, + "model": "bloodmagic:item/bound_tools/item_deactivated" + }, + { + "predicate": { + "bloodmagic:activated": 1 + }, + "model": "bloodmagic:item/bound_tools/bound_sword_activated" + }, + { + "predicate": { + "bloodmagic:charge": 0.2 + }, + "model": "bloodmagic:item/bound_tools/bound_sword_activated_0" + }, + { + "predicate": { + "bloodmagic:charge": 0.4 + }, + "model": "bloodmagic:item/bound_tools/bound_sword_activated_1" + }, + { + "predicate": { + "bloodmagic:charge": 0.6 + }, + "model": "bloodmagic:item/bound_tools/bound_sword_activated_2" + }, + { + "predicate": { + "bloodmagic:charge": 0.8 + }, + "model": "bloodmagic:item/bound_tools/bound_sword_activated_3" + }, + { + "predicate": { + "bloodmagic:charge": 1 + }, + "model": "bloodmagic:item/bound_tools/bound_sword_activated_4" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated.json new file mode 100644 index 0000000000..cda6f8fc70 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundAxe_activated" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_0.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_0.json new file mode 100644 index 0000000000..c3c98717c6 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_0.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundAxe_activated", + "layer1": "bloodmagic:items/boundaxe_activated_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_1.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_1.json new file mode 100644 index 0000000000..b73a63f9da --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_1.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundAxe_activated", + "layer1": "bloodmagic:items/boundaxe_activated_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_2.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_2.json new file mode 100644 index 0000000000..8dceed24c1 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_2.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundAxe_activated", + "layer1": "bloodmagic:items/boundaxe_activated_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_3.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_3.json new file mode 100644 index 0000000000..667071c281 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_3.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundAxe_activated", + "layer1": "bloodmagic:items/boundaxe_activated_3" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_4.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_4.json new file mode 100644 index 0000000000..1480d01dbe --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_axe_activated_4.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundAxe_activated", + "layer1": "bloodmagic:items/boundaxe_activated_4" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated.json new file mode 100644 index 0000000000..af7641fed7 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundPickaxe_activated" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_0.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_0.json new file mode 100644 index 0000000000..30bb007cc7 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_0.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundPickaxe_activated", + "layer1": "bloodmagic:items/boundpickaxe_activated_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_1.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_1.json new file mode 100644 index 0000000000..0e32e234ce --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_1.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundPickaxe_activated", + "layer1": "bloodmagic:items/boundpickaxe_activated_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_2.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_2.json new file mode 100644 index 0000000000..01a5cde5f4 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_2.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundPickaxe_activated", + "layer1": "bloodmagic:items/boundpickaxe_activated_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_3.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_3.json new file mode 100644 index 0000000000..95589fc584 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_3.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundPickaxe_activated", + "layer1": "bloodmagic:items/boundpickaxe_activated_3" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_4.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_4.json new file mode 100644 index 0000000000..66b5b06abb --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_pickaxe_activated_4.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundPickaxe_activated", + "layer1": "bloodmagic:items/boundpickaxe_activated_4" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated.json new file mode 100644 index 0000000000..bbaa04d16a --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundShovel_activated" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_0.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_0.json new file mode 100644 index 0000000000..ebffb65929 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_0.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundShovel_activated", + "layer1": "bloodmagic:items/boundshovel_activated_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_1.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_1.json new file mode 100644 index 0000000000..c841e08a7c --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_1.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundShovel_activated", + "layer1": "bloodmagic:items/boundshovel_activated_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_2.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_2.json new file mode 100644 index 0000000000..25e951a895 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_2.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundShovel_activated", + "layer1": "bloodmagic:items/boundshovel_activated_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_3.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_3.json new file mode 100644 index 0000000000..ef0a0ba15c --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_3.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundShovel_activated", + "layer1": "bloodmagic:items/boundshovel_activated_3" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_4.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_4.json new file mode 100644 index 0000000000..07369f5321 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_shovel_activated_4.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundShovel_activated", + "layer1": "bloodmagic:items/boundshovel_activated_4" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated.json new file mode 100644 index 0000000000..e2bdf5e967 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundSword_activated" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_0.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_0.json new file mode 100644 index 0000000000..2cd77cfc33 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_0.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundSword_activated", + "layer1": "bloodmagic:items/boundsword_activated_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_1.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_1.json new file mode 100644 index 0000000000..81e6fd8390 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_1.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundSword_activated", + "layer1": "bloodmagic:items/boundsword_activated_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_2.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_2.json new file mode 100644 index 0000000000..e1f6bfd286 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_2.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundSword_activated", + "layer1": "bloodmagic:items/boundsword_activated_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_3.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_3.json new file mode 100644 index 0000000000..7845b66e6f --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_3.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundSword_activated", + "layer1": "bloodmagic:items/boundsword_activated_3" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_4.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_4.json new file mode 100644 index 0000000000..bccab01edc --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/bound_sword_activated_4.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/BoundSword_activated", + "layer1": "bloodmagic:items/boundsword_activated_4" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/bound_tools/item_deactivated.json b/src/main/resources/assets/bloodmagic/models/item/bound_tools/item_deactivated.json new file mode 100644 index 0000000000..d748b453c1 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/bound_tools/item_deactivated.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "bloodmagic:items/Item_deactivated" + } +} \ No newline at end of file From 1a2bfebb3bf61fa8f2250eff03ce83f7f0f79751 Mon Sep 17 00:00:00 2001 From: Arcaratus Date: Sun, 11 Mar 2018 19:38:44 -0400 Subject: [PATCH 2/5] Add example charging textures for the pick --- .../textures/items/boundpickaxe_activated_0.png | Bin 0 -> 155 bytes .../textures/items/boundpickaxe_activated_1.png | Bin 0 -> 193 bytes .../textures/items/boundpickaxe_activated_2.png | Bin 0 -> 170 bytes .../textures/items/boundpickaxe_activated_3.png | Bin 0 -> 215 bytes .../textures/items/boundpickaxe_activated_4.png | Bin 0 -> 238 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_0.png create mode 100644 src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_1.png create mode 100644 src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_2.png create mode 100644 src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_3.png create mode 100644 src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_4.png diff --git a/src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_0.png b/src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f92b7338d485c98a19999b0ed42f203034a642b9 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPdGbe+h{F-#zRG^TCr;B5V#p&b(309Rx(}_I)|8F<= t<1Uu0bhIHMm#uAUxI1%^2#*^BgLXSxXTpjTZ-IIkJYD@<);T3K0RYp5D9Zo< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_1.png b/src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e83e72e59bee1c62a9ba41cd72a4d4f6b0cfddc1 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPdGbe*GfAcf{W}uLtr;B5V#p&b(iBAm^BU-bSB>!<2 z85vk;8X6c}6IjpB_f5_4Py5FI+ZAs39Fcmkq$T0~?)HSu0&lNNu^s!b%k%&H-Qxfxf1LEDR?!r6wNBxPKdH1cRrm KpUXO@geCwt(l;Ui literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_3.png b/src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_3.png new file mode 100644 index 0000000000000000000000000000000000000000..5ad79db6553a4654499cc90acc6ea8893f793c01 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPdGbe)*^JH(Mmq4KuPZ!4!i_^&o3sisHKlI^$J@?`I zO(ySsmHd>s^*X=b5B!;}B>9iK$jHD#)6l@+nt{QjH(V)Zk@uXgwd6=}Z)5`r{mW1M zvH!i?vhQqse}K&ME~{T0<-X=(^k;dO<6;IT2ESKoTTgN~g#hhi@O1TaS?83{1OV=) BNTdJ& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_4.png b/src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_4.png new file mode 100644 index 0000000000000000000000000000000000000000..4f02108fa5f016d5f7a7bc787cf633c1c6c84c94 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPdGbe+RiT1bY&wxVJo-U3d7N?UF76=$TniL^?@c5H6-%jy{pI3@R!<(9gVM@VjzKaSz aFff=L(Cc~o<$fN}84RATelF{r5}E*wbx`C0 literal 0 HcmV?d00001 From ced74e842d53fe65e50cc75bcb590254e25eed57 Mon Sep 17 00:00:00 2001 From: Arcaratus Date: Sun, 11 Mar 2018 20:14:34 -0400 Subject: [PATCH 3/5] Fix some brain-dead derps --- .../WayofTime/bloodmagic/item/ItemBoundPickaxe.java | 2 +- .../WayofTime/bloodmagic/item/ItemBoundShovel.java | 2 +- .../WayofTime/bloodmagic/item/ItemBoundSword.java | 2 +- .../WayofTime/bloodmagic/item/ItemBoundTool.java | 13 ++++++------- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java index bf8a0f3766..633b8e8844 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java @@ -98,7 +98,7 @@ protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, drops.add(new ItemStack(blockState.getBlock(), 1, blockState.getBlock().getMetaFromState(blockState))); else { NonNullList itemDrops = NonNullList.create(); - blockState.getBlock().getDrops(itemDrops, world, blockPos, world.getBlockState(blockPos), fortuneLvl); + blockState.getBlock().getDrops(itemDrops, world, blockPos, blockState, fortuneLvl); drops.addAll(itemDrops); } diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java index fa65c9137d..f089974cfd 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java @@ -84,7 +84,7 @@ protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, drops.add(new ItemStack(blockState.getBlock(), 1, blockState.getBlock().getMetaFromState(blockState))); else { NonNullList itemDrops = NonNullList.create(); - blockState.getBlock().getDrops(itemDrops, world, blockPos, world.getBlockState(blockPos), fortuneLvl); + blockState.getBlock().getDrops(itemDrops, world, blockPos, blockState, fortuneLvl); drops.addAll(itemDrops); } diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java index b7702657fe..ad86b56cc5 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java @@ -38,7 +38,7 @@ public ItemBoundSword() { setUnlocalizedName(BloodMagic.MODID + ".bound.sword"); setCreativeTab(BloodMagic.TAB_BM); - addPropertyOverride(new ResourceLocation("bloodmagic", "activated"), new IItemPropertyGetter() + addPropertyOverride(new ResourceLocation(BloodMagic.MODID, "activated"), new IItemPropertyGetter() { @SideOnly(Side.CLIENT) public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn) diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundTool.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundTool.java index 7c874a244a..e0b747924d 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundTool.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundTool.java @@ -30,13 +30,14 @@ import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import net.minecraftforge.items.ItemHandlerHelper; import javax.annotation.Nullable; import java.util.List; import java.util.Set; public class ItemBoundTool extends ItemTool implements IBindable, IActivatable { - public final int MAX_CHARGE_TIME = 30; + public static final int MAX_CHARGE_TIME = 30; protected final String tooltipBase; private final String name; @@ -46,7 +47,7 @@ public ItemBoundTool(String name, float damage, Set effectiveBlocks) { setCreativeTab(BloodMagic.TAB_BM); setHarvestLevel(name, 4); - addPropertyOverride(new ResourceLocation("bloodmagic", "activated"), new IItemPropertyGetter() + addPropertyOverride(new ResourceLocation(BloodMagic.MODID, "activated"), new IItemPropertyGetter() { @SideOnly(Side.CLIENT) public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn) @@ -55,7 +56,7 @@ public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLiv } }); - addPropertyOverride(new ResourceLocation("bloodmagic", "charge"), new IItemPropertyGetter() + addPropertyOverride(new ResourceLocation(BloodMagic.MODID, "charge"), new IItemPropertyGetter() { @SideOnly(Side.CLIENT) public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn) @@ -207,15 +208,13 @@ protected static void dropStacks(Multiset drops, World world, BlockPo int maxStackSize = stack.getItem().getItemStackLimit(stack); while (count >= maxStackSize) { - ItemStack s = stack.copy(); - s.setCount(maxStackSize); + ItemStack s = ItemHandlerHelper.copyStackWithSize(stack, maxStackSize); world.spawnEntity(new EntityItem(world, posToDrop.getX(), posToDrop.getY(), posToDrop.getZ(), s)); count -= maxStackSize; } if (count > 0) { - ItemStack s = stack.copy(); - s.setCount(count); + ItemStack s = ItemHandlerHelper.copyStackWithSize(stack, count); world.spawnEntity(new EntityItem(world, posToDrop.getX(), posToDrop.getY(), posToDrop.getZ(), s)); } } From ab76c61cc9c57b8db18f70e19dee51a8cba84b99 Mon Sep 17 00:00:00 2001 From: Arcaratus Date: Sun, 11 Mar 2018 20:16:00 -0400 Subject: [PATCH 4/5] ninja fix --- src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java index 633b8e8844..96537d9ddf 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java @@ -94,7 +94,7 @@ protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, float strengthVsBlock = getDestroySpeed(stack, blockState); if (strengthVsBlock > 1.1F && world.canMineBlockBody(player, blockPos)) { - if (silkTouch && blockState.getBlock().canSilkHarvest(world, blockPos, world.getBlockState(blockPos), player)) + if (silkTouch && blockState.getBlock().canSilkHarvest(world, blockPos, blockState, player)) drops.add(new ItemStack(blockState.getBlock(), 1, blockState.getBlock().getMetaFromState(blockState))); else { NonNullList itemDrops = NonNullList.create(); From af5b2e3e8cf433910abc607a24da6732f444d41c Mon Sep 17 00:00:00 2001 From: Arcaratus Date: Sun, 11 Mar 2018 20:17:23 -0400 Subject: [PATCH 5/5] ninja fix --- src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java | 2 +- src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java index 4dbf90f41b..c293943cc2 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java @@ -80,7 +80,7 @@ protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, float strengthVsBlock = getDestroySpeed(stack, blockState); if (strengthVsBlock > 1.1F || blockState.getBlock() instanceof BlockLeaves && world.canMineBlockBody(player, blockPos)) { - if (silkTouch && blockState.getBlock().canSilkHarvest(world, blockPos, world.getBlockState(blockPos), player)) + if (silkTouch && blockState.getBlock().canSilkHarvest(world, blockPos, blockState, player)) drops.add(new ItemStack(blockState.getBlock(), 1, blockState.getBlock().getMetaFromState(blockState))); else { NonNullList itemDrops = NonNullList.create(); diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java index f089974cfd..4c54e79646 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java @@ -80,7 +80,7 @@ protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, float strengthVsBlock = getDestroySpeed(stack, blockState); if (strengthVsBlock > 1.1F && world.canMineBlockBody(player, blockPos)) { - if (silkTouch && blockState.getBlock().canSilkHarvest(world, blockPos, world.getBlockState(blockPos), player)) + if (silkTouch && blockState.getBlock().canSilkHarvest(world, blockPos, blockState, player)) drops.add(new ItemStack(blockState.getBlock(), 1, blockState.getBlock().getMetaFromState(blockState))); else { NonNullList itemDrops = NonNullList.create();