diff --git a/src/main/java/resonantinduction/core/ResonantInduction.java b/src/main/java/resonantinduction/core/ResonantInduction.java index 756928e6..6d922a0e 100644 --- a/src/main/java/resonantinduction/core/ResonantInduction.java +++ b/src/main/java/resonantinduction/core/ResonantInduction.java @@ -16,7 +16,6 @@ import org.modstats.ModstatInfo; import org.modstats.Modstats; import resonantinduction.core.handler.TextureHookHandler; -import resonantinduction.core.handler.ToolModeLink; import resonantinduction.core.prefab.part.PacketMultiPart; import resonantinduction.core.resource.BlockDust; import resonantinduction.core.resource.ResourceGenerator; @@ -24,6 +23,7 @@ import resonantinduction.core.resource.TileMaterial; import resonantinduction.core.resource.fluid.TileFluidMixture; import resonantinduction.core.resource.item.ItemOreResource; import calclavia.components.tool.ToolMode; +import calclavia.components.tool.ToolModeLink; import calclavia.lib.content.ContentRegistry; import calclavia.lib.network.PacketAnnotation; import calclavia.lib.network.PacketHandler; diff --git a/src/main/java/resonantinduction/core/handler/ILinkable.java b/src/main/java/resonantinduction/core/handler/ILinkable.java deleted file mode 100644 index fdb26504..00000000 --- a/src/main/java/resonantinduction/core/handler/ILinkable.java +++ /dev/null @@ -1,19 +0,0 @@ -package resonantinduction.core.handler; - -import net.minecraft.entity.player.EntityPlayer; -import universalelectricity.api.vector.VectorWorld; - -/** - * @author Calclavia - * - */ -public interface ILinkable -{ - /** - * - * @param player - * @param vector - * @return True to clear the link. - */ - public boolean onLink(EntityPlayer player, VectorWorld vector); -} diff --git a/src/main/java/resonantinduction/core/handler/ToolModeLink.java b/src/main/java/resonantinduction/core/handler/ToolModeLink.java deleted file mode 100644 index 7543cf2b..00000000 --- a/src/main/java/resonantinduction/core/handler/ToolModeLink.java +++ /dev/null @@ -1,96 +0,0 @@ -/** - * - */ -package resonantinduction.core.handler; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import universalelectricity.api.vector.VectorWorld; -import calclavia.components.tool.ToolMode; -import codechicken.multipart.ControlKeyModifer; - -/** - * @author Calclavia - */ -public class ToolModeLink extends ToolMode -{ - @Override - public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) - { - TileEntity tile = world.getBlockTileEntity(x, y, z); - - if (ControlKeyModifer.isControlDown(player)) - { - if (tile instanceof ILinkable) - { - if (!world.isRemote) - { - if (((ILinkable) tile).onLink(player, this.getLink(stack))) - { - clearLink(stack); - player.addChatMessage("Link cleared."); - return true; - } - } - } - } - - if (!world.isRemote) - { - player.addChatMessage("Set link to block [" + x + ", " + y + ", " + z + "], Dimension: '" + world.provider.getDimensionName() + "'"); - setLink(stack, new VectorWorld(world, x, y, z)); - - if (tile instanceof ILinkable) - { - if (!world.isRemote) - { - ((ILinkable) tile).onLink(player, this.getLink(stack)); - } - } - - return true; - } - - return false; - } - - @Override - public String getName() - { - return "toolmode.link.name"; - } - - public boolean hasLink(ItemStack itemStack) - { - return getLink(itemStack) != null; - } - - public VectorWorld getLink(ItemStack itemStack) - { - if (itemStack.stackTagCompound == null || !itemStack.getTagCompound().hasKey("link")) - { - return null; - } - - return new VectorWorld(itemStack.getTagCompound().getCompoundTag("link")); - } - - public void setLink(ItemStack itemStack, VectorWorld vec) - { - if (itemStack.getTagCompound() == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - - itemStack.getTagCompound().setCompoundTag("link", vec.writeToNBT(new NBTTagCompound())); - } - - public void clearLink(ItemStack itemStack) - { - itemStack.getTagCompound().removeTag("link"); - } - -} diff --git a/src/main/java/resonantinduction/core/prefab/block/BlockIOBase.java b/src/main/java/resonantinduction/core/prefab/block/BlockRIIO.java similarity index 82% rename from src/main/java/resonantinduction/core/prefab/block/BlockIOBase.java rename to src/main/java/resonantinduction/core/prefab/block/BlockRIIO.java index 9aa492a7..6b7e7d01 100644 --- a/src/main/java/resonantinduction/core/prefab/block/BlockIOBase.java +++ b/src/main/java/resonantinduction/core/prefab/block/BlockRIIO.java @@ -16,19 +16,19 @@ import calclavia.lib.prefab.block.BlockSidedIO; * * @author Calclavia */ -public class BlockIOBase extends BlockSidedIO +public class BlockRIIO extends BlockSidedIO { - public BlockIOBase(String name) + public BlockRIIO(String name) { this(name, Settings.getNextBlockID()); } - public BlockIOBase(String name, int id) + public BlockRIIO(String name, int id) { this(name, id, UniversalElectricity.machine); } - public BlockIOBase(String name, int id, Material material) + public BlockRIIO(String name, int id, Material material) { super(Settings.CONFIGURATION.get(Configuration.CATEGORY_BLOCK, name, id).getInt(id), material); this.setCreativeTab(TabRI.CORE); diff --git a/src/main/java/resonantinduction/electrical/battery/BlockBattery.java b/src/main/java/resonantinduction/electrical/battery/BlockBattery.java index 215920db..dc5719c4 100644 --- a/src/main/java/resonantinduction/electrical/battery/BlockBattery.java +++ b/src/main/java/resonantinduction/electrical/battery/BlockBattery.java @@ -15,7 +15,7 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; import resonantinduction.core.Reference; import resonantinduction.core.Settings; -import resonantinduction.core.prefab.block.BlockIOBase; +import resonantinduction.core.prefab.block.BlockRIIO; import resonantinduction.core.render.RIBlockRenderingHandler; import universalelectricity.api.CompatibilityModule; import cpw.mods.fml.relauncher.Side; @@ -27,7 +27,7 @@ import cpw.mods.fml.relauncher.SideOnly; * @author Calclavia * */ -public class BlockBattery extends BlockIOBase implements ITileEntityProvider +public class BlockBattery extends BlockRIIO implements ITileEntityProvider { public BlockBattery() { diff --git a/src/main/java/resonantinduction/electrical/levitator/BlockLevitator.java b/src/main/java/resonantinduction/electrical/levitator/BlockLevitator.java index 92853be5..ff93387b 100644 --- a/src/main/java/resonantinduction/electrical/levitator/BlockLevitator.java +++ b/src/main/java/resonantinduction/electrical/levitator/BlockLevitator.java @@ -3,12 +3,17 @@ package resonantinduction.electrical.levitator; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import resonantinduction.core.Reference; import resonantinduction.core.prefab.block.BlockRIRotatable; import resonantinduction.core.render.RIBlockRenderingHandler; +import universalelectricity.api.vector.VectorWorld; +import calclavia.components.tool.ToolModeLink; +import calclavia.lib.prefab.block.ILinkable; +import calclavia.lib.utility.WrenchUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -49,11 +54,27 @@ public class BlockLevitator extends BlockRIRotatable @Override public boolean onUseWrench(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ) { - if (!entityPlayer.isSneaking()) + ItemStack itemStack = entityPlayer.getCurrentEquippedItem(); + + if (WrenchUtility.isWrench(itemStack)) { - TileLevitator levitator = (TileLevitator) world.getBlockTileEntity(x, y, z); - levitator.incrementFacing(); - return true; + TileEntity tile = world.getBlockTileEntity(x, y, z); + + if (tile instanceof ILinkable) + { + ILinkable linkable = (ILinkable) tile; + + if (linkable.onLink(entityPlayer, ToolModeLink.getLink(itemStack))) + { + ToolModeLink.clearLink(itemStack); + } + else + { + ToolModeLink.setLink(itemStack, new VectorWorld(world, x, y, z)); + } + + return true; + } } return false; diff --git a/src/main/java/resonantinduction/electrical/levitator/TileLevitator.java b/src/main/java/resonantinduction/electrical/levitator/TileLevitator.java index 42911ae3..93f31509 100644 --- a/src/main/java/resonantinduction/electrical/levitator/TileLevitator.java +++ b/src/main/java/resonantinduction/electrical/levitator/TileLevitator.java @@ -23,13 +23,13 @@ import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.fluids.IFluidBlock; import resonantinduction.core.ResonantInduction; import resonantinduction.core.Settings; -import resonantinduction.core.handler.ILinkable; import resonantinduction.electrical.Electrical; import resonantinduction.electrical.tesla.TileTesla; import universalelectricity.api.vector.Vector3; import universalelectricity.api.vector.VectorWorld; import calclavia.lib.network.IPacketReceiver; import calclavia.lib.network.IPacketSender; +import calclavia.lib.prefab.block.ILinkable; import calclavia.lib.prefab.tile.TileAdvanced; import calclavia.lib.render.EnumColor; import calclavia.lib.utility.inventory.InventoryUtility; @@ -456,12 +456,6 @@ public class TileLevitator extends TileAdvanced implements IPacketReceiver, IPac return null; } - public void incrementFacing() - { - int newOrdinal = getDirection().ordinal() < 5 ? getDirection().ordinal() + 1 : 0; - setDirection(ForgeDirection.getOrientation(newOrdinal)); - } - public ForgeDirection getDirection() { return ForgeDirection.getOrientation(getBlockType() != null ? getBlockMetadata() : 0); diff --git a/src/main/java/resonantinduction/electrical/tesla/BlockTesla.java b/src/main/java/resonantinduction/electrical/tesla/BlockTesla.java index c1ca651e..ab82fdfd 100644 --- a/src/main/java/resonantinduction/electrical/tesla/BlockTesla.java +++ b/src/main/java/resonantinduction/electrical/tesla/BlockTesla.java @@ -11,7 +11,7 @@ import net.minecraft.world.World; import resonantinduction.core.Reference; import resonantinduction.core.Settings; import resonantinduction.core.Utility; -import resonantinduction.core.prefab.block.BlockIOBase; +import resonantinduction.core.prefab.block.BlockRIIO; import resonantinduction.core.render.RIBlockRenderingHandler; import calclavia.lib.utility.LanguageUtility; import cpw.mods.fml.relauncher.Side; @@ -21,7 +21,7 @@ import cpw.mods.fml.relauncher.SideOnly; * @author Calclavia * */ -public class BlockTesla extends BlockIOBase implements ITileEntityProvider +public class BlockTesla extends BlockRIIO implements ITileEntityProvider { public BlockTesla() { diff --git a/src/main/java/resonantinduction/electrical/tesla/TileTesla.java b/src/main/java/resonantinduction/electrical/tesla/TileTesla.java index fef3e1dc..61caddc6 100644 --- a/src/main/java/resonantinduction/electrical/tesla/TileTesla.java +++ b/src/main/java/resonantinduction/electrical/tesla/TileTesla.java @@ -22,7 +22,6 @@ import net.minecraftforge.common.ForgeDirection; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; import resonantinduction.core.Settings; -import resonantinduction.core.handler.ILinkable; import resonantinduction.electrical.Electrical; import universalelectricity.api.energy.EnergyStorageHandler; import universalelectricity.api.vector.Vector3; @@ -32,6 +31,7 @@ import calclavia.lib.multiblock.reference.IMultiBlockStructure; import calclavia.lib.multiblock.reference.MultiBlockHandler; import calclavia.lib.network.IPacketReceiver; import calclavia.lib.network.IPacketSender; +import calclavia.lib.prefab.block.ILinkable; import calclavia.lib.prefab.tile.TileElectrical; import calclavia.lib.render.EnumColor; import calclavia.lib.utility.LanguageUtility; diff --git a/src/main/java/resonantinduction/mechanical/fluid/pipe/PartPipe.java b/src/main/java/resonantinduction/mechanical/fluid/pipe/PartPipe.java index fb06b4b4..52bfe9fe 100644 --- a/src/main/java/resonantinduction/mechanical/fluid/pipe/PartPipe.java +++ b/src/main/java/resonantinduction/mechanical/fluid/pipe/PartPipe.java @@ -18,7 +18,7 @@ import resonantinduction.api.fluid.IFluidPipe; import resonantinduction.core.prefab.part.PartFramedConnection; import resonantinduction.mechanical.Mechanical; import resonantinduction.mechanical.fluid.network.PipeNetwork; -import calclavia.lib.prefab.block.BlockAdvanced; +import calclavia.lib.utility.WrenchUtility; import codechicken.lib.render.CCRenderState; import codechicken.lib.render.IconTransformation; import codechicken.lib.render.RenderUtils; @@ -76,13 +76,13 @@ public class PartPipe extends PartFramedConnection