From 053236fa1ff825d6f1ab1e4f83bf2f22c89623cb Mon Sep 17 00:00:00 2001 From: Calclavia Date: Tue, 28 Jan 2014 17:26:40 +0800 Subject: [PATCH] Some fixes to linking --- .../core/ResonantInduction.java | 6 +- ...inkEventHandler.java => ToolModeLink.java} | 55 ++++++++++++------- .../electrical/battery/BlockBattery.java | 2 +- .../mechanical/gear/PartGearShaft.java | 2 +- .../languages/en_US.properties | 1 + 5 files changed, 43 insertions(+), 23 deletions(-) rename src/main/java/resonantinduction/core/handler/{LinkEventHandler.java => ToolModeLink.java} (51%) diff --git a/src/main/java/resonantinduction/core/ResonantInduction.java b/src/main/java/resonantinduction/core/ResonantInduction.java index cca96ef3..bc2f995d 100644 --- a/src/main/java/resonantinduction/core/ResonantInduction.java +++ b/src/main/java/resonantinduction/core/ResonantInduction.java @@ -11,12 +11,13 @@ import org.modstats.ModstatInfo; import org.modstats.Modstats; import resonantinduction.core.handler.FluidEventHandler; -import resonantinduction.core.handler.LinkEventHandler; +import resonantinduction.core.handler.ToolModeLink; import resonantinduction.core.prefab.part.PacketMultiPart; import resonantinduction.core.resource.ResourceGenerator; import resonantinduction.core.resource.fluid.BlockFluidMixture; import resonantinduction.core.resource.fluid.TileLiquidMixture; import resonantinduction.core.resource.item.ItemOreResource; +import calclavia.components.tool.ToolMode; import calclavia.lib.content.ContentRegistry; import calclavia.lib.network.PacketHandler; import calclavia.lib.network.PacketTile; @@ -81,11 +82,12 @@ public class ResonantInduction ResonantInduction.LOGGER.setParent(FMLLog.getLogger()); NetworkRegistry.instance().registerGuiHandler(this, proxy); Modstats.instance().getReporter().registerMod(this); + ToolMode.REGISTRY.add(new ToolModeLink()); + Settings.load(); // Register Forge Events MinecraftForge.EVENT_BUS.register(ResourceGenerator.INSTANCE); - MinecraftForge.EVENT_BUS.register(new LinkEventHandler()); MinecraftForge.EVENT_BUS.register(new FluidEventHandler()); fluidMixture = new Fluid("water"); diff --git a/src/main/java/resonantinduction/core/handler/LinkEventHandler.java b/src/main/java/resonantinduction/core/handler/ToolModeLink.java similarity index 51% rename from src/main/java/resonantinduction/core/handler/LinkEventHandler.java rename to src/main/java/resonantinduction/core/handler/ToolModeLink.java index 3302f4d3..6f9f5d69 100644 --- a/src/main/java/resonantinduction/core/handler/LinkEventHandler.java +++ b/src/main/java/resonantinduction/core/handler/ToolModeLink.java @@ -3,50 +3,66 @@ */ package resonantinduction.core.handler; +import calclavia.components.tool.ToolMode; +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 net.minecraftforge.event.Event.Result; import net.minecraftforge.event.ForgeSubscribe; import universalelectricity.api.vector.VectorWorld; -import calclavia.components.event.MultitoolEvent; import codechicken.multipart.ControlKeyModifer; /** * @author Calclavia */ -public class LinkEventHandler +public class ToolModeLink extends ToolMode { - @ForgeSubscribe - public void linkEvent(MultitoolEvent evt) + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) { - if (ControlKeyModifer.isControlDown(evt.player)) - { - TileEntity tile = evt.world.getBlockTileEntity(evt.x, evt.y, evt.z); + TileEntity tile = world.getBlockTileEntity(x, y, z); - if (tile instanceof ILinkable && this.hasLink(evt.toolStack)) + if (ControlKeyModifer.isControlDown(player)) + { + if (tile instanceof ILinkable) { - if (!evt.world.isRemote) + if (!world.isRemote) { - if (((ILinkable) tile).onLink(evt.player, this.getLink(evt.toolStack))) + if (((ILinkable) tile).onLink(player, this.getLink(stack))) { - this.clearLink(evt.toolStack); - evt.player.addChatMessage("Link cleared."); + clearLink(stack); + player.addChatMessage("Link cleared."); + return true; } } - evt.setResult(Result.DENY); } - else + } + + 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 (!evt.world.isRemote) + if (!world.isRemote) { - evt.player.addChatMessage("Set link to block [" + evt.x + ", " + evt.y + ", " + evt.z + "], Dimension: '" + evt.world.provider.getDimensionName() + "'"); - this.setLink(evt.toolStack, new VectorWorld(evt.world, evt.x, evt.y, evt.z)); + ((ILinkable) tile).onLink(player, this.getLink(stack)); } } - - evt.setCanceled(true); + + return true; } + + return false; + } + + @Override + public String getName() + { + return "toolmode.link.name"; } public boolean hasLink(ItemStack itemStack) @@ -78,4 +94,5 @@ public class LinkEventHandler { itemStack.getTagCompound().removeTag("link"); } + } diff --git a/src/main/java/resonantinduction/electrical/battery/BlockBattery.java b/src/main/java/resonantinduction/electrical/battery/BlockBattery.java index 03d37777..692db87f 100644 --- a/src/main/java/resonantinduction/electrical/battery/BlockBattery.java +++ b/src/main/java/resonantinduction/electrical/battery/BlockBattery.java @@ -32,7 +32,7 @@ public class BlockBattery extends BlockIOBase implements ITileEntityProvider public BlockBattery() { super("battery", Settings.getNextBlockID()); - this.setTextureName(Reference.PREFIX + "machine"); + this.setTextureName(Reference.PREFIX + "material_metal_side"); } @Override diff --git a/src/main/java/resonantinduction/mechanical/gear/PartGearShaft.java b/src/main/java/resonantinduction/mechanical/gear/PartGearShaft.java index 02d2ae69..2279057f 100644 --- a/src/main/java/resonantinduction/mechanical/gear/PartGearShaft.java +++ b/src/main/java/resonantinduction/mechanical/gear/PartGearShaft.java @@ -94,7 +94,7 @@ public class PartGearShaft extends PartMechanical IMechanical instance = (IMechanical) ((IMechanical) checkTile).getInstance(checkDir.getOpposite()); // Only connect to shafts outside of this block space. - if (instance != null && instance != this && instance.canConnect(checkDir.getOpposite(), this) && instance instanceof PartGearShaft) + if (instance != null && instance != this && instance instanceof PartGearShaft && instance.canConnect(checkDir.getOpposite(), this)) { connections[checkDir.ordinal()] = instance; getNetwork().merge(instance.getNetwork()); diff --git a/src/main/resources/assets/resonantinduction/languages/en_US.properties b/src/main/resources/assets/resonantinduction/languages/en_US.properties index 3ac41c4a..169fe23f 100644 --- a/src/main/resources/assets/resonantinduction/languages/en_US.properties +++ b/src/main/resources/assets/resonantinduction/languages/en_US.properties @@ -8,6 +8,7 @@ meta.resonantinduction.description=Resonant Induction is a Minecraft mod focusin meta.resonantinduction.credits=Visit website for credits. fluid.mixture=Mixture +toolmode.link.name=Linking ### Core misc.resonantinduction.ingot=Ingot