Fix crash when clicking hotkey button; introduced in 83690f4

This commit is contained in:
Jonas Herzig
2020-11-05 15:39:41 +01:00
parent 6fc7b8fb0f
commit e86a583558
2 changed files with 10 additions and 8 deletions

View File

@@ -2,6 +2,7 @@ package com.replaymod.core;
import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap; import com.google.common.collect.Multimap;
import com.replaymod.core.mixin.KeyBindingAccessor;
import de.johni0702.minecraft.gui.utils.EventRegistrations; import de.johni0702.minecraft.gui.utils.EventRegistrations;
import com.replaymod.core.versions.MCVer; import com.replaymod.core.versions.MCVer;
import net.minecraft.client.options.KeyBinding; import net.minecraft.client.options.KeyBinding;
@@ -127,7 +128,7 @@ public class KeyBindingRegistry extends EventRegistrations {
} }
} }
public void handleKeyBindings() { private void handleKeyBindings() {
for (Binding binding : bindings.values()) { for (Binding binding : bindings.values()) {
while (binding.keyBinding.wasPressed()) { while (binding.keyBinding.wasPressed()) {
invokeKeyBindingHandlers(binding, binding.handlers); invokeKeyBindingHandlers(binding, binding.handlers);
@@ -169,7 +170,7 @@ public class KeyBindingRegistry extends EventRegistrations {
} }
} }
public static class Binding { public class Binding {
public final String name; public final String name;
public final KeyBinding keyBinding; public final KeyBinding keyBinding;
private final List<Runnable> handlers = new ArrayList<>(); private final List<Runnable> handlers = new ArrayList<>();
@@ -183,5 +184,11 @@ public class KeyBindingRegistry extends EventRegistrations {
public String getBoundKey() { public String getBoundKey() {
return MCVer.getBoundKey(keyBinding); return MCVer.getBoundKey(keyBinding);
} }
public void trigger() {
KeyBindingAccessor acc = (KeyBindingAccessor) keyBinding;
acc.setPressTime(acc.getPressTime() + 1);
handleKeyBindings();
}
} }
} }

View File

@@ -2,7 +2,6 @@ package com.replaymod.extras;
import com.replaymod.core.KeyBindingRegistry; import com.replaymod.core.KeyBindingRegistry;
import com.replaymod.core.ReplayMod; import com.replaymod.core.ReplayMod;
import com.replaymod.core.mixin.KeyBindingAccessor;
import com.replaymod.replay.events.ReplayOpenedCallback; import com.replaymod.replay.events.ReplayOpenedCallback;
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.GuiRenderer;
@@ -77,11 +76,7 @@ public class HotkeyButtons extends EventRegistrations implements Extra {
setLabel(keyBinding.getBoundKey()); setLabel(keyBinding.getBoundKey());
super.draw(renderer, size, renderInfo); super.draw(renderer, size, renderInfo);
} }
}.onClick(() -> { }.onClick(keyBinding::trigger);
KeyBindingAccessor acc = (KeyBindingAccessor) keyBinding;
acc.setPressTime(acc.getPressTime() + 1);
keyBindingRegistry.handleKeyBindings();
});
panel.addElements(null, new GuiPanel().setSize(150, 20).setLayout(new HorizontalLayout().setSpacing(2)) panel.addElements(null, new GuiPanel().setSize(150, 20).setLayout(new HorizontalLayout().setSpacing(2))
.addElements(new HorizontalLayout.Data(0.5), .addElements(new HorizontalLayout.Data(0.5),
new GuiPanel().setLayout(new CustomLayout<GuiPanel>() { new GuiPanel().setLayout(new CustomLayout<GuiPanel>() {