diff --git a/src/main/java/appeng/client/ActionKey.java b/src/main/java/appeng/client/ActionKey.java new file mode 100644 index 000000000..1ef32dc48 --- /dev/null +++ b/src/main/java/appeng/client/ActionKey.java @@ -0,0 +1,28 @@ + +package appeng.client; + + +import org.lwjgl.input.Keyboard; + + +public enum ActionKey +{ + TOGGLE_FOCUS( Keyboard.KEY_TAB ); + + private final int defaultKey; + + private ActionKey( int defaultKey ) + { + this.defaultKey = defaultKey; + } + + public String getTranslationKey() + { + return "key." + this.name().toLowerCase() + ".desc"; + } + + public int getDefaultKey() + { + return this.defaultKey; + } +} diff --git a/src/main/java/appeng/client/ClientHelper.java b/src/main/java/appeng/client/ClientHelper.java index ecda45076..2731555fb 100644 --- a/src/main/java/appeng/client/ClientHelper.java +++ b/src/main/java/appeng/client/ClientHelper.java @@ -21,11 +21,13 @@ package appeng.client; import java.io.IOException; import java.util.ArrayList; +import java.util.EnumMap; import java.util.List; import java.util.Random; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.settings.KeyBinding; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.tileentity.TileEntity; @@ -40,6 +42,7 @@ import net.minecraftforge.client.model.ModelLoaderRegistry; import net.minecraftforge.common.ForgeModContainer; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.client.FMLClientHandler; +import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.client.registry.RenderingRegistry; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -74,6 +77,9 @@ import appeng.util.Platform; public class ClientHelper extends ServerHelper { + private final static String KEY_CATEGORY = "key.appliedenergistics2.category"; + + private final EnumMap bindings = new EnumMap<>( ActionKey.class ); @Override public void preinit() @@ -92,6 +98,12 @@ public class ClientHelper extends ServerHelper @Override public void init() { + for( ActionKey key : ActionKey.values() ) + { + final KeyBinding binding = new KeyBinding( key.getTranslationKey(), key.getDefaultKey(), KEY_CATEGORY ); + ClientRegistry.registerKeyBinding( binding ); + this.bindings.put( key, binding ); + } } @Override @@ -332,4 +344,16 @@ public class ClientHelper extends ServerHelper ParticleTextures.registerSprite( event ); InscriberTESR.registerTexture( event ); } + + @Override + public boolean isKeyPressed( ActionKey key ) + { + return this.bindings.get( key ).isPressed(); + } + + @Override + public boolean isActionKey( ActionKey key, int pressedKeyCode ) + { + return this.bindings.get( key ).isActiveAndMatches( pressedKeyCode ); + } } \ No newline at end of file diff --git a/src/main/java/appeng/client/gui/implementations/GuiMEMonitorable.java b/src/main/java/appeng/client/gui/implementations/GuiMEMonitorable.java index 8f05d3080..97611d1d2 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiMEMonitorable.java +++ b/src/main/java/appeng/client/gui/implementations/GuiMEMonitorable.java @@ -40,6 +40,7 @@ import appeng.api.storage.ITerminalHost; import appeng.api.storage.data.IAEItemStack; import appeng.api.util.IConfigManager; import appeng.api.util.IConfigurableObject; +import appeng.client.ActionKey; import appeng.client.gui.AEBaseMEGui; import appeng.client.gui.widgets.GuiImgButton; import appeng.client.gui.widgets.GuiScrollbar; @@ -54,6 +55,7 @@ import appeng.container.slot.SlotCraftingMatrix; import appeng.container.slot.SlotFakeCraftingMatrix; import appeng.core.AEConfig; import appeng.core.AELog; +import appeng.core.AppEng; import appeng.core.localization.GuiText; import appeng.core.sync.GuiBridge; import appeng.core.sync.network.NetworkHandler; @@ -481,7 +483,7 @@ public class GuiMEMonitorable extends AEBaseMEGui implements ISortSource, IConfi if( !this.checkHotbarKeys( key ) ) { - if( key == Keyboard.KEY_TAB ) + if( AppEng.proxy.isActionKey( ActionKey.TOGGLE_FOCUS, key ) ) { this.searchField.setFocused( !this.searchField.isFocused() ); return; diff --git a/src/main/java/appeng/core/AppEng.java b/src/main/java/appeng/core/AppEng.java index 02b0f5f6d..705df7ea2 100644 --- a/src/main/java/appeng/core/AppEng.java +++ b/src/main/java/appeng/core/AppEng.java @@ -198,6 +198,8 @@ public final class AppEng final Stopwatch start = Stopwatch.createStarted(); AELog.info( "Initialization ( started )" ); + AppEng.proxy.init(); + if( this.exportConfig.isExportingItemNamesEnabled() ) { if( FMLCommonHandler.instance().getSide().isClient() ) diff --git a/src/main/java/appeng/core/CommonHelper.java b/src/main/java/appeng/core/CommonHelper.java index 80bce3bf7..bb0322af9 100644 --- a/src/main/java/appeng/core/CommonHelper.java +++ b/src/main/java/appeng/core/CommonHelper.java @@ -22,6 +22,8 @@ package appeng.core; import java.util.List; import java.util.Random; +import javax.annotation.Nonnull; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.RayTraceResult; @@ -29,6 +31,7 @@ import net.minecraft.world.World; import appeng.api.parts.CableRenderMode; import appeng.block.AEBaseBlock; +import appeng.client.ActionKey; import appeng.client.EffectType; import appeng.core.sync.AppEngPacket; @@ -62,4 +65,8 @@ public abstract class CommonHelper public abstract void updateRenderMode( EntityPlayer player ); + public abstract boolean isKeyPressed( @Nonnull final ActionKey key ); + + public abstract boolean isActionKey( @Nonnull final ActionKey key, int pressedKeyCode ); + } diff --git a/src/main/java/appeng/server/ServerHelper.java b/src/main/java/appeng/server/ServerHelper.java index cfc2935eb..3c9339374 100644 --- a/src/main/java/appeng/server/ServerHelper.java +++ b/src/main/java/appeng/server/ServerHelper.java @@ -36,6 +36,7 @@ import net.minecraftforge.fml.common.FMLCommonHandler; import appeng.api.parts.CableRenderMode; import appeng.block.AEBaseBlock; +import appeng.client.ActionKey; import appeng.client.EffectType; import appeng.core.CommonHelper; import appeng.core.sync.AppEngPacket; @@ -183,4 +184,16 @@ public class ServerHelper extends CommonHelper return CableRenderMode.STANDARD; } + + @Override + public boolean isKeyPressed( ActionKey key ) + { + return false; + } + + @Override + public boolean isActionKey( ActionKey key, int pressedKeyCode ) + { + return false; + } } diff --git a/src/main/resources/assets/appliedenergistics2/lang/en_us.lang b/src/main/resources/assets/appliedenergistics2/lang/en_us.lang index f82ebf99f..d4972e52e 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/en_us.lang +++ b/src/main/resources/assets/appliedenergistics2/lang/en_us.lang @@ -620,3 +620,7 @@ achievement.ae2.QNB.desc=Craft a Quantum Link stat.ae2.ItemsInserted=Items added to ME Storage stat.ae2.ItemsExtracted=Items extracted from ME Storage stat.ae2.TurnedCranks=Turned Cranks + +//Keys +key.appliedenergistics2.category=Applied Energistics 2 +key.toggle_focus.desc=Toggle search box focus