Working on keybindings

This commit is contained in:
pahimar 2014-05-22 17:35:31 -05:00
parent 61e9278915
commit 99527d35a8
13 changed files with 134 additions and 33 deletions

View file

@ -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

View file

@ -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());
}
}
}
}
}
}
}

View file

@ -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)
{

View file

@ -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);
}

View file

@ -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()));
}
}

View file

@ -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)
{
}
}

View file

@ -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);
}
}

View file

@ -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()
{

View file

@ -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);

View file

@ -5,4 +5,8 @@ public interface IProxy
public abstract void registerTileEntities();
public abstract void initRenderingAndTextures();
public abstract void registerEventHandlers();
public abstract void registerKeybindings();
}

View file

@ -7,4 +7,10 @@ public class ServerProxy extends CommonProxy
{
// NOOP
}
@Override
public void registerKeybindings()
{
// NOOP
}
}

View file

@ -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();
}

View file

@ -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";
}
}