From 31eed8801a5f4175c5c2af17785334088d82463c Mon Sep 17 00:00:00 2001 From: johni0702 Date: Fri, 2 Sep 2016 22:40:03 +0200 Subject: [PATCH] Add rotation key bindings --- src/main/java/com/replaymod/core/utils/Utils.java | 5 +++++ .../java/com/replaymod/replay/ReplayModReplay.java | 13 +++++++++++++ .../com/replaymod/replay/camera/CameraEntity.java | 11 +++++++++++ 3 files changed, 29 insertions(+) diff --git a/src/main/java/com/replaymod/core/utils/Utils.java b/src/main/java/com/replaymod/core/utils/Utils.java index 828e0e80..3a088a83 100644 --- a/src/main/java/com/replaymod/core/utils/Utils.java +++ b/src/main/java/com/replaymod/core/utils/Utils.java @@ -4,6 +4,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.network.NetworkPlayerInfo; import net.minecraft.client.resources.DefaultPlayerSkin; import net.minecraft.util.ResourceLocation; +import org.lwjgl.input.Keyboard; import org.lwjgl.util.Dimension; import org.lwjgl.util.ReadableDimension; @@ -71,4 +72,8 @@ public class Utils { } return skinLocation; } + + public static boolean isCtrlDown() { + return Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) || Keyboard.isKeyDown(Keyboard.KEY_RCONTROL); + } } diff --git a/src/main/java/com/replaymod/replay/ReplayModReplay.java b/src/main/java/com/replaymod/replay/ReplayModReplay.java index fc14e856..7cc2d640 100644 --- a/src/main/java/com/replaymod/replay/ReplayModReplay.java +++ b/src/main/java/com/replaymod/replay/ReplayModReplay.java @@ -23,6 +23,7 @@ import javax.annotation.Nullable; import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Optional; @Mod(modid = ReplayModReplay.MOD_ID, useMetadata = true) public class ReplayModReplay { @@ -106,6 +107,18 @@ public class ReplayModReplay { } }); + core.getKeyBindingRegistry().registerKeyBinding("replaymod.input.rollclockwise", Keyboard.KEY_L, () -> { + // Noop, actual handling logic in CameraEntity#update + }); + + core.getKeyBindingRegistry().registerKeyBinding("replaymod.input.rollcounterclockwise", Keyboard.KEY_J, () -> { + // Noop, actual handling logic in CameraEntity#update + }); + + core.getKeyBindingRegistry().registerKeyBinding("replaymod.input.resettilt", Keyboard.KEY_K, () -> { + Optional.ofNullable(replayHandler).map(ReplayHandler::getCameraEntity).ifPresent(c -> c.roll = 0); + }); + cameraControllerRegistry.register("replaymod.camera.classic", new Function() { @Nullable @Override diff --git a/src/main/java/com/replaymod/replay/camera/CameraEntity.java b/src/main/java/com/replaymod/replay/camera/CameraEntity.java index bef95fad..4674c4c9 100755 --- a/src/main/java/com/replaymod/replay/camera/CameraEntity.java +++ b/src/main/java/com/replaymod/replay/camera/CameraEntity.java @@ -1,5 +1,6 @@ package com.replaymod.replay.camera; +import com.replaymod.core.ReplayMod; import com.replaymod.core.events.SettingsChangedEvent; import com.replaymod.core.utils.Utils; import com.replaymod.replay.ReplayModReplay; @@ -11,6 +12,7 @@ import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.network.NetHandlerPlayClient; +import net.minecraft.client.settings.KeyBinding; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.item.EntityItemFrame; @@ -29,6 +31,7 @@ import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; +import java.util.Map; import java.util.UUID; import java.util.function.Function; @@ -284,6 +287,14 @@ public class CameraEntity extends EntityPlayerSP { mc.gameSettings.keyBindSneak.pressTime = 0; } } + + Map keyBindings = ReplayMod.instance.getKeyBindingRegistry().getKeyBindings(); + if (keyBindings.get("replaymod.input.rollclockwise").isKeyDown()) { + roll += Utils.isCtrlDown() ? 0.2 : 1; + } + if (keyBindings.get("replaymod.input.rollcounterclockwise").isKeyDown()) { + roll -= Utils.isCtrlDown() ? 0.2 : 1; + } } private void updateArmYawAndPitch() {