From 225016e0306bd0dfa6235292b713cc0d07d2d5ea Mon Sep 17 00:00:00 2001 From: Arcaratus Date: Sun, 29 Nov 2015 19:04:50 -0500 Subject: [PATCH] Finished the Altar --- .../bloodmagic/altar/BloodAltar.java | 7 +- .../WayofTime/bloodmagic/api/Constants.java | 2 + .../bloodmagic/block/BlockBloodLight.java | 84 +++++++++++ .../bloodmagic/block/BlockCrystal.java | 21 +++ .../bloodmagic/item/ItemAltarMaker.java | 130 ++++++++++++++++++ .../item/block/ItemBlockCrystal.java | 24 ++++ .../bloodmagic/registry/ModBlocks.java | 6 + .../bloodmagic/registry/ModItems.java | 11 +- .../WayofTime/bloodmagic/tile/TileAltar.java | 41 ++++-- .../java/WayofTime/bloodmagic/util/Utils.java | 1 + .../bloodmagic/util/handler/EventHandler.java | 14 ++ 11 files changed, 326 insertions(+), 15 deletions(-) create mode 100644 src/main/java/WayofTime/bloodmagic/block/BlockBloodLight.java create mode 100644 src/main/java/WayofTime/bloodmagic/block/BlockCrystal.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/ItemAltarMaker.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/block/ItemBlockCrystal.java diff --git a/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java b/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java index 73a7b9ff..9af120bf 100644 --- a/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java +++ b/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java @@ -4,6 +4,7 @@ import WayofTime.bloodmagic.api.BlockStack; import WayofTime.bloodmagic.api.altar.*; import WayofTime.bloodmagic.block.BlockBloodRune; import WayofTime.bloodmagic.block.BlockBloodStoneBrick; +import WayofTime.bloodmagic.block.BlockCrystal; import WayofTime.bloodmagic.registry.ModBlocks; import net.minecraft.block.BlockBeacon; import net.minecraft.block.BlockGlowstone; @@ -131,9 +132,9 @@ public class BloodAltar { if (blockStack.getBlock() instanceof BlockBloodStoneBrick || (blockStack.getBlock() instanceof IAltarComponent && (((IAltarComponent) blockStack.getBlock()).getType(blockStack.getMeta()) == EnumAltarComponent.BLOODSTONE))) return true; -// if (altarComponent.getBlockStack().getBlock() == ModBlocks.crystal) -// if (blockStack.getBlock() instanceof BlockCrystal || (blockStack.getBlock() instanceof IAltarComponent && (((IAltarComponent) blockStack.getBlock()).getType(blockStack.getMeta()) == EnumAltarComponent.CRYSTAL))) -// return true; + if (altarComponent.getBlockStack().getBlock() == ModBlocks.crystal) + if (blockStack.getBlock() instanceof BlockCrystal || (blockStack.getBlock() instanceof IAltarComponent && (((IAltarComponent) blockStack.getBlock()).getType(blockStack.getMeta()) == EnumAltarComponent.CRYSTAL))) + return true; if (altarComponent.getBlockStack().getBlock() == Blocks.glowstone) if (blockStack.getBlock() instanceof BlockGlowstone || (blockStack.getBlock() instanceof IAltarComponent && (((IAltarComponent) blockStack.getBlock()).getType(blockStack.getMeta()) == EnumAltarComponent.GLOWSTONE))) diff --git a/src/main/java/WayofTime/bloodmagic/api/Constants.java b/src/main/java/WayofTime/bloodmagic/api/Constants.java index 7302a221..861b3ce8 100644 --- a/src/main/java/WayofTime/bloodmagic/api/Constants.java +++ b/src/main/java/WayofTime/bloodmagic/api/Constants.java @@ -48,6 +48,8 @@ public class Constants { public static final String ALTAR_ACCELERATION_UPGRADES = "accelerationUpgrades"; public static final String ALTAR_DEMON_BLOOD_DURATION = "demonBloodDuration"; public static final String ALTAR_COOLDOWN_AFTER_CRAFTING = "cooldownAfterCrafting"; + + public static final String ALTARMAKER_CURRENT_TIER = "currentTier"; } public static class Mod { diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockBloodLight.java b/src/main/java/WayofTime/bloodmagic/block/BlockBloodLight.java new file mode 100644 index 00000000..954bce5a --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/block/BlockBloodLight.java @@ -0,0 +1,84 @@ +package WayofTime.bloodmagic.block; + +import WayofTime.bloodmagic.BloodMagic; +import WayofTime.bloodmagic.api.Constants; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.Entity; +import net.minecraft.util.*; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import java.util.List; +import java.util.Random; + +public class BlockBloodLight extends Block { + + public BlockBloodLight() { + super(Material.cloth); + + setUnlocalizedName(Constants.Mod.MODID + ".bloodLight"); + setCreativeTab(BloodMagic.tabBloodMagic); + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public EnumWorldBlockLayer getBlockLayer() + { + return EnumWorldBlockLayer.CUTOUT; + } + + @Override + public boolean isFullCube() + { + return false; + } + + @Override + public int getLightValue() { + return 15; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean addDestroyEffects(World world, BlockPos pos, net.minecraft.client.particle.EffectRenderer effectRenderer) { + if (world.getBlockState(pos).getBlock() == this) { + Random random = new Random(); + float f = 1.0F; + float f1 = f * 0.6F + 0.4F; + float f2 = f * f * 0.7F - 0.5F; + float f3 = f * f * 0.6F - 0.7F; + effectRenderer.spawnEffectParticle(EnumParticleTypes.REDSTONE.getParticleID(), pos.getX() + 0.5D + random.nextGaussian() / 8, pos.getY() + 0.5D, pos.getZ() + 0.5D + random.nextGaussian() / 8, f1, f2, f3); + } + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public void randomDisplayTick(World worldIn, BlockPos pos, IBlockState state, Random rand) { + if (rand.nextInt(3) != 0) { + float f = 1.0F; + float f1 = f * 0.6F + 0.4F; + float f2 = f * f * 0.7F - 0.5F; + float f3 = f * f * 0.6F - 0.7F; + worldIn.spawnParticle(EnumParticleTypes.REDSTONE, pos.getX() + 0.5D + rand.nextGaussian() / 8, pos.getY() + 0.5D, pos.getZ() + 0.5D + rand.nextGaussian() / 8, f1, f2, f3); + } + } + + @Override + public void addCollisionBoxesToList(World worldIn, BlockPos pos, IBlockState state, AxisAlignedBB mask, List list, Entity collidingEntity) { + this.setBlockBounds(0.35F, 0.35F, 0.35F, 0.65F, 0.65F, 0.65F); + } + + @Override + public int quantityDropped(Random par1Random) { + return 0; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockCrystal.java b/src/main/java/WayofTime/bloodmagic/block/BlockCrystal.java new file mode 100644 index 00000000..74e9e9dc --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/block/BlockCrystal.java @@ -0,0 +1,21 @@ +package WayofTime.bloodmagic.block; + +import WayofTime.bloodmagic.BloodMagic; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.block.base.BlockString; +import net.minecraft.block.material.Material; + +public class BlockCrystal extends BlockString { + public static final String[] names = {"normal", "brick"}; + + public BlockCrystal() { + super(Material.rock, names); + + setUnlocalizedName(Constants.Mod.MODID + ".crystal."); + setCreativeTab(BloodMagic.tabBloodMagic); + setStepSound(soundTypeStone); + setHardness(2.0F); + setResistance(5.0F); + setHarvestLevel("pickaxe", 2); + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemAltarMaker.java b/src/main/java/WayofTime/bloodmagic/item/ItemAltarMaker.java new file mode 100644 index 00000000..24786f8d --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/ItemAltarMaker.java @@ -0,0 +1,130 @@ +package WayofTime.bloodmagic.item; + +import WayofTime.bloodmagic.BloodMagic; +import WayofTime.bloodmagic.altar.BloodAltar; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.api.altar.AltarComponent; +import WayofTime.bloodmagic.api.altar.EnumAltarTier; +import WayofTime.bloodmagic.api.altar.IAltarManipulator; +import WayofTime.bloodmagic.block.BlockAltar; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.BlockPos; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import java.util.List; + +public class ItemAltarMaker extends Item implements IAltarManipulator { + + private EnumAltarTier tierToBuild = EnumAltarTier.ONE; + + public ItemAltarMaker() { + super(); + setUnlocalizedName(Constants.Mod.MODID + ".altarMaker"); + setCreativeTab(BloodMagic.tabBloodMagic); + setMaxStackSize(1); + setFull3D(); + } + + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer playerIn, List tooltip, boolean advanced) { + tooltip.add(StatCollector.translateToLocal("tooltip.BloodMagic.currentTier") + " " + ((stack.getTagCompound() != null ? stack.getTagCompound().getInteger(Constants.NBT.ALTARMAKER_CURRENT_TIER) : 0) + 1)); + } + + @Override + public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) { + if (!player.capabilities.isCreativeMode || world.isRemote) return itemStack; + + if (itemStack.getTagCompound() == null) { + NBTTagCompound tag = new NBTTagCompound(); + itemStack.setTagCompound(tag); + itemStack.getTagCompound().setInteger(Constants.NBT.ALTARMAKER_CURRENT_TIER, 0); + } + if (player.isSneaking()) { + if (itemStack.getTagCompound().getInteger(Constants.NBT.ALTARMAKER_CURRENT_TIER) >= EnumAltarTier.MAXTIERS - 1) { + itemStack.getTagCompound().setInteger(Constants.NBT.ALTARMAKER_CURRENT_TIER, 0); + setTierToBuild(EnumAltarTier.values()[itemStack.getTagCompound().getInteger(Constants.NBT.ALTARMAKER_CURRENT_TIER)]); + player.addChatComponentMessage(new ChatComponentTranslation(StatCollector.translateToLocal("misc.altarMaker.setTier"), itemStack.getTagCompound().getInteger(Constants.NBT.ALTARMAKER_CURRENT_TIER) + 1)); + return itemStack; + } + else { + itemStack.getTagCompound().setInteger(Constants.NBT.ALTARMAKER_CURRENT_TIER, itemStack.getTagCompound().getInteger(Constants.NBT.ALTARMAKER_CURRENT_TIER) + 1); + setTierToBuild(EnumAltarTier.values()[itemStack.getTagCompound().getInteger(Constants.NBT.ALTARMAKER_CURRENT_TIER)]); + player.addChatComponentMessage(new ChatComponentTranslation(StatCollector.translateToLocal("misc.altarMaker.setTier"), itemStack.getTagCompound().getInteger(Constants.NBT.ALTARMAKER_CURRENT_TIER) + 1)); + return itemStack; + } + } + + MovingObjectPosition mop = getMovingObjectPositionFromPlayer(world, player, false); + if (mop == null || mop.typeOfHit == MovingObjectPosition.MovingObjectType.MISS || mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY) return itemStack; + + if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && world.getBlockState(mop.getBlockPos()).getBlock() instanceof BlockAltar) { + + player.addChatComponentMessage(new ChatComponentTranslation(StatCollector.translateToLocal("misc.altarMaker.building"), tierToBuild)); + buildAltar(world, mop.getBlockPos()); + + world.markBlockForUpdate(mop.getBlockPos()); + } + + return itemStack; + } + + public void setTierToBuild(EnumAltarTier tierToBuild) { + this.tierToBuild = tierToBuild; + } + + public void buildAltar(World world, BlockPos pos) { + + if (world.isRemote) return; + + if (tierToBuild == EnumAltarTier.ONE) { + return; + } + + for (AltarComponent altarComponent : tierToBuild.getAltarComponents()) { + BlockPos componentPos = pos.add(altarComponent.getOffset()); + IBlockState blockState = altarComponent.getBlockStack().getBlock().getStateFromMeta(altarComponent.getBlockStack().getMeta()); + + if (altarComponent.getBlockStack().getBlock().equals(Blocks.air)) + world.setBlockState(componentPos, Blocks.stonebrick.getStateFromMeta(0)); + else + world.setBlockState(componentPos, blockState); + + world.markBlockForUpdate(componentPos); + } + + world.markBlockForUpdate(pos); + } + + public String destroyAltar(EntityPlayer player) { + World world = player.worldObj; + if (world.isRemote) return ""; + + MovingObjectPosition mop = getMovingObjectPositionFromPlayer(world, player, false); + BlockPos pos = mop.getBlockPos(); + EnumAltarTier altarTier = BloodAltar.getAltarTier(world, pos); + + if (altarTier.equals(EnumAltarTier.ONE)) return "" + altarTier.toInt(); + else { + for (AltarComponent altarComponent : altarTier.getAltarComponents()) { + BlockPos componentPos = pos.add(altarComponent.getOffset()); + + world.setBlockToAir(componentPos); + world.markBlockForUpdate(componentPos); + } + } + + world.markBlockForUpdate(pos); + return "" + altarTier.toInt(); + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/block/ItemBlockCrystal.java b/src/main/java/WayofTime/bloodmagic/item/block/ItemBlockCrystal.java new file mode 100644 index 00000000..37cbb982 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/block/ItemBlockCrystal.java @@ -0,0 +1,24 @@ +package WayofTime.bloodmagic.item.block; + +import WayofTime.bloodmagic.block.BlockCrystal; +import net.minecraft.block.Block; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; + +public class ItemBlockCrystal extends ItemBlock { + + public ItemBlockCrystal(Block block) { + super(block); + setHasSubtypes(true); + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return super.getUnlocalizedName(stack) + BlockCrystal.names[stack.getItemDamage()]; + } + + @Override + public int getMetadata(int meta) { + return meta; + } +} \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModBlocks.java b/src/main/java/WayofTime/bloodmagic/registry/ModBlocks.java index 4f3b897e..34c82028 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModBlocks.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModBlocks.java @@ -20,6 +20,7 @@ public class ModBlocks { public static Block bloodRune; public static Block ritualController; public static Block ritualStone; + public static Block bloodLight; public static Block testSpellBlock; public static Block pedestal; public static Block teleposer; @@ -37,9 +38,11 @@ public class ModBlocks { bloodRune = registerBlock(new BlockBloodRune(), ItemBlockBloodRune.class); ritualController = registerBlock(new BlockRitualController(), ItemBlockRitualController.class); ritualStone = registerBlock(new BlockRitualStone(), ItemBlockRitualStone.class); + bloodLight = registerBlock(new BlockBloodLight()); testSpellBlock = registerBlock(new BlockTestSpellBlock()); pedestal = registerBlock(new BlockPedestal(), ItemBlockPedestal.class); teleposer = registerBlock(new BlockTeleposer()); + crystal = registerBlock(new BlockCrystal(), ItemBlockCrystal.class); bloodStoneBrick = registerBlock(new BlockBloodStoneBrick(), ItemBlockBloodStoneBrick.class); initTiles(); @@ -77,6 +80,9 @@ public class ModBlocks { renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(ritualStone), 6); renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(bloodStoneBrick), 0); renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(bloodStoneBrick), 1); + renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(crystal), 0); + renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(crystal), 1); + renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(bloodLight)); renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(pedestal), 0); renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(pedestal), 1); renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(teleposer)); diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModItems.java b/src/main/java/WayofTime/bloodmagic/registry/ModItems.java index 69d0706f..0013710a 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModItems.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModItems.java @@ -6,10 +6,7 @@ import WayofTime.bloodmagic.api.BloodMagicAPI; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.orb.BloodOrb; import WayofTime.bloodmagic.api.registry.OrbRegistry; -import WayofTime.bloodmagic.item.ItemActivationCrystal; -import WayofTime.bloodmagic.item.ItemBloodOrb; -import WayofTime.bloodmagic.item.ItemBucketEssence; -import WayofTime.bloodmagic.item.ItemSacrificialDagger; +import WayofTime.bloodmagic.item.*; import WayofTime.bloodmagic.item.armour.ItemLivingArmour; import WayofTime.bloodmagic.item.gear.ItemPackSacrifice; import WayofTime.bloodmagic.item.gear.ItemPackSelfSacrifice; @@ -47,6 +44,8 @@ public class ModItems { public static Item livingArmourLegs; public static Item livingArmourBoots; + public static Item altarMaker; + public static void init() { bloodOrb = registerItem(new ItemBloodOrb()); BloodMagicAPI.setOrbItem(bloodOrb); @@ -81,6 +80,8 @@ public class ModItems { livingArmourChest = registerItem(new ItemLivingArmour(1), "ItemLivingArmourChest"); livingArmourLegs = registerItem(new ItemLivingArmour(2), "ItemLivingArmourLegs"); livingArmourBoots = registerItem(new ItemLivingArmour(3), "ItemLivingArmourBoots"); + + altarMaker = registerItem(new ItemAltarMaker()); } public static void initRenders() { @@ -115,6 +116,8 @@ public class ModItems { renderHelper.itemRender(livingArmourChest); renderHelper.itemRender(livingArmourLegs); renderHelper.itemRender(livingArmourBoots); + + renderHelper.itemRender(altarMaker); } private static Item registerItem(Item item, String name) { diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileAltar.java b/src/main/java/WayofTime/bloodmagic/tile/TileAltar.java index e16be76e..2c1f7c9f 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileAltar.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileAltar.java @@ -28,7 +28,7 @@ public class TileAltar extends TileInventory implements IBloodAltar, ITickable, protected FluidStack fluidOutput = new FluidStack(BlockLifeEssence.getLifeEssence(), 0); protected FluidStack fluidInput = new FluidStack(BlockLifeEssence.getLifeEssence(), 0); private EnumAltarTier altarTier = EnumAltarTier.ONE; - private AltarUpgrade upgrade = new AltarUpgrade(); + private AltarUpgrade upgrade; private int capacity = FluidContainerRegistry.BUCKET_VOLUME * 10; private FluidStack fluid = new FluidStack(BloodMagicAPI.getLifeEssence(), 0); private int liquidRequired; //mB @@ -316,15 +316,40 @@ public class TileAltar extends TileInventory implements IBloodAltar, ITickable, EnumAltarTier tier = BloodAltar.getAltarTier(getWorld(), getPos()); this.altarTier = tier; - if (tier.equals(EnumAltarTier.ONE)) - upgrade = new AltarUpgrade(); - else - upgrade = BloodAltar.getUpgrades(getWorld(), pos, tier); + upgrade = BloodAltar.getUpgrades(getWorld(), pos, tier); - if (this.fluid.amount > this.capacity) - this.fluid.amount = this.capacity; + if (tier.equals(EnumAltarTier.ONE)) { + upgrade = null; + isUpgraded = false; + this.consumptionMultiplier = 0; + this.efficiencyMultiplier = 1; + this.sacrificeEfficiencyMultiplier = 0; + this.selfSacrificeEfficiencyMultiplier = 0; + this.capacityMultiplier = 1; + this.orbCapacityMultiplier = 1; + this.dislocationMultiplier = 1; + this.accelerationUpgrades = 0; + return; + } + else if (!tier.equals(EnumAltarTier.ONE) && upgrade != null) { + this.isUpgraded = true; + this.consumptionMultiplier = (float) (0.20 * upgrade.getSpeedCount()); + this.efficiencyMultiplier = (float) Math.pow(0.85, upgrade.getEfficiencyCount()); + this.sacrificeEfficiencyMultiplier = (float) (0.10 * upgrade.getSacrificeCount()); + this.selfSacrificeEfficiencyMultiplier = (float) (0.10 * upgrade.getSelfSacrificeCount()); + this.capacityMultiplier = (float) ((1 * Math.pow(1.10, upgrade.getBetterCapacityCount()) + 0.20 * upgrade.getCapacityCount())); + this.dislocationMultiplier = (float) (Math.pow(1.2, upgrade.getDisplacementCount())); + this.orbCapacityMultiplier = (float) (1 + 0.02 * upgrade.getOrbCapacityCount()); + this.capacity = (int) (FluidContainerRegistry.BUCKET_VOLUME * 10 * capacityMultiplier); + this.bufferCapacity = (int) (FluidContainerRegistry.BUCKET_VOLUME * 1 * capacityMultiplier); + this.accelerationUpgrades = upgrade.getAccelerationCount(); + } - getWorld().markBlockForUpdate(pos); + if (this.fluid.amount > this.capacity) this.fluid.amount = this.capacity; + if (this.fluidOutput.amount > this.bufferCapacity) this.fluidOutput.amount = this.bufferCapacity; + if (this.fluidInput.amount > this.bufferCapacity) this.fluidInput.amount = this.bufferCapacity; + + worldObj.markBlockForUpdate(pos); } public int fillMainTank(int amount) { diff --git a/src/main/java/WayofTime/bloodmagic/util/Utils.java b/src/main/java/WayofTime/bloodmagic/util/Utils.java index 10514c8a..2a0861a4 100644 --- a/src/main/java/WayofTime/bloodmagic/util/Utils.java +++ b/src/main/java/WayofTime/bloodmagic/util/Utils.java @@ -21,6 +21,7 @@ public class Utils { /** * Used for inserting an ItemStack with a stacksize of 1 to a tile's inventory at slot 0. + * Returns {@code true} if the ItemStack is inserted, {@code false} otherwise *

* EG: Block Altar * diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/EventHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/EventHandler.java index 371474b3..78b3e27d 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/EventHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/EventHandler.java @@ -1,15 +1,21 @@ package WayofTime.bloodmagic.util.handler; import WayofTime.bloodmagic.api.util.helper.PlayerHelper; +import WayofTime.bloodmagic.block.BlockAltar; +import WayofTime.bloodmagic.item.ItemAltarMaker; import WayofTime.bloodmagic.item.gear.ItemPackSacrifice; import WayofTime.bloodmagic.registry.ModBlocks; import WayofTime.bloodmagic.registry.ModItems; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.StatCollector; import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.event.entity.player.FillBucketEvent; +import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.fml.common.eventhandler.Event; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -55,4 +61,12 @@ public class EventHandler { event.result = result; event.setResult(Event.Result.ALLOW); } + + @SubscribeEvent + public void harvestEvent(PlayerEvent.HarvestCheck event) { + if (event.block != null && event.block instanceof BlockAltar && event.entityPlayer != null && event.entityPlayer instanceof EntityPlayerMP && event.entityPlayer.getCurrentEquippedItem() != null && event.entityPlayer.getCurrentEquippedItem().getItem() instanceof ItemAltarMaker) { + ItemAltarMaker altarMaker = (ItemAltarMaker) event.entityPlayer.getCurrentEquippedItem().getItem(); + event.entityPlayer.addChatComponentMessage(new ChatComponentTranslation(StatCollector.translateToLocal("misc.altarMaker.destroy"), altarMaker.destroyAltar(event.entityPlayer))); + } + } }