From 086027faf571fbbd815f268a30e9e1a688ab8b96 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Mon, 23 Feb 2015 18:45:32 -0500 Subject: [PATCH] Added Sacrificial Knife event --- build.properties | 4 +- .../api/event/SacrificeKnifeUsedEvent.java | 22 + .../bloodAltarUpgrade/UpgradedAltars.java | 2 +- .../common/items/SacrificialDagger.java | 32 +- .../common/items/routing/RoutingFocus.java | 2 +- .../rituals/RitualEffectItemRouting.java | 421 +++++------------- .../common/tileEntity/TEAltar.java | 14 +- .../assets/alchemicalwizardry/lang/en_US.lang | 1 + 8 files changed, 169 insertions(+), 329 deletions(-) create mode 100644 src/main/java/WayofTime/alchemicalWizardry/api/event/SacrificeKnifeUsedEvent.java diff --git a/build.properties b/build.properties index 7275cadc..8208ba99 100644 --- a/build.properties +++ b/build.properties @@ -1,5 +1,5 @@ # -#Fri Feb 20 07:40:39 EST 2015 +#Mon Feb 23 18:21:38 EST 2015 mod_name=BloodMagic forge_version=10.13.2.1232 ccc_version=1.0.4.29 @@ -9,4 +9,4 @@ package_group=com.wayoftime.bloodmagic mod_version=1.3.1Beta1 minetweaker_version=Dev-1.7.10-3.0.9B mc_version=1.7.10 -build_number=7 +build_number=9 diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/event/SacrificeKnifeUsedEvent.java b/src/main/java/WayofTime/alchemicalWizardry/api/event/SacrificeKnifeUsedEvent.java new file mode 100644 index 00000000..04acf352 --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/api/event/SacrificeKnifeUsedEvent.java @@ -0,0 +1,22 @@ +package WayofTime.alchemicalWizardry.api.event; + +import net.minecraft.entity.player.EntityPlayer; +import cpw.mods.fml.common.eventhandler.Cancelable; +import cpw.mods.fml.common.eventhandler.Event; + +@Cancelable +public class SacrificeKnifeUsedEvent extends Event +{ + public final EntityPlayer player; + public boolean shouldDrainHealth; + public boolean shouldFillAltar; + public final int healthDrained; + + public SacrificeKnifeUsedEvent(EntityPlayer player, boolean shouldDrainHealth, boolean shouldFillAltar, int hp) + { + this.player = player; + this.shouldDrainHealth = shouldDrainHealth; + this.shouldFillAltar = shouldFillAltar; + this.healthDrained = hp; + } +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/UpgradedAltars.java b/src/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/UpgradedAltars.java index 2f3a77b4..f36c0b3c 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/UpgradedAltars.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/UpgradedAltars.java @@ -171,7 +171,7 @@ public class UpgradedAltars public static AltarUpgradeComponent getUpgrades(World world, int x, int y, int z, int altarTier) { - if(!world.isRemote) + if(world.isRemote) { return null; } diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java index 3ec8eea6..c19c8573 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java @@ -1,10 +1,7 @@ package WayofTime.alchemicalWizardry.common.items; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import java.util.List; + import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -13,9 +10,14 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.DamageSource; import net.minecraft.util.StatCollector; import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.FakePlayer; - -import java.util.List; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.api.event.SacrificeKnifeUsedEvent; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; +import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; public class SacrificialDagger extends Item { @@ -56,7 +58,21 @@ public class SacrificialDagger extends Item { if (!par3EntityPlayer.capabilities.isCreativeMode) { - par3EntityPlayer.setHealth(par3EntityPlayer.getHealth() - 2); + SacrificeKnifeUsedEvent evt = new SacrificeKnifeUsedEvent(par3EntityPlayer, true, true, 2); + if(MinecraftForge.EVENT_BUS.post(evt)) + { + return par1ItemStack; + } + + if(evt.shouldDrainHealth) + { + par3EntityPlayer.setHealth(par3EntityPlayer.getHealth() - 2); + } + + if(!evt.shouldFillAltar) + { + return par1ItemStack; + } } if (par3EntityPlayer instanceof FakePlayer) diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/routing/RoutingFocus.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/routing/RoutingFocus.java index 83ff4cb9..32e456a7 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/items/routing/RoutingFocus.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/routing/RoutingFocus.java @@ -92,7 +92,7 @@ public class RoutingFocus extends Item public String getFocusDescription() { - return "An Enderpearl imbued with blood"; + return "tooltip.routingFocus.desc"; } @Override diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectItemRouting.java b/src/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectItemRouting.java index 5472b92c..74896fb7 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectItemRouting.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectItemRouting.java @@ -74,157 +74,110 @@ public class RitualEffectItemRouting extends RitualEffect return; } - for(int i=0; i<4; i++) - { - Int3 inputFocusChest = this.getInputBufferChestLocation(i); - TileEntity inputFocusInv = world.getTileEntity(x + inputFocusChest.xCoord, y + inputFocusChest.yCoord, z + inputFocusChest.zCoord); - if(inputFocusInv instanceof IInventory) - { - for(int ji=0; ji<((IInventory) inputFocusInv).getSizeInventory(); ji++) //Iterate through foci inventory - { - ItemStack inputFocusStack = ((IInventory) inputFocusInv).getStackInSlot(ji); - if(inputFocusStack != null && inputFocusStack.getItem() instanceof InputRoutingFocus) - { - InputRoutingFocus inputFocus = (InputRoutingFocus)inputFocusStack.getItem(); - TileEntity inputChest = world.getTileEntity(inputFocus.xCoord(inputFocusStack), inputFocus.yCoord(inputFocusStack), inputFocus.zCoord(inputFocusStack)); - if(inputChest instanceof IInventory) - { - IInventory inputChestInventory = (IInventory)inputChest; - ForgeDirection syphonDirection = inputFocus.getSetDirection(inputFocusStack); - boolean[] canSyphonList = new boolean[inputChestInventory.getSizeInventory()]; - if(inputChest instanceof ISidedInventory) - { - int[] validSlots = ((ISidedInventory) inputChest).getAccessibleSlotsFromSide(syphonDirection.ordinal()); - for(int in : validSlots) - { - canSyphonList[in] = true; - } - }else - { - for(int ni=0; ni