From 99527d35a8dabc5e344c1a30052d20ee236dcb2e Mon Sep 17 00:00:00 2001 From: pahimar Date: Thu, 22 May 2014 17:35:31 -0500 Subject: [PATCH] Working on keybindings --- .../com/pahimar/ee3/EquivalentExchange3.java | 23 ++------- .../client/handler/KeyInputEventHandler.java | 49 +++++++++++++++++++ .../configuration/ClientConfiguration.java | 9 ++++ .../java/com/pahimar/ee3/item/IKeyBound.java | 3 +- .../com/pahimar/ee3/item/ItemMiniumStone.java | 11 ++++- .../ee3/item/ItemPhilosophersStone.java | 10 +++- .../pahimar/ee3/network/PacketHandler.java | 6 +-- .../com/pahimar/ee3/proxy/ClientProxy.java | 19 +++++++ .../com/pahimar/ee3/proxy/CommonProxy.java | 11 +++++ .../java/com/pahimar/ee3/proxy/IProxy.java | 4 ++ .../com/pahimar/ee3/proxy/ServerProxy.java | 6 +++ .../pahimar/ee3/reference/EventHandlers.java | 8 --- .../java/com/pahimar/ee3/reference/Names.java | 8 +++ 13 files changed, 134 insertions(+), 33 deletions(-) delete mode 100644 src/main/java/com/pahimar/ee3/reference/EventHandlers.java diff --git a/src/main/java/com/pahimar/ee3/EquivalentExchange3.java b/src/main/java/com/pahimar/ee3/EquivalentExchange3.java index fa51d56b..e8240437 100644 --- a/src/main/java/com/pahimar/ee3/EquivalentExchange3.java +++ b/src/main/java/com/pahimar/ee3/EquivalentExchange3.java @@ -6,13 +6,9 @@ import com.pahimar.ee3.handler.FuelHandler; import com.pahimar.ee3.handler.GuiHandler; import com.pahimar.ee3.init.ModBlocks; import com.pahimar.ee3.init.ModItems; -import com.pahimar.ee3.item.EquivalencyStack; import com.pahimar.ee3.network.PacketHandler; import com.pahimar.ee3.proxy.IProxy; -import com.pahimar.ee3.reference.EventHandlers; import com.pahimar.ee3.reference.Reference; -import com.pahimar.ee3.util.LogHelper; -import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; @@ -21,8 +17,6 @@ import cpw.mods.fml.common.event.*; import cpw.mods.fml.common.event.FMLInterModComms.IMCEvent; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.GameRegistry; -import net.minecraft.init.Items; -import net.minecraftforge.common.MinecraftForge; import java.io.File; @@ -50,16 +44,15 @@ public class EquivalentExchange3 @EventHandler public void preInit(FMLPreInitializationEvent event) { - // Initialize the configuration ConfigurationHandler.init(event.getModConfigurationDirectory().getAbsolutePath() + File.separator + Reference.MOD_ID.toLowerCase() + File.separator); - // Initialize mod items + PacketHandler.init(); + + proxy.registerKeybindings(); + ModItems.init(); - // Initialize mod blocks ModBlocks.init(); - - PacketHandler.init(); } @EventHandler @@ -75,8 +68,7 @@ public class EquivalentExchange3 proxy.initRenderingAndTextures(); // Register the Items Event Handler - FMLCommonHandler.instance().bus().register(EventHandlers.itemEventHandler); - MinecraftForge.EVENT_BUS.register(EventHandlers.itemEventHandler); + proxy.registerEventHandlers(); CraftingHandler.init(); @@ -87,12 +79,7 @@ public class EquivalentExchange3 @EventHandler public void postInit(FMLPostInitializationEvent event) { - EquivalencyStack equivalencyStack = new EquivalencyStack(Items.beef); - for (Object object : equivalencyStack.getEquivalentStacks()) - { - LogHelper.info(object); - } } @EventHandler diff --git a/src/main/java/com/pahimar/ee3/client/handler/KeyInputEventHandler.java b/src/main/java/com/pahimar/ee3/client/handler/KeyInputEventHandler.java index ec793a48..1b796ac2 100644 --- a/src/main/java/com/pahimar/ee3/client/handler/KeyInputEventHandler.java +++ b/src/main/java/com/pahimar/ee3/client/handler/KeyInputEventHandler.java @@ -1,20 +1,69 @@ package com.pahimar.ee3.client.handler; +import com.pahimar.ee3.client.settings.Keybindings; +import com.pahimar.ee3.item.IKeyBound; +import com.pahimar.ee3.network.PacketHandler; +import com.pahimar.ee3.network.message.MessageKeyPressed; +import com.pahimar.ee3.reference.Key; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; @SideOnly(Side.CLIENT) public class KeyInputEventHandler { + private static Key getPressedKeybinding() + { + if (Keybindings.charge.isPressed()) + { + return Key.CHARGE; + } + else if (Keybindings.extra.isPressed()) + { + return Key.EXTRA; + } + else if (Keybindings.release.isPressed()) + { + return Key.RELEASE; + } + else if (Keybindings.toggle.isPressed()) + { + return Key.TOGGLE; + } + + return Key.UNKNOWN; + } + @SubscribeEvent public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { if (FMLClientHandler.instance().getClient().inGameHasFocus) { + if (FMLClientHandler.instance().getClientPlayerEntity() != null) + { + EntityPlayer entityPlayer = FMLClientHandler.instance().getClientPlayerEntity(); + if (entityPlayer.getCurrentEquippedItem() != null) + { + ItemStack currentlyEquippedItemStack = entityPlayer.getCurrentEquippedItem(); + + if (currentlyEquippedItemStack.getItem() instanceof IKeyBound) + { + if (entityPlayer.worldObj.isRemote) + { + PacketHandler.INSTANCE.sendToServer(new MessageKeyPressed(Key.CHARGE)); + } + else + { + ((IKeyBound) currentlyEquippedItemStack.getItem()).doKeyBindingAction(entityPlayer, currentlyEquippedItemStack, getPressedKeybinding()); + } + } + } + } } } } diff --git a/src/main/java/com/pahimar/ee3/configuration/ClientConfiguration.java b/src/main/java/com/pahimar/ee3/configuration/ClientConfiguration.java index 10341b1b..253bf0d2 100644 --- a/src/main/java/com/pahimar/ee3/configuration/ClientConfiguration.java +++ b/src/main/java/com/pahimar/ee3/configuration/ClientConfiguration.java @@ -1,8 +1,12 @@ package com.pahimar.ee3.configuration; +import com.pahimar.ee3.client.settings.Keybindings; +import com.pahimar.ee3.reference.Names; import com.pahimar.ee3.reference.Reference; import com.pahimar.ee3.util.LogHelper; +import net.minecraft.client.settings.KeyBinding; import net.minecraftforge.common.config.Configuration; +import org.lwjgl.input.Keyboard; import java.io.File; @@ -21,6 +25,11 @@ public class ClientConfiguration /* KeyBindings */ configuration.addCustomCategoryComment(CATEGORY_KEYBIND, "Keybindings for Equivalent Exchange 3. See http://www.minecraftwiki.net/wiki/Key_codes for mapping of key codes to keyboard keys"); + + Keybindings.charge = new KeyBinding(Names.Keys.CHARGE, configuration.get(CATEGORY_KEYBIND, Names.Keys.CHARGE, Keyboard.KEY_V).getInt(Keyboard.KEY_V), "Equivalent Exchange 3"); + Keybindings.extra = new KeyBinding(Names.Keys.EXTRA, configuration.get(CATEGORY_KEYBIND, Names.Keys.EXTRA, Keyboard.KEY_C).getInt(Keyboard.KEY_C), "Equivalent Exchange 3"); + Keybindings.release = new KeyBinding(Names.Keys.RELEASE, configuration.get(CATEGORY_KEYBIND, Names.Keys.RELEASE, Keyboard.KEY_R).getInt(Keyboard.KEY_R), "Equivalent Exchange 3"); + Keybindings.toggle = new KeyBinding(Names.Keys.TOGGLE, configuration.get(CATEGORY_KEYBIND, Names.Keys.TOGGLE, Keyboard.KEY_G).getInt(Keyboard.KEY_G), "Equivalent Exchange 3"); } catch (Exception e) { diff --git a/src/main/java/com/pahimar/ee3/item/IKeyBound.java b/src/main/java/com/pahimar/ee3/item/IKeyBound.java index d5fc9648..d91571f9 100644 --- a/src/main/java/com/pahimar/ee3/item/IKeyBound.java +++ b/src/main/java/com/pahimar/ee3/item/IKeyBound.java @@ -1,9 +1,10 @@ package com.pahimar.ee3.item; +import com.pahimar.ee3.reference.Key; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; public interface IKeyBound { - public abstract void doKeyBindingAction(EntityPlayer entityPlayer, ItemStack itemStack, String keyBinding); + public abstract void doKeyBindingAction(EntityPlayer entityPlayer, ItemStack itemStack, Key key); } diff --git a/src/main/java/com/pahimar/ee3/item/ItemMiniumStone.java b/src/main/java/com/pahimar/ee3/item/ItemMiniumStone.java index 4f174f94..4a5bb412 100644 --- a/src/main/java/com/pahimar/ee3/item/ItemMiniumStone.java +++ b/src/main/java/com/pahimar/ee3/item/ItemMiniumStone.java @@ -1,12 +1,15 @@ package com.pahimar.ee3.item; +import com.pahimar.ee3.reference.Key; import com.pahimar.ee3.reference.Names; +import com.pahimar.ee3.util.LogHelper; import com.pahimar.ee3.util.NBTHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -public class ItemMiniumStone extends ItemEE +public class ItemMiniumStone extends ItemEE implements IKeyBound { public ItemMiniumStone() { @@ -44,4 +47,10 @@ public class ItemMiniumStone extends ItemEE { return NBTHelper.hasTag(itemStack, Names.NBT.CRAFTING_GUI_OPEN) || NBTHelper.hasTag(itemStack, Names.NBT.TRANSMUTATION_GUI_OPEN); } + + @Override + public void doKeyBindingAction(EntityPlayer entityPlayer, ItemStack itemStack, Key key) + { + LogHelper.info(String.format("%s %s %s", entityPlayer.toString(), itemStack.toString(), key.toString())); + } } diff --git a/src/main/java/com/pahimar/ee3/item/ItemPhilosophersStone.java b/src/main/java/com/pahimar/ee3/item/ItemPhilosophersStone.java index 42437667..7f4a8ee4 100644 --- a/src/main/java/com/pahimar/ee3/item/ItemPhilosophersStone.java +++ b/src/main/java/com/pahimar/ee3/item/ItemPhilosophersStone.java @@ -1,9 +1,11 @@ package com.pahimar.ee3.item; +import com.pahimar.ee3.reference.Key; import com.pahimar.ee3.reference.Names; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -public class ItemPhilosophersStone extends ItemEE +public class ItemPhilosophersStone extends ItemEE implements IKeyBound { private int maxChargeLevel; @@ -37,4 +39,10 @@ public class ItemPhilosophersStone extends ItemEE return copiedStack; } + + @Override + public void doKeyBindingAction(EntityPlayer entityPlayer, ItemStack itemStack, Key key) + { + + } } diff --git a/src/main/java/com/pahimar/ee3/network/PacketHandler.java b/src/main/java/com/pahimar/ee3/network/PacketHandler.java index 7d9f5746..77527962 100644 --- a/src/main/java/com/pahimar/ee3/network/PacketHandler.java +++ b/src/main/java/com/pahimar/ee3/network/PacketHandler.java @@ -1,9 +1,6 @@ package com.pahimar.ee3.network; -import com.pahimar.ee3.network.message.MessageTileCalcinator; -import com.pahimar.ee3.network.message.MessageTileEntityAludel; -import com.pahimar.ee3.network.message.MessageTileEntityEE; -import com.pahimar.ee3.network.message.MessageTileEntityGlassBell; +import com.pahimar.ee3.network.message.*; import com.pahimar.ee3.reference.Reference; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; @@ -19,5 +16,6 @@ public class PacketHandler INSTANCE.registerMessage(MessageTileCalcinator.class, MessageTileCalcinator.class, 1, Side.CLIENT); INSTANCE.registerMessage(MessageTileEntityAludel.class, MessageTileEntityAludel.class, 2, Side.CLIENT); INSTANCE.registerMessage(MessageTileEntityGlassBell.class, MessageTileEntityGlassBell.class, 3, Side.CLIENT); + INSTANCE.registerMessage(MessageKeyPressed.class, MessageKeyPressed.class, 4, Side.SERVER); } } diff --git a/src/main/java/com/pahimar/ee3/proxy/ClientProxy.java b/src/main/java/com/pahimar/ee3/proxy/ClientProxy.java index 5c46141f..8be33f9c 100644 --- a/src/main/java/com/pahimar/ee3/proxy/ClientProxy.java +++ b/src/main/java/com/pahimar/ee3/proxy/ClientProxy.java @@ -1,17 +1,36 @@ package com.pahimar.ee3.proxy; +import com.pahimar.ee3.client.handler.KeyInputEventHandler; import com.pahimar.ee3.client.renderer.item.*; import com.pahimar.ee3.client.renderer.tileentity.*; +import com.pahimar.ee3.client.settings.Keybindings; import com.pahimar.ee3.init.ModBlocks; import com.pahimar.ee3.reference.RenderIds; import com.pahimar.ee3.tileentity.*; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.item.Item; import net.minecraftforge.client.MinecraftForgeClient; public class ClientProxy extends CommonProxy { + @Override + public void registerEventHandlers() + { + super.registerEventHandlers(); + FMLCommonHandler.instance().bus().register(new KeyInputEventHandler()); + } + + @Override + public void registerKeybindings() + { + ClientRegistry.registerKeyBinding(Keybindings.charge); + ClientRegistry.registerKeyBinding(Keybindings.extra); + ClientRegistry.registerKeyBinding(Keybindings.release); + ClientRegistry.registerKeyBinding(Keybindings.toggle); + } + @Override public void initRenderingAndTextures() { diff --git a/src/main/java/com/pahimar/ee3/proxy/CommonProxy.java b/src/main/java/com/pahimar/ee3/proxy/CommonProxy.java index abdcd04f..8e214397 100644 --- a/src/main/java/com/pahimar/ee3/proxy/CommonProxy.java +++ b/src/main/java/com/pahimar/ee3/proxy/CommonProxy.java @@ -1,11 +1,22 @@ package com.pahimar.ee3.proxy; +import com.pahimar.ee3.handler.ItemEventHandler; import com.pahimar.ee3.reference.Names; import com.pahimar.ee3.tileentity.*; +import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.registry.GameRegistry; +import net.minecraftforge.common.MinecraftForge; public abstract class CommonProxy implements IProxy { + public void registerEventHandlers() + { + ItemEventHandler itemEventHandler = new ItemEventHandler(); + + FMLCommonHandler.instance().bus().register(itemEventHandler); + MinecraftForge.EVENT_BUS.register(itemEventHandler); + } + public void registerTileEntities() { GameRegistry.registerTileEntity(TileEntityAlchemicalChest.class, "tile." + Names.Blocks.ALCHEMICAL_CHEST); diff --git a/src/main/java/com/pahimar/ee3/proxy/IProxy.java b/src/main/java/com/pahimar/ee3/proxy/IProxy.java index 79c17ba7..bee15f3a 100644 --- a/src/main/java/com/pahimar/ee3/proxy/IProxy.java +++ b/src/main/java/com/pahimar/ee3/proxy/IProxy.java @@ -5,4 +5,8 @@ public interface IProxy public abstract void registerTileEntities(); public abstract void initRenderingAndTextures(); + + public abstract void registerEventHandlers(); + + public abstract void registerKeybindings(); } diff --git a/src/main/java/com/pahimar/ee3/proxy/ServerProxy.java b/src/main/java/com/pahimar/ee3/proxy/ServerProxy.java index 5d8d357f..e4978704 100644 --- a/src/main/java/com/pahimar/ee3/proxy/ServerProxy.java +++ b/src/main/java/com/pahimar/ee3/proxy/ServerProxy.java @@ -7,4 +7,10 @@ public class ServerProxy extends CommonProxy { // NOOP } + + @Override + public void registerKeybindings() + { + // NOOP + } } diff --git a/src/main/java/com/pahimar/ee3/reference/EventHandlers.java b/src/main/java/com/pahimar/ee3/reference/EventHandlers.java deleted file mode 100644 index 37fd1527..00000000 --- a/src/main/java/com/pahimar/ee3/reference/EventHandlers.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.pahimar.ee3.reference; - -import com.pahimar.ee3.handler.ItemEventHandler; - -public class EventHandlers -{ - public static final ItemEventHandler itemEventHandler = new ItemEventHandler(); -} diff --git a/src/main/java/com/pahimar/ee3/reference/Names.java b/src/main/java/com/pahimar/ee3/reference/Names.java index f222c60e..c4a493e5 100644 --- a/src/main/java/com/pahimar/ee3/reference/Names.java +++ b/src/main/java/com/pahimar/ee3/reference/Names.java @@ -59,4 +59,12 @@ public class Names public static final String GLASS_BELL = "container.ee3:" + Blocks.GLASS_BELL; } + + public static class Keys + { + public static final String CHARGE = "key.charge"; + public static final String EXTRA = "key.extra"; + public static final String RELEASE = "key.release"; + public static final String TOGGLE = "key.toggle"; + } }