package codechicken.nei.config; import net.minecraft.util.EnumChatFormatting; import org.lwjgl.input.Keyboard; public class OptionKeyBind extends OptionButton { private boolean hasFocus = false; public OptionKeyBind(String name) { super("keys." + name); } @Override public void onMouseClicked(int mousex, int mousey, int button) { hasFocus = false; } @Override public void keyTyped(char c, int keycode) { if (hasFocus) { setValue(keycode); hasFocus = false; } } @Override public boolean onClick(int button) { if (button == 0) { hasFocus = true; return true; } if (button == 1 && getValue() != 0) { setValue(0); return true; } return false; } public boolean conflicted() { if (getValue() == 0) { return false; } for (Option o : slot.options) { if (o instanceof OptionKeyBind && o != this && ((OptionKeyBind) o).getValue() == getValue()) { return true; } } return false; } public void setValue(int keycode) { getTag().setIntValue(keycode); } public int getValue() { return renderTag().getIntValue(); } @Override public String getPrefix() { return translateN(name); } @Override public String getButtonText() { if (hasFocus) { return EnumChatFormatting.WHITE + "> " + EnumChatFormatting.YELLOW + "??? " + EnumChatFormatting.WHITE + "<"; } if (conflicted()) { return EnumChatFormatting.RED + Keyboard.getKeyName(getValue()); } return Keyboard.getKeyName(getValue()); } @Override public int getTextColour(int mousex, int mousey) { return -1; } }