From fd48e56238425ba3eb4357cbd29fafb9088edeb0 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Fri, 28 Aug 2020 15:45:34 +0200 Subject: [PATCH] Add keybindings for the two keyframe buttons (closes #312) And one to add a position keyframe even when spectating. And one to press both buttons with a single key. --- .../simplepathing/ReplayModSimplePathing.java | 15 +++++++++++++++ .../replaymod/simplepathing/gui/GuiPathing.java | 13 +++++++------ src/main/resources/assets/replaymod/lang | 2 +- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/replaymod/simplepathing/ReplayModSimplePathing.java b/src/main/java/com/replaymod/simplepathing/ReplayModSimplePathing.java index 88380fe9..7674df7c 100644 --- a/src/main/java/com/replaymod/simplepathing/ReplayModSimplePathing.java +++ b/src/main/java/com/replaymod/simplepathing/ReplayModSimplePathing.java @@ -91,6 +91,21 @@ public class ReplayModSimplePathing extends EventRegistrations implements Module core.getKeyBindingRegistry().registerRaw(Keyboard.KEY_DELETE, () -> { if (guiPathing != null) guiPathing.deleteButtonPressed(); }); + core.getKeyBindingRegistry().registerKeyBinding("replaymod.input.positionkeyframe", Keyboard.KEY_I, () -> { + if (guiPathing != null) guiPathing.toggleKeyframe(SPPath.POSITION, false); + }, true); + core.getKeyBindingRegistry().registerKeyBinding("replaymod.input.positiononlykeyframe", 0, () -> { + if (guiPathing != null) guiPathing.toggleKeyframe(SPPath.POSITION, true); + }, true); + core.getKeyBindingRegistry().registerKeyBinding("replaymod.input.timekeyframe", Keyboard.KEY_O, () -> { + if (guiPathing != null) guiPathing.toggleKeyframe(SPPath.TIME, false); + }, true); + core.getKeyBindingRegistry().registerKeyBinding("replaymod.input.bothkeyframes", 0, () -> { + if (guiPathing != null) { + guiPathing.toggleKeyframe(SPPath.TIME, false); + guiPathing.toggleKeyframe(SPPath.POSITION, false); + } + }, true); } { on(ReplayOpenedCallback.EVENT, this::onReplayOpened); } diff --git a/src/main/java/com/replaymod/simplepathing/gui/GuiPathing.java b/src/main/java/com/replaymod/simplepathing/gui/GuiPathing.java index a9bf7f44..9318d0ad 100644 --- a/src/main/java/com/replaymod/simplepathing/gui/GuiPathing.java +++ b/src/main/java/com/replaymod/simplepathing/gui/GuiPathing.java @@ -368,7 +368,7 @@ public class GuiPathing { }).onClick(new Runnable() { @Override public void run() { - updateKeyframe(SPPath.POSITION); + toggleKeyframe(SPPath.POSITION, false); } }); @@ -395,7 +395,7 @@ public class GuiPathing { }).onClick(new Runnable() { @Override public void run() { - updateKeyframe(SPPath.TIME); + toggleKeyframe(SPPath.TIME, false); } }); @@ -487,7 +487,7 @@ public class GuiPathing { public void deleteButtonPressed() { if (mod.getSelectedPath() != null) { - updateKeyframe(mod.getSelectedPath()); + toggleKeyframe(mod.getSelectedPath(), false); } } @@ -603,10 +603,11 @@ public class GuiPathing { /** * Called when either one of the property buttons is pressed. * @param path {@code TIME} for the time property button, {@code POSITION} for the place property button + * @param neverSpectator when true, will insert a position keyframe even when currently spectating an entity */ - private void updateKeyframe(SPPath path) { + public void toggleKeyframe(SPPath path, boolean neverSpectator) { LOGGER.debug("Updating keyframe on path {}" + path); - if (!loadEntityTracker(() -> updateKeyframe(path))) return; + if (!loadEntityTracker(() -> toggleKeyframe(path, neverSpectator))) return; int time = timeline.getCursorPosition(); SPTimeline timeline = mod.getCurrentTimeline(); @@ -640,7 +641,7 @@ public class GuiPathing { LOGGER.debug("No position keyframe found -> adding new keyframe"); CameraEntity camera = replayHandler.getCameraEntity(); int spectatedId = -1; - if (!replayHandler.isCameraView()) { + if (!replayHandler.isCameraView() && !neverSpectator) { spectatedId = getRenderViewEntity(replayHandler.getOverlay().getMinecraft()).getEntityId(); } timeline.addPositionKeyframe(time, Entity_getX(camera), Entity_getY(camera), Entity_getZ(camera), diff --git a/src/main/resources/assets/replaymod/lang b/src/main/resources/assets/replaymod/lang index 8936798b..0f708bbc 160000 --- a/src/main/resources/assets/replaymod/lang +++ b/src/main/resources/assets/replaymod/lang @@ -1 +1 @@ -Subproject commit 8936798bea45b8ab9422040420e8ec59aabf055d +Subproject commit 0f708bbcfb95ce400064e3b98a81320ddca05a00