From d439ac92fce36a58c4920d000b8fb3d84bd16386 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Sun, 30 Nov 2014 17:56:10 -0500 Subject: [PATCH] More demon village tweaks, adding more event functionality --- build.properties | 6 ++-- .../AlchemicalWizardry.java | 2 +- .../BloodMagicConfiguration.java | 28 +++++++++---------- .../api/event/ItemDrainInContainerEvent.java | 15 ++++++++++ .../api/rituals/Rituals.java | 10 +++---- .../api/soulNetwork/SoulNetworkHandler.java | 20 +++++++++++++ .../common/block/BlockTeleposer.java | 3 ++ .../tileEntity/TEDemonPortal.java | 7 ++++- .../common/items/EnergyBattery.java | 3 +- .../common/items/EnergyItems.java | 1 + .../common/items/sigil/DivinationSigil.java | 5 ++++ .../tileEntity/TEAlchemicCalcinator.java | 6 +++- .../common/tileEntity/TEWritingTable.java | 6 ++-- src/main/resources/mcmod.info | 2 +- 14 files changed, 83 insertions(+), 31 deletions(-) create mode 100644 src/main/java/WayofTime/alchemicalWizardry/api/event/ItemDrainInContainerEvent.java diff --git a/build.properties b/build.properties index d6f241af..4dd83b6a 100644 --- a/build.properties +++ b/build.properties @@ -1,12 +1,12 @@ # -#Sat Nov 22 10:17:06 EST 2014 +#Sat Nov 29 10:45:33 EST 2014 mod_name=BloodMagic forge_version=10.13.2.1232 ccc_version=1.0.4.29 nei_version=1.0.3.64 //=Dependency Information package_group=com.wayoftime.bloodmagic -mod_version=1.2.1a +mod_version=1.2.1b minetweaker_version=Dev-1.7.10-3.0.9B -mc_version=1.7.10 build_number=2 +mc_version=1.7.10 diff --git a/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java b/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java index 4b4a9158..250f6786 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java +++ b/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java @@ -250,7 +250,7 @@ import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; -@Mod(modid = "AWWayofTime", name = "AlchemicalWizardry", version = "v1.2.1a", guiFactory = "WayofTime.alchemicalWizardry.client.gui.ConfigGuiFactory") +@Mod(modid = "AWWayofTime", name = "AlchemicalWizardry", version = "v1.2.1b", guiFactory = "WayofTime.alchemicalWizardry.client.gui.ConfigGuiFactory") public class AlchemicalWizardry { diff --git a/src/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java b/src/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java index 575b7640..9a306803 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java +++ b/src/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java @@ -12,8 +12,6 @@ import net.minecraftforge.common.config.Configuration; import WayofTime.alchemicalWizardry.api.rituals.Rituals; import WayofTime.alchemicalWizardry.client.renderer.ColourThreshold; import WayofTime.alchemicalWizardry.client.renderer.RenderHelper; -import WayofTime.alchemicalWizardry.common.demonVillage.DemonVillagePath; -import WayofTime.alchemicalWizardry.common.demonVillage.tileEntity.TEDemonPortal; import WayofTime.alchemicalWizardry.common.items.BoundArmour; import WayofTime.alchemicalWizardry.common.summoning.meteor.MeteorParadigm; import cpw.mods.fml.common.FMLCommonHandler; @@ -135,19 +133,19 @@ public class BloodMagicConfiguration AlchemicalWizardry.ritualDisabledVeilOfEvil = config.get("Ritual Blacklist", "Veil of Evil", false).getBoolean(false); AlchemicalWizardry.ritualDisabledFullStomach = config.get("Ritual Blacklist", "Requiem of the Satiated Stomach", false).getBoolean(false); - String tempDemonConfigs = "Temp Demon Configs"; - TEDemonPortal.buildingGridDelay = config.get(tempDemonConfigs, "Building Grid Delay", 25).getInt(); - TEDemonPortal.roadGridDelay = config.get(tempDemonConfigs, "Road Grid Delay", 10).getInt(); - TEDemonPortal.demonHoardDelay = config.get(tempDemonConfigs, "Demon Hoard Delay", 40).getInt(); - TEDemonPortal.demonRoadChance = (float)(config.get(tempDemonConfigs, "Demon Road Chance", 0.6f).getDouble()); - TEDemonPortal.demonHouseChance = (float)(config.get(tempDemonConfigs, "Demon House Chance", 0.6f).getDouble()); - TEDemonPortal.demonPortalChance = (float)(config.get(tempDemonConfigs, "Demon Portal Chance", 0.5f).getDouble()); - TEDemonPortal.demonHoardChance = (float)(config.get(tempDemonConfigs, "Demon Hoard Chance", 1.0f).getDouble()); - TEDemonPortal.portalTickRate = (float)(config.get(tempDemonConfigs, "Portal Tick Rate", 0.1f).getDouble()); - - DemonVillagePath.canGoDown = config.get(tempDemonConfigs, "canRoadGoDown", true).getBoolean(); - DemonVillagePath.tunnelIfObstructed = config.get(tempDemonConfigs, "tunnelIfObstructed", false).getBoolean(); - DemonVillagePath.createBridgeInAirIfObstructed = config.get(tempDemonConfigs, "createBridgeInAirIfObstructed", false).getBoolean(); +// String tempDemonConfigs = "Temp Demon Configs"; +// TEDemonPortal.buildingGridDelay = config.get(tempDemonConfigs, "Building Grid Delay", 25).getInt(); +// TEDemonPortal.roadGridDelay = config.get(tempDemonConfigs, "Road Grid Delay", 10).getInt(); +// TEDemonPortal.demonHoardDelay = config.get(tempDemonConfigs, "Demon Hoard Delay", 40).getInt(); +// TEDemonPortal.demonRoadChance = (float)(config.get(tempDemonConfigs, "Demon Road Chance", 0.6f).getDouble()); +// TEDemonPortal.demonHouseChance = (float)(config.get(tempDemonConfigs, "Demon House Chance", 0.6f).getDouble()); +// TEDemonPortal.demonPortalChance = (float)(config.get(tempDemonConfigs, "Demon Portal Chance", 0.5f).getDouble()); +// TEDemonPortal.demonHoardChance = (float)(config.get(tempDemonConfigs, "Demon Hoard Chance", 1.0f).getDouble()); +// TEDemonPortal.portalTickRate = (float)(config.get(tempDemonConfigs, "Portal Tick Rate", 0.1f).getDouble()); +// +// DemonVillagePath.canGoDown = config.get(tempDemonConfigs, "canRoadGoDown", true).getBoolean(); +// DemonVillagePath.tunnelIfObstructed = config.get(tempDemonConfigs, "tunnelIfObstructed", false).getBoolean(); +// DemonVillagePath.createBridgeInAirIfObstructed = config.get(tempDemonConfigs, "createBridgeInAirIfObstructed", false).getBoolean(); BoundArmour.tryComplexRendering = config.get("WimpySettings", "UseFancyBoundArmour", true).getBoolean(true); diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/event/ItemDrainInContainerEvent.java b/src/main/java/WayofTime/alchemicalWizardry/api/event/ItemDrainInContainerEvent.java new file mode 100644 index 00000000..5a81c1d2 --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/api/event/ItemDrainInContainerEvent.java @@ -0,0 +1,15 @@ +package WayofTime.alchemicalWizardry.api.event; + +import net.minecraft.item.ItemStack; +import cpw.mods.fml.common.eventhandler.Cancelable; + +@Cancelable +public class ItemDrainInContainerEvent extends SoulNetworkEvent +{ + public ItemStack stack; + public ItemDrainInContainerEvent(ItemStack stack, String ownerNetwork, int drainAmount) + { + super(ownerNetwork, drainAmount); + this.stack = stack; + } +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/rituals/Rituals.java b/src/main/java/WayofTime/alchemicalWizardry/api/rituals/Rituals.java index 4dcbcef4..37cadaef 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/api/rituals/Rituals.java +++ b/src/main/java/WayofTime/alchemicalWizardry/api/rituals/Rituals.java @@ -17,12 +17,12 @@ import cpw.mods.fml.common.eventhandler.Event; public class Rituals { - private int crystalLevel; - private int actCost; - private RitualEffect effect; - private String name; + public final int crystalLevel; + public final int actCost; + public final RitualEffect effect; + public final String name; - private MRSRenderer customRenderer; + public final MRSRenderer customRenderer; public static Map ritualMap = new HashMap(); public static List keyList = new LinkedList(); diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/soulNetwork/SoulNetworkHandler.java b/src/main/java/WayofTime/alchemicalWizardry/api/soulNetwork/SoulNetworkHandler.java index ce900aa1..1e3c5567 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/api/soulNetwork/SoulNetworkHandler.java +++ b/src/main/java/WayofTime/alchemicalWizardry/api/soulNetwork/SoulNetworkHandler.java @@ -13,11 +13,13 @@ import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import WayofTime.alchemicalWizardry.api.event.AddToNetworkEvent; import WayofTime.alchemicalWizardry.api.event.ItemBindEvent; +import WayofTime.alchemicalWizardry.api.event.ItemDrainInContainerEvent; import WayofTime.alchemicalWizardry.api.event.ItemDrainNetworkEvent; import com.mojang.authlib.GameProfile; import cpw.mods.fml.common.eventhandler.Event; +import cpw.mods.fml.common.eventhandler.Event.Result; public class SoulNetworkHandler { @@ -33,6 +35,24 @@ public class SoulNetworkHandler gameProfile = server.func_152358_ax().func_152652_a(uuid); return null; } + + public static boolean syphonFromNetworkWhileInContainer(ItemStack ist, int damageToBeDone) + { + String ownerName = ""; + if (ist.getTagCompound() != null && !(ist.getTagCompound().getString("ownerName").equals(""))) + { + ownerName = ist.getTagCompound().getString("ownerName"); + } + + ItemDrainInContainerEvent event = new ItemDrainInContainerEvent(ist, ownerName, damageToBeDone); + + if(MinecraftForge.EVENT_BUS.post(event) || event.getResult() == Result.DENY) + { + return false; + } + + return syphonFromNetwork(event.ownerNetwork, event.drainAmount) >= damageToBeDone; + } public static int syphonFromNetwork(ItemStack ist, int damageToBeDone) { diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/block/BlockTeleposer.java b/src/main/java/WayofTime/alchemicalWizardry/common/block/BlockTeleposer.java index e3ef6f2c..8c397009 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/block/BlockTeleposer.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/block/BlockTeleposer.java @@ -187,6 +187,9 @@ public class BlockTeleposer extends BlockContainer int metaI = worldI.getBlockMetadata(xi, yi, zi); int metaF = worldF.getBlockMetadata(xf, yf, zf); + + //TODO Teleposer event + worldI.playSoundEffect(xi, yi, zi, "mob.endermen.portal", 1.0F, 1.0F); worldF.playSoundEffect(xf, yf, zf, "mob.endermen.portal", 1.0F, 1.0F); diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/tileEntity/TEDemonPortal.java b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/tileEntity/TEDemonPortal.java index 635b38de..957e3bee 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/tileEntity/TEDemonPortal.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/tileEntity/TEDemonPortal.java @@ -43,7 +43,7 @@ import com.google.gson.GsonBuilder; public class TEDemonPortal extends TileEntity { - boolean printDebug = false; + public static boolean printDebug = false; public static int buildingGridDelay = 25; public static int roadGridDelay = 10; @@ -334,11 +334,14 @@ public class TEDemonPortal extends TileEntity this.incrementPoints(); this.assignPoints(); + if(printDebug) AlchemicalWizardry.logger.info("Roads: " + roadCooldown + " Buildings: " + houseCooldown); if(buildingStage >= 0 && buildingStage <=2) { + if(printDebug) AlchemicalWizardry.logger.info("BuildingStage = " + buildingStage); + if(printDebug) AlchemicalWizardry.logger.info("Tier = " + this.tier); this.createPortalBuilding(buildingStage, nextDemonPortalName, tier); buildingStage++; @@ -1138,6 +1141,7 @@ public class TEDemonPortal extends TileEntity public int createPortalBuilding(int buildingTier) //TODO Telepose block next time, then build the new building. { + if(printDebug) AlchemicalWizardry.logger.info("Hello, I am here!"); int x = 0; int z = 0; @@ -1345,6 +1349,7 @@ public class TEDemonPortal extends TileEntity } } else { + if(printDebug) AlchemicalWizardry.logger.info("This ISN'T valid!"); } } diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/EnergyBattery.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/EnergyBattery.java index 9ac62979..6ec9e930 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/items/EnergyBattery.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/EnergyBattery.java @@ -5,6 +5,7 @@ import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; import WayofTime.alchemicalWizardry.api.items.interfaces.IBindable; import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb; import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; +import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -75,7 +76,7 @@ public class EnergyBattery extends Item implements ArmourUpgrade, IBindable, IBl return par1ItemStack; } - EnergyItems.addEssenceToMaximum(itemTag.getString("ownerName"), 200, this.getMaxEssence()); + SoulNetworkHandler.addCurrentEssenceToMaximum(itemTag.getString("ownerName"), 200, this.getMaxEssence()); EnergyItems.hurtPlayer(par3EntityPlayer, 200); return par1ItemStack; } diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/EnergyItems.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/EnergyItems.java index 1c182251..2bd0dde0 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/items/EnergyItems.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/EnergyItems.java @@ -83,6 +83,7 @@ public class EnergyItems extends Item implements IBindable return true; } + @Deprecated public static boolean syphonWhileInContainer(ItemStack ist, int damageToBeDone) { if (ist.getTagCompound() != null && !(ist.getTagCompound().getString("ownerName").equals(""))) diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/sigil/DivinationSigil.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/sigil/DivinationSigil.java index 8c99a5ad..38bc3872 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/items/sigil/DivinationSigil.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/sigil/DivinationSigil.java @@ -62,6 +62,11 @@ public class DivinationSigil extends Item implements ArmourUpgrade, IReagentMani { return par1ItemStack; } + + if(!EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, 0)) + { + return par1ItemStack; + } NBTTagCompound itemTag = par1ItemStack.stackTagCompound; diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEAlchemicCalcinator.java b/src/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEAlchemicCalcinator.java index 0cd9c5ac..204ef6ec 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEAlchemicCalcinator.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEAlchemicCalcinator.java @@ -151,7 +151,11 @@ public class TEAlchemicCalcinator extends TEReagentConduit implements IInventory return; } - SoulNetworkHandler.syphonFromNetwork(orbStack, lpPerTick); + if(!SoulNetworkHandler.syphonFromNetworkWhileInContainer(orbStack, lpPerTick)) + { + return; + } + progress++; if (worldObj.getWorldTime() % 4 == 0) diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEWritingTable.java b/src/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEWritingTable.java index ba5ad7d4..2cdf3435 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEWritingTable.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEWritingTable.java @@ -17,13 +17,13 @@ import WayofTime.alchemicalWizardry.api.alchemy.AlchemicalPotionCreationHandler; import WayofTime.alchemicalWizardry.api.alchemy.AlchemyRecipe; import WayofTime.alchemicalWizardry.api.alchemy.AlchemyRecipeRegistry; import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb; +import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; import WayofTime.alchemicalWizardry.common.IBindingAgent; import WayofTime.alchemicalWizardry.common.ICatalyst; import WayofTime.alchemicalWizardry.common.IFillingAgent; import WayofTime.alchemicalWizardry.common.NewPacketHandler; import WayofTime.alchemicalWizardry.common.alchemy.CombinedPotionRegistry; import WayofTime.alchemicalWizardry.common.alchemy.ICombinationalCatalyst; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; import WayofTime.alchemicalWizardry.common.items.potion.AlchemyFlask; import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; @@ -737,7 +737,7 @@ public class TEWritingTable extends TileEntity implements IInventory, ISidedInve if (getStackInSlot(6) == null) { - if (!EnergyItems.syphonWhileInContainer(getStackInSlot(0), amountUsed * acceleration)) + if (!SoulNetworkHandler.syphonFromNetworkWhileInContainer(getStackInSlot(0), amountUsed * acceleration)) { return; } @@ -775,7 +775,7 @@ public class TEWritingTable extends TileEntity implements IInventory, ISidedInve SpellHelper.sendIndexedParticleToAllAround(worldObj, xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, 1, xCoord, yCoord, zCoord); } - if (!EnergyItems.syphonWhileInContainer(getStackInSlot(0), amountUsed * acceleration)) + if (!SoulNetworkHandler.syphonFromNetworkWhileInContainer(getStackInSlot(0), amountUsed * acceleration)) { return; } diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 49f68579..e83102bb 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,7 +3,7 @@ "modid": "AWWayofTime", "name": "Blood Magic: Alchemical Wizardry", "description": "Rituals, spells, and more!", - "version": "v1.2.0b(1.7.10)", + "version": "v1.2.1b(1.7.10)", "mcversion": "1.7.10", "url": "http://www.minecraftforum.net/topic/1899223-", "updateUrl": "",