146 lines
3.6 KiB
Java
146 lines
3.6 KiB
Java
package net.minecraftforge.client.settings;
|
|
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.gui.GuiScreen;
|
|
import net.minecraft.client.resources.I18n;
|
|
import net.minecraft.client.settings.GameSettings;
|
|
import org.lwjgl.input.Keyboard;
|
|
|
|
public enum KeyModifier {
|
|
CONTROL {
|
|
@Override
|
|
public boolean matches(int keyCode)
|
|
{
|
|
if (Minecraft.IS_RUNNING_ON_MAC)
|
|
{
|
|
return keyCode == Keyboard.KEY_LMETA || keyCode == Keyboard.KEY_RMETA;
|
|
}
|
|
else
|
|
{
|
|
return keyCode == Keyboard.KEY_LCONTROL || keyCode == Keyboard.KEY_RCONTROL;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean isActive()
|
|
{
|
|
return GuiScreen.isCtrlKeyDown();
|
|
}
|
|
|
|
@Override
|
|
public String getLocalizedComboName(int keyCode)
|
|
{
|
|
String keyName = GameSettings.getKeyDisplayString(keyCode);
|
|
String localizationFormatKey = Minecraft.IS_RUNNING_ON_MAC ? "forge.controlsgui.control.mac" : "forge.controlsgui.control";
|
|
return I18n.format(localizationFormatKey, keyName);
|
|
}
|
|
},
|
|
SHIFT {
|
|
@Override
|
|
public boolean matches(int keyCode)
|
|
{
|
|
return keyCode == Keyboard.KEY_LSHIFT || keyCode == Keyboard.KEY_RSHIFT;
|
|
}
|
|
|
|
@Override
|
|
public boolean isActive()
|
|
{
|
|
return GuiScreen.isShiftKeyDown();
|
|
}
|
|
|
|
@Override
|
|
public String getLocalizedComboName(int keyCode)
|
|
{
|
|
String keyName = GameSettings.getKeyDisplayString(keyCode);
|
|
return I18n.format("forge.controlsgui.shift", keyName);
|
|
}
|
|
},
|
|
ALT {
|
|
@Override
|
|
public boolean matches(int keyCode)
|
|
{
|
|
return keyCode == Keyboard.KEY_LMENU || keyCode == Keyboard.KEY_RMENU;
|
|
}
|
|
|
|
@Override
|
|
public boolean isActive()
|
|
{
|
|
return GuiScreen.isAltKeyDown();
|
|
}
|
|
|
|
@Override
|
|
public String getLocalizedComboName(int keyCode)
|
|
{
|
|
String keyName = GameSettings.getKeyDisplayString(keyCode);
|
|
return I18n.format("forge.controlsgui.alt", keyName);
|
|
}
|
|
},
|
|
NONE {
|
|
@Override
|
|
public boolean matches(int keyCode)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean isActive()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public String getLocalizedComboName(int keyCode)
|
|
{
|
|
return GameSettings.getKeyDisplayString(keyCode);
|
|
}
|
|
};
|
|
|
|
public static final KeyModifier[] MODIFIER_VALUES = {SHIFT, CONTROL, ALT};
|
|
|
|
public static KeyModifier getActiveModifier()
|
|
{
|
|
for (KeyModifier keyModifier : MODIFIER_VALUES)
|
|
{
|
|
if (keyModifier.isActive())
|
|
{
|
|
return keyModifier;
|
|
}
|
|
}
|
|
return NONE;
|
|
}
|
|
|
|
public static boolean isKeyCodeModifier(int keyCode)
|
|
{
|
|
for (KeyModifier keyModifier : MODIFIER_VALUES)
|
|
{
|
|
if (keyModifier.matches(keyCode))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static KeyModifier valueFromString(String stringValue)
|
|
{
|
|
try
|
|
{
|
|
return valueOf(stringValue);
|
|
}
|
|
catch (NullPointerException ignored)
|
|
{
|
|
return NONE;
|
|
}
|
|
catch (IllegalArgumentException ignored)
|
|
{
|
|
return NONE;
|
|
}
|
|
}
|
|
|
|
public abstract boolean matches(int keyCode);
|
|
|
|
public abstract boolean isActive();
|
|
|
|
public abstract String getLocalizedComboName(int keyCode);
|
|
}
|