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..978baf31 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/commands/CommandSN.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/commands/CommandSN.java @@ -13,21 +13,25 @@ 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]); @@ -83,6 +87,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(owner, orbTier); + func_152373_a(icommandsender, this, "commands.soulnetwork.create.success", owner, orbTier); + } else { throw new CommandException("commands.soulnetwork.notACommand"); @@ -98,6 +108,7 @@ public class CommandSN extends CommandBase } } + @Override public List addTabCompletionOptions(ICommandSender iCommandSender, String[] astring) { if (astring.length == 1) @@ -106,7 +117,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 +128,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/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/resources/assets/alchemicalwizardry/lang/en_US.lang b/src/main/resources/assets/alchemicalwizardry/lang/en_US.lang index 3dbec0b8..7711c773 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...