diff --git a/build.gradle b/build.gradle index 9b1252e9..35d2e817 100644 --- a/build.gradle +++ b/build.gradle @@ -62,6 +62,9 @@ dependencies { minecraft { version = config.mc_version + "-" + config.forge_version runDir = "run" + + replaceIn "GAPIChecker.java" + replace "@VERSION@", config.guideapi_version } processResources { diff --git a/build.properties b/build.properties index 9949555a..1f1fd8ea 100644 --- a/build.properties +++ b/build.properties @@ -1,5 +1,3 @@ -# -#Thu Jun 04 17:28:17 EDT 2015 mod_name=BloodMagic forge_version=10.13.4.1448-1.7.10 ccc_version=1.0.4.29 @@ -9,7 +7,5 @@ guideapi_version=1.0.1-20 package_group=com.wayoftime.bloodmagic mod_version=1.3.3 minetweaker_version=Dev-1.7.10-3.0.9B -build_number=5 mc_version=1.7.10 build_number=5 - diff --git a/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java b/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java index 9f8800d0..7c14e2b3 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java +++ b/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java @@ -1105,6 +1105,8 @@ public class AlchemicalWizardry GameRegistry.addRecipe(new ItemStack(ModBlocks.blockCrystalBelljar), "GGG", "GcG", "www", 'G', glassStack, 'c', concentratedCatalystStack, 'w', new ItemStack(Blocks.wooden_slab, 1, craftingConstant)); GameRegistry.addRecipe(new ItemStack(ModBlocks.blockReagentConduit), "isi", "scs", "isi", 'c', concentratedCatalystStack, 's', stringStack, 'i', ironIngotStack); + GameRegistry.addRecipe(new ItemStack(ModItems.ritualDismantler), "a a", " b ", 'a', Blocks.redstone_torch, 'b', ModItems.itemRitualDiviner); + GameRegistry.addShapelessRecipe(new ItemStack(Items.dye, 5, 15), fracturedBoneStack); GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.itemSigilOfSupression), "wtl", "wvl", "wol", 'v', new ItemStack(ModItems.voidSigil), 't', new ItemStack(ModBlocks.blockTeleposer), 'o', masterBloodOrbStack, 'l', lavaBucketStack, 'w', waterBucketStack)); diff --git a/src/main/java/WayofTime/alchemicalWizardry/ModItems.java b/src/main/java/WayofTime/alchemicalWizardry/ModItems.java index 5db85055..39f72c93 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/ModItems.java +++ b/src/main/java/WayofTime/alchemicalWizardry/ModItems.java @@ -1,52 +1,12 @@ package WayofTime.alchemicalWizardry; +import WayofTime.alchemicalWizardry.common.items.*; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Items; import net.minecraft.item.Item; import WayofTime.alchemicalWizardry.api.items.ItemSpellMultiTool; import WayofTime.alchemicalWizardry.api.spell.SpellParadigmTool; import WayofTime.alchemicalWizardry.common.book.ItemBMBook; -import WayofTime.alchemicalWizardry.common.items.AWBaseItems; -import WayofTime.alchemicalWizardry.common.items.ActivationCrystal; -import WayofTime.alchemicalWizardry.common.items.AirScribeTool; -import WayofTime.alchemicalWizardry.common.items.ApprenticeBloodOrb; -import WayofTime.alchemicalWizardry.common.items.ArchmageBloodOrb; -import WayofTime.alchemicalWizardry.common.items.ArmourInhibitor; -import WayofTime.alchemicalWizardry.common.items.BlankSpell; -import WayofTime.alchemicalWizardry.common.items.BloodShard; -import WayofTime.alchemicalWizardry.common.items.BoundAxe; -import WayofTime.alchemicalWizardry.common.items.BoundPickaxe; -import WayofTime.alchemicalWizardry.common.items.BoundShovel; -import WayofTime.alchemicalWizardry.common.items.CheatyItem; -import WayofTime.alchemicalWizardry.common.items.CreativeDagger; -import WayofTime.alchemicalWizardry.common.items.DaggerOfSacrifice; -import WayofTime.alchemicalWizardry.common.items.DawnScribeTool; -import WayofTime.alchemicalWizardry.common.items.DemonPlacer; -import WayofTime.alchemicalWizardry.common.items.DemonicTelepositionFocus; -import WayofTime.alchemicalWizardry.common.items.DuskScribeTool; -import WayofTime.alchemicalWizardry.common.items.EarthScribeTool; -import WayofTime.alchemicalWizardry.common.items.EnergyBattery; -import WayofTime.alchemicalWizardry.common.items.EnergyBazooka; -import WayofTime.alchemicalWizardry.common.items.EnergyBlast; -import WayofTime.alchemicalWizardry.common.items.EnergySword; -import WayofTime.alchemicalWizardry.common.items.EnhancedTelepositionFocus; -import WayofTime.alchemicalWizardry.common.items.FireScribeTool; -import WayofTime.alchemicalWizardry.common.items.ItemAlchemyBase; -import WayofTime.alchemicalWizardry.common.items.ItemBloodLetterPack; -import WayofTime.alchemicalWizardry.common.items.ItemComplexSpellCrystal; -import WayofTime.alchemicalWizardry.common.items.ItemComponents; -import WayofTime.alchemicalWizardry.common.items.ItemDiabloKey; -import WayofTime.alchemicalWizardry.common.items.ItemIncense; -import WayofTime.alchemicalWizardry.common.items.ItemRitualDiviner; -import WayofTime.alchemicalWizardry.common.items.LavaCrystal; -import WayofTime.alchemicalWizardry.common.items.LifeBucket; -import WayofTime.alchemicalWizardry.common.items.MagicianBloodOrb; -import WayofTime.alchemicalWizardry.common.items.MasterBloodOrb; -import WayofTime.alchemicalWizardry.common.items.ReinforcedTelepositionFocus; -import WayofTime.alchemicalWizardry.common.items.SacrificialDagger; -import WayofTime.alchemicalWizardry.common.items.TelepositionFocus; -import WayofTime.alchemicalWizardry.common.items.TranscendentBloodOrb; -import WayofTime.alchemicalWizardry.common.items.WaterScribeTool; import WayofTime.alchemicalWizardry.common.items.armour.BoundArmour; import WayofTime.alchemicalWizardry.common.items.armour.OmegaArmourEarth; import WayofTime.alchemicalWizardry.common.items.armour.OmegaArmourFire; @@ -242,6 +202,8 @@ public class ModItems public static Item itemIncense; + public static Item ritualDismantler; + public static void init() { weakBloodOrb = new EnergyBattery(5000).setUnlocalizedName("weakBloodOrb"); @@ -370,6 +332,8 @@ public class ModItems outputRoutingFocus = new OutputRoutingFocus().setUnlocalizedName("outputRoutingFocus"); itemIncense = new ItemIncense().setUnlocalizedName("bloodMagicIncenseItem"); + + ritualDismantler = new ItemRitualDismantler().setUnlocalizedName("ritualDismantler"); } public static void registerItems() @@ -503,5 +467,6 @@ public class ModItems GameRegistry.registerItem(ModItems.outputRoutingFocus, "outputRoutingFocus"); GameRegistry.registerItem(ModItems.itemIncense, "bloodMagicIncenseItem"); + GameRegistry.registerItem(ModItems.ritualDismantler, "ritualDismantler"); } } diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/block/BlockSocket.java b/src/main/java/WayofTime/alchemicalWizardry/common/block/BlockSocket.java index cfc79508..a3a10951 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/block/BlockSocket.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/block/BlockSocket.java @@ -85,15 +85,22 @@ public class BlockSocket extends BlockContainer newItem.stackSize = 1; --playerItem.stackSize; tileEntity.setInventorySlotContents(0, newItem); + return true; } - } else if (tileEntity.getStackInSlot(0) != null && playerItem == null) + else + { + return false; + } + } + else if (tileEntity.getStackInSlot(0) != null && playerItem == null) { player.inventory.addItemStackToInventory(tileEntity.getStackInSlot(0)); tileEntity.setInventorySlotContents(0, null); tileEntity.setActive(); + return true; } world.markBlockForUpdate(x, y, z); - return true; + return false; } @Override diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/commands/CommandSN.java b/src/main/java/WayofTime/alchemicalWizardry/common/commands/CommandSN.java index 58451a17..5f96be2d 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/commands/CommandSN.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/commands/CommandSN.java @@ -13,25 +13,30 @@ public class CommandSN extends CommandBase { public CommandSN() {} + @Override public String getCommandName() { return "soulnetwork"; } + @Override public int getRequiredPermissionLevel() { return 2; } + @Override public String getCommandUsage(ICommandSender icommandsender) { return "commands.soulnetwork.usage"; } + @Override public void processCommand(ICommandSender icommandsender, String[] astring) { EntityPlayerMP targetPlayer = getPlayer(icommandsender, astring[0]); String owner = targetPlayer.getDisplayName(); + EntityPlayerMP proxyPlayerName = getPlayer(icommandsender, astring[0]); if (astring.length >= 2 && astring.length <= 3) { @@ -83,6 +88,12 @@ public class CommandSN extends CommandBase SoulNetworkHandler.addCurrentEssenceToMaximum(owner, fillAmount, fillAmount); func_152373_a(icommandsender, this, "commands.soulnetwork.fillMax.success", owner); } + else if ("create".equalsIgnoreCase(astring[1])) + { + int orbTier = parseIntBounded(icommandsender, astring[2], 1, 6); + SoulNetworkHandler.setMaxOrbToMax(proxyPlayerName.getDisplayName(), orbTier); + func_152373_a(icommandsender, this, "commands.soulnetwork.create.success", owner, orbTier); + } else { throw new CommandException("commands.soulnetwork.notACommand"); @@ -98,6 +109,7 @@ public class CommandSN extends CommandBase } } + @Override public List addTabCompletionOptions(ICommandSender iCommandSender, String[] astring) { if (astring.length == 1) @@ -106,7 +118,7 @@ public class CommandSN extends CommandBase } else if (astring.length == 2) { - return getListOfStringsMatchingLastWord(astring, "add", "subtract", "fill", "empty", "get"); + return getListOfStringsMatchingLastWord(astring, "add", "subtract", "fill", "empty", "get", "fillMax", "create"); } return null; @@ -117,6 +129,7 @@ public class CommandSN extends CommandBase return MinecraftServer.getServer().getAllUsernames(); } + @Override public boolean isUsernameIndex(String[] astring, int par2) { return par2 == 0; diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemRitualDismantler.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemRitualDismantler.java new file mode 100644 index 00000000..dededdf6 --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemRitualDismantler.java @@ -0,0 +1,101 @@ +package WayofTime.alchemicalWizardry.common.items; + +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.ModBlocks; +import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; +import WayofTime.alchemicalWizardry.api.rituals.Rituals; +import WayofTime.alchemicalWizardry.common.block.RitualStone; +import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +import java.util.List; + +public class ItemRitualDismantler extends EnergyItems +{ + public ItemRitualDismantler() + { + super(); + setMaxStackSize(1); + setCreativeTab(AlchemicalWizardry.tabBloodMagic); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) + { + this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:ritual_dismantler"); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List par3List, boolean x) + { + par3List.add(StatCollector.translateToLocal("tooltip.dismatler.desc")); + par3List.add(StatCollector.translateToLocal("tooltip.owner.currentowner") + " " + stack.getTagCompound().getString("ownerName")); + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int par7, float par8, float par9, float par10) + { + return EnergyItems.checkAndSetItemOwner(stack, player) && breakRitualStoneAtMasterStone(stack, player, world, x, y, z); + } + + public boolean breakRitualStoneAtMasterStone(ItemStack stack, EntityPlayer player, World world, int x, int y, int z) + { + ItemStack[] playerInventory = player.inventory.mainInventory; + TileEntity tileEntity = world.getTileEntity(x, y, z); + + if (tileEntity instanceof TEMasterStone) + { + TEMasterStone masterStone = (TEMasterStone) tileEntity; + int direction = masterStone.getDirection(); + int freeSpace = -1; + + List ritualList = Rituals.getRitualList(masterStone.getCurrentRitual()); + if (ritualList == null) + { + return false; + } + + for (int i = 0; i < playerInventory.length; i++) + { + if (playerInventory[i] == null) + { + freeSpace = i; + break; + } + } + + for (RitualComponent rc : ritualList) + { + if (!world.isAirBlock(x + rc.getX(direction), y + rc.getY(), z + rc.getZ(direction)) && world.getBlock(x + rc.getX(direction), y + rc.getY(), z + rc.getZ(direction)) instanceof RitualStone) + { + if (freeSpace >= 0) + { + if (EnergyItems.syphonBatteries(stack, player, getEnergyUsed()) || player.capabilities.isCreativeMode) + { + world.setBlockToAir(x + rc.getX(direction), y + rc.getY(), z + rc.getZ(direction)); + player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.ritualStone)); + if (world.isRemote) + { + world.playAuxSFX(2005, x, y + 1, z, 0); + + return true; + } + } + + return true; + } + } + } + } + + return false; + } +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemRitualDiviner.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemRitualDiviner.java index 885f656b..ae333a2a 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemRitualDiviner.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemRitualDiviner.java @@ -197,7 +197,6 @@ public class ItemRitualDiviner extends EnergyItems implements IRitualDiviner if (tileEntity instanceof TEMasterStone) { - TEMasterStone masterStone = (TEMasterStone) tileEntity; List ritualList = Rituals.getRitualList(this.getCurrentRitual(stack)); if (ritualList == null) { diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilLava.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilLava.java index 2a709c65..9bc70f86 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilLava.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilLava.java @@ -3,6 +3,7 @@ package WayofTime.alchemicalWizardry.common.items.sigil; import java.util.List; import WayofTime.alchemicalWizardry.api.items.interfaces.ISigil; +import WayofTime.alchemicalWizardry.common.tileEntity.TESocket; import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; @@ -104,6 +105,10 @@ public class SigilLava extends ItemBucket implements ArmourUpgrade, ISigil return false; } + else if (tile instanceof TESocket) + { + return false; + } { if (side == 0) diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfSupression.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfSupression.java index adb48e3f..203d27a9 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfSupression.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfSupression.java @@ -179,7 +179,6 @@ public class SigilOfSupression extends EnergyItems implements ArmourUpgrade, ISi Block block = par2World.getBlock(x + i, y + j, z + k); - if (SpellHelper.isBlockFluid(block)) { if (par2World.getTileEntity(x + i, y + j, z + k) != null) @@ -210,8 +209,6 @@ public class SigilOfSupression extends EnergyItems implements ArmourUpgrade, ISi } } } - - return; } @Override diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilWater.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilWater.java index 1d844054..d9bf86a6 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilWater.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilWater.java @@ -3,6 +3,7 @@ package WayofTime.alchemicalWizardry.common.items.sigil; import java.util.List; import WayofTime.alchemicalWizardry.api.items.interfaces.ISigil; +import WayofTime.alchemicalWizardry.common.tileEntity.TESocket; import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; @@ -105,6 +106,10 @@ public class SigilWater extends ItemBucket implements ArmourUpgrade, ISigil return false; } + else if (tile instanceof TESocket) + { + return false; + } { if (side == 0) diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java b/src/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java index ebfa88c4..55c03291 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java @@ -42,6 +42,7 @@ import net.minecraft.world.World; import net.minecraft.world.WorldServer; import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.IFluidBlock; import net.minecraftforge.oredict.OreDictionary; import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.api.alchemy.energy.IAlchemyGoggles; @@ -259,7 +260,7 @@ public class SpellHelper SpellHelper.sendParticleToPlayer(player, "mobSpell", xCoord + 0.5D + rand.nextGaussian() / 8, yCoord + 1.1D, zCoord + 0.5D + rand.nextGaussian() / 8, 1.0D, 0.371D, 0.371D); break; case 4: - float f = (float) 1.0F; + 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; @@ -347,7 +348,7 @@ public class SpellHelper public static boolean isBlockFluid(Block block) { - return block instanceof BlockLiquid; + return block instanceof IFluidBlock; } public static void evaporateWaterBlock(World world, int posX, int posY, int posZ) diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/thread/GAPIChecker.java b/src/main/java/WayofTime/alchemicalWizardry/common/thread/GAPIChecker.java index 7b6da761..70d02550 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/thread/GAPIChecker.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/thread/GAPIChecker.java @@ -18,7 +18,7 @@ import java.util.zip.ZipFile; public class GAPIChecker { public static boolean doneChecking = false; - public static String onlineVersion = ""; + public static String onlineVersion = "@VERSION@"; public static boolean triedToWarnPlayer = false; public static boolean startedDownload = false; diff --git a/src/main/resources/Guide-API-Version.info b/src/main/resources/Guide-API-Version.info index 457dcccf..27323dad 100644 --- a/src/main/resources/Guide-API-Version.info +++ b/src/main/resources/Guide-API-Version.info @@ -1 +1 @@ -1.0.1-20 \ No newline at end of file +@VERSION@ \ No newline at end of file diff --git a/src/main/resources/assets/alchemicalwizardry/lang/en_US.lang b/src/main/resources/assets/alchemicalwizardry/lang/en_US.lang index 3dbec0b8..9893f913 100644 --- a/src/main/resources/assets/alchemicalwizardry/lang/en_US.lang +++ b/src/main/resources/assets/alchemicalwizardry/lang/en_US.lang @@ -143,6 +143,7 @@ item.standardFillingAgent.name=Standard Filling Agent item.enhancedFillingAgent.name=Enhanced Filling Agent item.weakBindingAgent.name=Weak Binding Agent item.ritualDiviner.name=Ritual Diviner +item.ritualDismantler.name=Ritual Dismantler item.sigilOfMagnetism.name=Sigil of Magnetism item.itemDiabloKey.name=Key of Binding item.energyBazooka.name=Energy Bazooka @@ -302,6 +303,7 @@ commands.soulnetwork.noPlayer=There is no player specified commands.soulnetwork.noCommand=There is no command specified commands.soulnetwork.notACommand=That is not a valid command commands.soulnetwork.fillMax.success=Successfully filled %s's Soul Network to their orb max! +commands.soulnetwork.create.success=Successfully created %s's Soul Network (Orb tier: %d) #Tooltips tooltip.activationcrystal.creativeonly=Creative Only - activates any ritual @@ -391,6 +393,7 @@ tooltip.ritualdiviner.ritualtunedto=Ritual tuned to face: tooltip.ritualdiviner.waterstones=Water Stones: tooltip.ritualdiviner.dawnstones=Dawn Stones: tooltip.ritualdiviner.totalStones=Total Stones: +tooltip.dismatler.desc=You could turn this upside down? tooltip.sacrificialdagger.desc1=A slight draining feeling tickles your fingers tooltip.sacrificialdagger.desc2=Just a prick of the tooltip.sacrificialdagger.desc3=finger will suffice...