diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java index f4b092e0fd..c293943cc2 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, blockState, 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..96537d9ddf 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, blockState, 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, blockState, 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..4c54e79646 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, blockState, 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, blockState, 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..ad86b56cc5 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.MODID, "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..e0b747924d 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,25 @@ 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 net.minecraftforge.items.ItemHandlerHelper; -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 static 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 +47,24 @@ public ItemBoundTool(String name, float damage, Set effectiveBlocks) { setCreativeTab(BloodMagic.TAB_BM); setHarvestLevel(name, 4); + addPropertyOverride(new ResourceLocation(BloodMagic.MODID, "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.MODID, "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 +95,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 +135,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 +193,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 +201,35 @@ 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 = ItemHandlerHelper.copyStackWithSize(stack, 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 = ItemHandlerHelper.copyStackWithSize(stack, 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 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 0000000000..f92b7338d4 Binary files /dev/null and b/src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_0.png differ 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 0000000000..e83e72e59b Binary files /dev/null and b/src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_1.png differ diff --git a/src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_2.png b/src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_2.png new file mode 100644 index 0000000000..93bb60014d Binary files /dev/null and b/src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_2.png differ 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 0000000000..5ad79db655 Binary files /dev/null and b/src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_3.png differ 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 0000000000..4f02108fa5 Binary files /dev/null and b/src/main/resources/assets/bloodmagic/textures/items/boundpickaxe_activated_4.png differ