Automatically update hotkey button labels when keybinding is changed
This commit is contained in:
@@ -4,6 +4,8 @@ import com.replaymod.core.KeyBindingRegistry;
|
|||||||
import com.replaymod.core.ReplayMod;
|
import com.replaymod.core.ReplayMod;
|
||||||
import com.replaymod.replay.events.ReplayOpenEvent;
|
import com.replaymod.replay.events.ReplayOpenEvent;
|
||||||
import com.replaymod.replay.gui.overlay.GuiReplayOverlay;
|
import com.replaymod.replay.gui.overlay.GuiReplayOverlay;
|
||||||
|
import de.johni0702.minecraft.gui.GuiRenderer;
|
||||||
|
import de.johni0702.minecraft.gui.RenderInfo;
|
||||||
import de.johni0702.minecraft.gui.container.GuiContainer;
|
import de.johni0702.minecraft.gui.container.GuiContainer;
|
||||||
import de.johni0702.minecraft.gui.container.GuiPanel;
|
import de.johni0702.minecraft.gui.container.GuiPanel;
|
||||||
import de.johni0702.minecraft.gui.element.GuiButton;
|
import de.johni0702.minecraft.gui.element.GuiButton;
|
||||||
@@ -75,13 +77,20 @@ public class HotkeyButtons implements Extra {
|
|||||||
keyBindingRegistry.getKeyBindings().values().stream()
|
keyBindingRegistry.getKeyBindings().values().stream()
|
||||||
.sorted(Comparator.comparing(it -> I18n.format(it.getKeyDescription())))
|
.sorted(Comparator.comparing(it -> I18n.format(it.getKeyDescription())))
|
||||||
.forEachOrdered(keyBinding -> {
|
.forEachOrdered(keyBinding -> {
|
||||||
|
GuiButton button = new GuiButton(){
|
||||||
|
@Override
|
||||||
|
public void draw(GuiRenderer renderer, ReadableDimension size, RenderInfo renderInfo) {
|
||||||
|
// There doesn't seem to be an KeyBindingUpdate event, so we'll just update it every time
|
||||||
String keyName = "???";
|
String keyName = "???";
|
||||||
try {
|
try {
|
||||||
keyName = Keyboard.getKeyName(keyBinding.getKeyCode());
|
keyName = Keyboard.getKeyName(keyBinding.getKeyCode());
|
||||||
} catch (ArrayIndexOutOfBoundsException e) {
|
} catch (ArrayIndexOutOfBoundsException e) {
|
||||||
// Apparently windows likes to press strange keys, see https://www.replaymod.com/forum/thread/55
|
// Apparently windows likes to press strange keys, see https://www.replaymod.com/forum/thread/55
|
||||||
}
|
}
|
||||||
GuiButton button = new GuiButton().setLabel(keyName).onClick(() -> {
|
setLabel(keyName);
|
||||||
|
super.draw(renderer, size, renderInfo);
|
||||||
|
}
|
||||||
|
}.onClick(() -> {
|
||||||
keyBinding.pressTime++;
|
keyBinding.pressTime++;
|
||||||
keyBindingRegistry.handleKeyBindings();
|
keyBindingRegistry.handleKeyBindings();
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user