KeyBindingHandler work - reads from configuration file and respects sidedness (client side only handling, common reading from configuration file)
This commit is contained in:
parent
77cbbadb18
commit
b4d0e5e675
22
ee3_client/ee3/client/core/ClientProxy.java
Normal file
22
ee3_client/ee3/client/core/ClientProxy.java
Normal file
|
@ -0,0 +1,22 @@
|
|||
package ee3.client.core;
|
||||
|
||||
import net.minecraft.src.KeyBinding;
|
||||
import cpw.mods.fml.client.registry.KeyBindingRegistry;
|
||||
import ee3.client.core.handlers.KeyBindingHandler;
|
||||
import ee3.client.lib.KeyBindings;
|
||||
import ee3.common.core.CommonProxy;
|
||||
|
||||
public class ClientProxy extends CommonProxy {
|
||||
|
||||
@Override
|
||||
public void registerKeyBindingHandler() {
|
||||
KeyBindingRegistry.registerKeyBinding(new KeyBindingHandler());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setKeyBinding(String name, int value) {
|
||||
KeyBindings.addKeyBinding(name, value);
|
||||
KeyBindings.addIsRepeating(false);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package ee3.client.core;
|
||||
package ee3.client.core.handlers;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
|
@ -9,15 +9,12 @@ import cpw.mods.fml.client.registry.KeyBindingRegistry;
|
|||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.TickType;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
import ee3.client.lib.KeyBindings;
|
||||
|
||||
public class KeyBindingHandler extends KeyBindingRegistry.KeyHandler {
|
||||
|
||||
private static KeyBinding extra = new KeyBinding("ee3.mod.key.extra", Keyboard.KEY_C);
|
||||
private static KeyBinding[] keyBindings = {extra};
|
||||
private static boolean[] repeatings = {false};
|
||||
|
||||
public KeyBindingHandler() {
|
||||
super(keyBindings, repeatings);
|
||||
super(KeyBindings.gatherKeyBindings(), KeyBindings.gatherIsRepeating());
|
||||
}
|
||||
|
||||
@Override
|
41
ee3_client/ee3/client/lib/KeyBindings.java
Normal file
41
ee3_client/ee3/client/lib/KeyBindings.java
Normal file
|
@ -0,0 +1,41 @@
|
|||
package ee3.client.lib;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import net.minecraft.src.KeyBinding;
|
||||
|
||||
public class KeyBindings {
|
||||
|
||||
public static ArrayList<KeyBinding> keyBindingsList;
|
||||
public static ArrayList<Boolean> isRepeatingList;
|
||||
|
||||
public static void addKeyBinding(String name, int value) {
|
||||
if (keyBindingsList == null) {
|
||||
keyBindingsList = new ArrayList<KeyBinding>();
|
||||
}
|
||||
|
||||
keyBindingsList.add(new KeyBinding(name, value));
|
||||
}
|
||||
|
||||
public static void addIsRepeating(boolean value) {
|
||||
if (isRepeatingList == null) {
|
||||
isRepeatingList = new ArrayList<Boolean>();
|
||||
}
|
||||
|
||||
isRepeatingList.add(value);
|
||||
}
|
||||
|
||||
public static KeyBinding[] gatherKeyBindings() {
|
||||
return keyBindingsList.toArray(new KeyBinding[keyBindingsList.size()]);
|
||||
}
|
||||
|
||||
public static boolean[] gatherIsRepeating() {
|
||||
boolean[] isRepeating = new boolean[isRepeatingList.size()];
|
||||
|
||||
for (int x = 0; x < isRepeating.length; x++) {
|
||||
isRepeating[x] = isRepeatingList.get(x).booleanValue();
|
||||
}
|
||||
|
||||
return isRepeating;
|
||||
}
|
||||
}
|
|
@ -1,19 +1,17 @@
|
|||
package ee3.common;
|
||||
|
||||
import org.lwjgl.input.Keyboard;
|
||||
|
||||
import cpw.mods.fml.client.registry.KeyBindingRegistry;
|
||||
import cpw.mods.fml.common.Mod;
|
||||
import cpw.mods.fml.common.Mod.Init;
|
||||
import cpw.mods.fml.common.Mod.Instance;
|
||||
import cpw.mods.fml.common.Mod.PostInit;
|
||||
import cpw.mods.fml.common.Mod.PreInit;
|
||||
import cpw.mods.fml.common.SidedProxy;
|
||||
import cpw.mods.fml.common.event.FMLInitializationEvent;
|
||||
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
|
||||
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
||||
import cpw.mods.fml.common.network.NetworkMod;
|
||||
import ee3.client.core.KeyBindingHandler;
|
||||
import ee3.common.core.ConfigurationManager;
|
||||
import ee3.common.core.CommonProxy;
|
||||
import ee3.common.core.handlers.ConfigurationHandler;
|
||||
import ee3.common.lib.Reference;
|
||||
import ee3.common.network.PacketHandler;
|
||||
|
||||
|
@ -24,20 +22,20 @@ public class EquivalentExchange3 {
|
|||
@Instance
|
||||
public static EquivalentExchange3 instance;
|
||||
|
||||
@SidedProxy(clientSide = "ee3.client.core.ClientProxy", serverSide = "ee3.core.common.CommonProxy")
|
||||
public static CommonProxy proxy;
|
||||
|
||||
@PreInit
|
||||
public void preInit(FMLPreInitializationEvent event) {
|
||||
|
||||
// Initialize the configuration
|
||||
ConfigurationManager.init(event.getSuggestedConfigurationFile());
|
||||
ConfigurationHandler.init(event.getSuggestedConfigurationFile());
|
||||
|
||||
}
|
||||
|
||||
@Init
|
||||
public void load(FMLInitializationEvent event) {
|
||||
|
||||
// Initialize the KeyBinding handler
|
||||
KeyBindingRegistry.registerKeyBinding(new KeyBindingHandler());
|
||||
|
||||
proxy.registerKeyBindingHandler();
|
||||
}
|
||||
|
||||
@PostInit
|
||||
|
|
23
ee3_common/ee3/common/core/CommonProxy.java
Normal file
23
ee3_common/ee3/common/core/CommonProxy.java
Normal file
|
@ -0,0 +1,23 @@
|
|||
package ee3.common.core;
|
||||
|
||||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.World;
|
||||
import cpw.mods.fml.common.network.IGuiHandler;
|
||||
|
||||
public class CommonProxy implements IGuiHandler {
|
||||
|
||||
public void registerKeyBindingHandler() { }
|
||||
|
||||
public void setKeyBinding(String name, int value) { }
|
||||
|
||||
@Override
|
||||
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,15 +1,12 @@
|
|||
package ee3.common.core;
|
||||
package ee3.common.core.handlers;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.lwjgl.input.Keyboard;
|
||||
|
||||
import net.minecraftforge.common.Configuration;
|
||||
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
|
||||
import ee3.common.EquivalentExchange3;
|
||||
import net.minecraftforge.common.Configuration;
|
||||
import static net.minecraftforge.common.Configuration.*;
|
||||
import static ee3.common.lib.Reference.*;
|
||||
|
||||
/**
|
||||
* TODO Class Description
|
||||
|
@ -17,7 +14,7 @@ import static net.minecraftforge.common.Configuration.*;
|
|||
* @license Lesser GNU Public License v3 (http://www.gnu.org/licenses/lgpl.html)
|
||||
*
|
||||
*/
|
||||
public class ConfigurationManager {
|
||||
public class ConfigurationHandler {
|
||||
|
||||
private static final String CATEGORY_KEYBIND = "keybinds";
|
||||
|
||||
|
@ -31,6 +28,8 @@ public class ConfigurationManager {
|
|||
try {
|
||||
configuration.load();
|
||||
|
||||
// TODO: Clean up property names
|
||||
|
||||
/* General Configs */
|
||||
ENABLE_SOUNDS = configuration.getOrCreateBooleanProperty("enable_sounds", CATEGORY_GENERAL, true).getBoolean(false);
|
||||
ENABLE_PARTICLES = configuration.getOrCreateBooleanProperty("enable_particles", CATEGORY_GENERAL, true).getBoolean(false);
|
||||
|
@ -40,13 +39,14 @@ public class ConfigurationManager {
|
|||
|
||||
/* Item Configs */
|
||||
|
||||
/* Keybinding Configs */
|
||||
configuration.getOrCreateIntProperty("extra", CATEGORY_KEYBIND, Keyboard.KEY_C);
|
||||
configuration.getOrCreateIntProperty("charge", CATEGORY_KEYBIND, Keyboard.KEY_V);
|
||||
configuration.getOrCreateIntProperty("toggle", CATEGORY_KEYBIND, Keyboard.KEY_G);
|
||||
configuration.getOrCreateIntProperty("release", CATEGORY_KEYBIND, Keyboard.KEY_R);
|
||||
/* KeyBinding Configs */
|
||||
EquivalentExchange3.proxy.setKeyBinding(KEYBINDING_EXTRA_NAME, configuration.getOrCreateIntProperty(KEYBINDING_EXTRA_NAME, CATEGORY_KEYBIND, KEYBINDING_EXTRA_DEFAULT).getInt(KEYBINDING_EXTRA_DEFAULT));
|
||||
EquivalentExchange3.proxy.setKeyBinding(KEYBINDING_CHARGE_NAME, configuration.getOrCreateIntProperty(KEYBINDING_CHARGE_NAME, CATEGORY_KEYBIND, KEYBINDING_CHARGE_DEFAULT).getInt(KEYBINDING_CHARGE_DEFAULT));
|
||||
EquivalentExchange3.proxy.setKeyBinding(KEYBINDING_TOGGLE_NAME, configuration.getOrCreateIntProperty(KEYBINDING_TOGGLE_NAME, CATEGORY_KEYBIND, KEYBINDING_TOGGLE_DEFAULT).getInt(KEYBINDING_TOGGLE_DEFAULT));
|
||||
EquivalentExchange3.proxy.setKeyBinding(KEYBINDING_RELEASE_NAME, configuration.getOrCreateIntProperty(KEYBINDING_RELEASE_NAME, CATEGORY_KEYBIND, KEYBINDING_RELEASE_DEFAULT).getInt(KEYBINDING_RELEASE_DEFAULT));
|
||||
}
|
||||
catch (Exception e) {
|
||||
// TODO: Clean up the logging message
|
||||
FMLLog.log(Level.SEVERE, e, "Equivalent Exchange 3 has had a problem loading its configuration");
|
||||
}
|
||||
finally {
|
|
@ -2,8 +2,19 @@ package ee3.common.lib;
|
|||
|
||||
public class Reference {
|
||||
|
||||
/* General Mod related constants */
|
||||
public static final String MOD_ID = "EE3";
|
||||
public static final String MOD_NAME = "Equivalent Exchange 3";
|
||||
public static final String VERSION = "1.0.0.0";
|
||||
public static final String CHANNEL_NAME = MOD_ID;
|
||||
|
||||
/* KeyBinding related constants */
|
||||
public static final String KEYBINDING_EXTRA_NAME = "mod.ee3.extra_key";
|
||||
public static final int KEYBINDING_EXTRA_DEFAULT = 46;
|
||||
public static final String KEYBINDING_RELEASE_NAME = "mod.ee3.release_key";
|
||||
public static final int KEYBINDING_RELEASE_DEFAULT = 19;
|
||||
public static final String KEYBINDING_TOGGLE_NAME = "mod.ee3.toggle_key";
|
||||
public static final int KEYBINDING_TOGGLE_DEFAULT = 34;
|
||||
public static final String KEYBINDING_CHARGE_NAME = "mod.ee3.charge_key";
|
||||
public static final int KEYBINDING_CHARGE_DEFAULT = 47;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue