Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
234 changes: 97 additions & 137 deletions common/src/main/java/org/vivecraft/client/VivecraftVRMod.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,153 +2,113 @@

import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
import org.apache.commons.lang3.ArrayUtils;
import org.lwjgl.glfw.GLFW;
import org.vivecraft.client_vr.gameplay.screenhandlers.GuiHandler;
import org.vivecraft.client_vr.provider.HandedKeyBinding;

import java.util.*;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class VivecraftVRMod {

public static final boolean compiledWithForge = true;
public static final HandedKeyBinding keyClimbeyGrab = new HandedKeyBinding("vivecraft.key.climbeyGrab", GLFW.GLFW_KEY_UNKNOWN, "vivecraft.key.category.climbey");
public static final HandedKeyBinding keyClimbeyJump = new HandedKeyBinding("vivecraft.key.climbeyJump", GLFW.GLFW_KEY_UNKNOWN, "vivecraft.key.category.climbey");
public static final KeyMapping keyExportWorld = new KeyMapping("vivecraft.key.exportWorld", GLFW.GLFW_KEY_UNKNOWN, "key.categories.misc");
public static final KeyMapping keyFreeMoveRotate = new KeyMapping("vivecraft.key.freeMoveRotate", GLFW.GLFW_KEY_UNKNOWN, "key.categories.movement");
public static final KeyMapping keyFreeMoveStrafe = new KeyMapping("vivecraft.key.freeMoveStrafe", GLFW.GLFW_KEY_UNKNOWN, "key.categories.movement");
public static final KeyMapping keyHotbarNext = new KeyMapping("vivecraft.key.hotbarNext", GLFW.GLFW_KEY_UNKNOWN, "key.categories.inventory");
public static final KeyMapping keyHotbarPrev = new KeyMapping("vivecraft.key.hotbarPrev", GLFW.GLFW_KEY_UNKNOWN, "key.categories.inventory");
public static final KeyMapping keyHotbarScroll = new KeyMapping("vivecraft.key.hotbarScroll", GLFW.GLFW_KEY_UNKNOWN, "key.categories.inventory");
public static final KeyMapping keyHotbarSwipeX = new KeyMapping("vivecraft.key.hotbarSwipeX", GLFW.GLFW_KEY_UNKNOWN, "key.categories.inventory");
public static final KeyMapping keyHotbarSwipeY = new KeyMapping("vivecraft.key.hotbarSwipeY", GLFW.GLFW_KEY_UNKNOWN, "key.categories.inventory");
public static final KeyMapping keyMenuButton = new KeyMapping("vivecraft.key.ingameMenuButton", GLFW.GLFW_KEY_UNKNOWN, "key.categories.ui");
public static final KeyMapping keyMoveThirdPersonCam = new KeyMapping("vivecraft.key.moveThirdPersonCam", GLFW.GLFW_KEY_UNKNOWN, "key.categories.misc");
public static final KeyMapping keyQuickHandheldCam = new KeyMapping("vivecraft.key.quickHandheldCam", GLFW.GLFW_KEY_UNKNOWN, "key.categories.misc");
public static final KeyMapping keyQuickTorch = new KeyMapping("vivecraft.key.quickTorch", GLFW.GLFW_KEY_UNKNOWN, "key.categories.gameplay");
public static final KeyMapping keyRadialMenu = new KeyMapping("vivecraft.key.radialMenu", GLFW.GLFW_KEY_UNKNOWN, "key.categories.ui");
public static final KeyMapping keyRotateAxis = new KeyMapping("vivecraft.key.rotateAxis", GLFW.GLFW_KEY_UNKNOWN, "key.categories.movement");
public static final KeyMapping keyRotateFree = new KeyMapping("vivecraft.key.rotateFree", GLFW.GLFW_KEY_UNKNOWN, "key.categories.movement");
public static final KeyMapping keyRotateLeft = new KeyMapping("vivecraft.key.rotateLeft", GLFW.GLFW_KEY_UNKNOWN, "key.categories.movement");
public static final KeyMapping keyRotateRight = new KeyMapping("vivecraft.key.rotateRight", GLFW.GLFW_KEY_UNKNOWN, "key.categories.movement");
public static final KeyMapping keySwapMirrorView = new KeyMapping("vivecraft.key.swapMirrorView", GLFW.GLFW_KEY_UNKNOWN, "key.categories.misc");
public static final KeyMapping keyTeleport = new KeyMapping("vivecraft.key.teleport", GLFW.GLFW_KEY_UNKNOWN, "key.categories.movement");
public static final KeyMapping keyTeleportFallback = new KeyMapping("vivecraft.key.teleportFallback", GLFW.GLFW_KEY_UNKNOWN, "key.categories.movement");
public static final KeyMapping keyToggleHandheldCam = new KeyMapping("vivecraft.key.toggleHandheldCam", GLFW.GLFW_KEY_UNKNOWN, "key.categories.misc");
public static final KeyMapping keyToggleKeyboard = new KeyMapping("vivecraft.key.toggleKeyboard", GLFW.GLFW_KEY_UNKNOWN, "key.categories.ui");
public static final KeyMapping keyToggleMovement = new KeyMapping("vivecraft.key.toggleMovement", GLFW.GLFW_KEY_UNKNOWN, "key.categories.movement");
public static final KeyMapping keyTogglePlayerList = new KeyMapping("vivecraft.key.togglePlayerList", GLFW.GLFW_KEY_UNKNOWN, "key.categories.multiplayer");
public static final HandedKeyBinding keyTrackpadTouch = new HandedKeyBinding("vivecraft.key.trackpadTouch", GLFW.GLFW_KEY_UNKNOWN, "key.categories.misc");
public static final HandedKeyBinding keyVRInteract = new HandedKeyBinding("vivecraft.key.vrInteract", GLFW.GLFW_KEY_UNKNOWN, "key.categories.gameplay");
public static final KeyMapping keyWalkabout = new KeyMapping("vivecraft.key.walkabout", GLFW.GLFW_KEY_UNKNOWN, "key.categories.movement");

/** Key binds provided by vivecraft, which the player may bind. */
public static final Set<KeyMapping> userKeyBindingSet = new LinkedHashSet<>(Arrays.asList(
keyRotateLeft,
keyRotateRight,
keyTeleport,
keyTeleportFallback,
keyToggleMovement,
keyQuickTorch,
keySwapMirrorView,
keyExportWorld,
keyMoveThirdPersonCam,
keyTogglePlayerList,
keyToggleHandheldCam,
keyQuickHandheldCam
));

/** Key binds internal to vivecraft, which the player may <u>not</u> bind. */
public static final Set<KeyMapping> hiddenKeyBindingSet = new LinkedHashSet<>(Arrays.asList(
GuiHandler.keyLeftClick,
GuiHandler.keyRightClick,
GuiHandler.keyMiddleClick,
GuiHandler.keyShift,
GuiHandler.keyCtrl,
GuiHandler.keyAlt,
GuiHandler.keyScrollUp,
GuiHandler.keyScrollDown,
GuiHandler.keyScrollAxis,
GuiHandler.keyKeyboardClick,
GuiHandler.keyKeyboardShift,
keyClimbeyGrab,
keyClimbeyJump,
keyMenuButton,
keyRadialMenu,
keyToggleKeyboard,
keyHotbarSwipeX,
keyHotbarSwipeY,
keyTrackpadTouch,
keyRotateAxis,
keyRotateFree,
keyFreeMoveRotate,
keyFreeMoveStrafe,
keyHotbarNext,
keyHotbarPrev,
keyHotbarScroll,
keyVRInteract,
keyWalkabout
));

/** Key binds provided by vanilla. */
public static final Set<KeyMapping> vanillaBindingSet = new LinkedHashSet<>();

/** Key binds provided to the player. */
public static final Set<KeyMapping> allKeyBindingSet = Stream.concat(
userKeyBindingSet.stream(),
hiddenKeyBindingSet.stream()
).collect(Collectors.toSet());

private static final Minecraft mc = Minecraft.getInstance();

public static VivecraftVRMod INSTANCE = new VivecraftVRMod();

Set<KeyMapping> allKeyBindingSet;

// key binds that are settable by the user
Set<KeyMapping> userKeyBindingSet;

// key binds that are needed internally, but are not required to be set by the user
Set<KeyMapping> hiddenKeyBindingSet;

protected Set<KeyMapping> vanillaBindingSet;

public final HandedKeyBinding keyClimbeyGrab = new HandedKeyBinding("vivecraft.key.climbeyGrab", -1, "vivecraft.key.category.climbey");
public final HandedKeyBinding keyClimbeyJump = new HandedKeyBinding("vivecraft.key.climbeyJump", -1, "vivecraft.key.category.climbey");
public final KeyMapping keyExportWorld = new KeyMapping("vivecraft.key.exportWorld", -1, "key.categories.misc");
public final KeyMapping keyFreeMoveRotate = new KeyMapping("vivecraft.key.freeMoveRotate", -1, "key.categories.movement");
public final KeyMapping keyFreeMoveStrafe = new KeyMapping("vivecraft.key.freeMoveStrafe", -1, "key.categories.movement");
public final KeyMapping keyHotbarNext = new KeyMapping("vivecraft.key.hotbarNext", -1, "key.categories.inventory");
public final KeyMapping keyHotbarPrev = new KeyMapping("vivecraft.key.hotbarPrev", -1, "key.categories.inventory");
public final KeyMapping keyHotbarScroll = new KeyMapping("vivecraft.key.hotbarScroll", -1, "key.categories.inventory");
public final KeyMapping keyHotbarSwipeX = new KeyMapping("vivecraft.key.hotbarSwipeX", -1, "key.categories.inventory");
public final KeyMapping keyHotbarSwipeY = new KeyMapping("vivecraft.key.hotbarSwipeY", -1, "key.categories.inventory");
public final KeyMapping keyMenuButton = new KeyMapping("vivecraft.key.ingameMenuButton", -1, "key.categories.ui");
public final KeyMapping keyMoveThirdPersonCam = new KeyMapping("vivecraft.key.moveThirdPersonCam", -1, "key.categories.misc");
public final KeyMapping keyQuickHandheldCam = new KeyMapping("vivecraft.key.quickHandheldCam", -1, "key.categories.misc");
public final KeyMapping keyQuickTorch = new KeyMapping("vivecraft.key.quickTorch", -1, "key.categories.gameplay");
public final KeyMapping keyRadialMenu = new KeyMapping("vivecraft.key.radialMenu", -1, "key.categories.ui");
public final KeyMapping keyRotateAxis = new KeyMapping("vivecraft.key.rotateAxis", -1, "key.categories.movement");
public final KeyMapping keyRotateFree = new KeyMapping("vivecraft.key.rotateFree", -1, "key.categories.movement");
public final KeyMapping keyRotateLeft = new KeyMapping("vivecraft.key.rotateLeft", -1, "key.categories.movement");
public final KeyMapping keyRotateRight = new KeyMapping("vivecraft.key.rotateRight", -1, "key.categories.movement");
public final KeyMapping keySwapMirrorView = new KeyMapping("vivecraft.key.swapMirrorView", -1, "key.categories.misc");
public final KeyMapping keyTeleport = new KeyMapping("vivecraft.key.teleport", -1, "key.categories.movement");
public final KeyMapping keyTeleportFallback = new KeyMapping("vivecraft.key.teleportFallback", -1, "key.categories.movement");
public final KeyMapping keyToggleHandheldCam = new KeyMapping("vivecraft.key.toggleHandheldCam", -1, "key.categories.misc");
public final KeyMapping keyToggleKeyboard = new KeyMapping("vivecraft.key.toggleKeyboard", -1, "key.categories.ui");
public final KeyMapping keyToggleMovement = new KeyMapping("vivecraft.key.toggleMovement", -1, "key.categories.movement");
public final KeyMapping keyTogglePlayerList = new KeyMapping("vivecraft.key.togglePlayerList", -1, "key.categories.multiplayer");
public final HandedKeyBinding keyTrackpadTouch = new HandedKeyBinding("vivecraft.key.trackpadTouch", -1, "key.categories.misc");
public final HandedKeyBinding keyVRInteract = new HandedKeyBinding("vivecraft.key.vrInteract", -1, "key.categories.gameplay");
public final KeyMapping keyWalkabout = new KeyMapping("vivecraft.key.walkabout", -1, "key.categories.movement");

private void setupKeybindingSets() {
if (this.userKeyBindingSet == null || hiddenKeyBindingSet == null) {
this.userKeyBindingSet = new LinkedHashSet<>();
this.hiddenKeyBindingSet = new LinkedHashSet<>();
this.allKeyBindingSet = new LinkedHashSet<>();

this.userKeyBindingSet.add(this.keyRotateLeft);
this.userKeyBindingSet.add(this.keyRotateRight);
this.userKeyBindingSet.add(this.keyTeleport);
this.userKeyBindingSet.add(this.keyTeleportFallback);
this.userKeyBindingSet.add(this.keyToggleMovement);
this.userKeyBindingSet.add(this.keyQuickTorch);
this.userKeyBindingSet.add(this.keySwapMirrorView);
this.userKeyBindingSet.add(this.keyExportWorld);
this.userKeyBindingSet.add(this.keyMoveThirdPersonCam);
this.userKeyBindingSet.add(this.keyTogglePlayerList);
this.userKeyBindingSet.add(this.keyToggleHandheldCam);
this.userKeyBindingSet.add(this.keyQuickHandheldCam);

this.hiddenKeyBindingSet.add(GuiHandler.keyLeftClick);
this.hiddenKeyBindingSet.add(GuiHandler.keyRightClick);
this.hiddenKeyBindingSet.add(GuiHandler.keyMiddleClick);
this.hiddenKeyBindingSet.add(GuiHandler.keyShift);
this.hiddenKeyBindingSet.add(GuiHandler.keyCtrl);
this.hiddenKeyBindingSet.add(GuiHandler.keyAlt);
this.hiddenKeyBindingSet.add(GuiHandler.keyScrollUp);
this.hiddenKeyBindingSet.add(GuiHandler.keyScrollDown);
this.hiddenKeyBindingSet.add(GuiHandler.keyScrollAxis);
this.hiddenKeyBindingSet.add(GuiHandler.keyKeyboardClick);
this.hiddenKeyBindingSet.add(GuiHandler.keyKeyboardShift);
this.hiddenKeyBindingSet.add(this.keyClimbeyGrab);
this.hiddenKeyBindingSet.add(this.keyClimbeyJump);
this.hiddenKeyBindingSet.add(this.keyMenuButton);
this.hiddenKeyBindingSet.add(this.keyRadialMenu);
this.hiddenKeyBindingSet.add(this.keyToggleKeyboard);
this.hiddenKeyBindingSet.add(this.keyHotbarSwipeX);
this.hiddenKeyBindingSet.add(this.keyHotbarSwipeY);
this.hiddenKeyBindingSet.add(this.keyTrackpadTouch);

this.hiddenKeyBindingSet.add(this.keyRotateAxis);
this.hiddenKeyBindingSet.add(this.keyRotateFree);
this.hiddenKeyBindingSet.add(this.keyFreeMoveRotate);
this.hiddenKeyBindingSet.add(this.keyFreeMoveStrafe);
this.hiddenKeyBindingSet.add(this.keyHotbarNext);
this.hiddenKeyBindingSet.add(this.keyHotbarPrev);
this.hiddenKeyBindingSet.add(this.keyHotbarScroll);
this.hiddenKeyBindingSet.add(this.keyVRInteract);
this.hiddenKeyBindingSet.add(this.keyWalkabout);

allKeyBindingSet.addAll(userKeyBindingSet);
allKeyBindingSet.addAll(hiddenKeyBindingSet);
}
}

public Set<KeyMapping> getUserKeyBindings() {
setupKeybindingSets();
return this.userKeyBindingSet;
}

public Set<KeyMapping> getHiddenKeyBindings() {
setupKeybindingSets();
return hiddenKeyBindingSet;
}

public Set<KeyMapping> getAllKeyBindings() {
setupKeybindingSets();
return allKeyBindingSet;
}

public KeyMapping[] initializeBindings(KeyMapping[] keyBindings) {
for (KeyMapping keymapping : this.getUserKeyBindings()) {
keyBindings = ArrayUtils.add(keyBindings, keymapping);
}

this.setVanillaBindings(keyBindings);
Map<String, Integer> map = KeyMapping.CATEGORY_SORT_ORDER;
map.put("vivecraft.key.category.gui", 8);
map.put("vivecraft.key.category.climbey", 9);
map.put("vivecraft.key.category.keyboard", 10);
return keyBindings;
}

public void setVanillaBindings(KeyMapping[] bindings) {
this.vanillaBindingSet = new HashSet<>(Arrays.asList(bindings));
// add hidden keys, since those are not in there
vanillaBindingSet.addAll(hiddenKeyBindingSet);
}

public boolean isSafeBinding(KeyMapping kb) {
return this.getAllKeyBindings().contains(kb) || kb == mc.options.keyChat || kb == mc.options.keyInventory;
public static boolean isSafeBinding(KeyMapping kb) {
return allKeyBindingSet.contains(kb) || kb == mc.options.keyChat || kb == mc.options.keyInventory;
}

public boolean isModBinding(KeyMapping kb) {
return !this.vanillaBindingSet.contains(kb);
/** checks if a key bind is NOT provided by vanilla NOR internal to vivecraft */
public static boolean isModBinding(final KeyMapping kb) {
return !hiddenKeyBindingSet.contains(kb) && !vanillaBindingSet.contains(kb);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -583,7 +583,7 @@ public void setTeleportOverride(boolean override) {
}

public void updateTeleportKeys() {
this.dh.vr.getInputAction(VivecraftVRMod.INSTANCE.keyTeleport).setEnabled(this.isTeleportEnabled());
this.dh.vr.getInputAction(VivecraftVRMod.INSTANCE.keyTeleportFallback).setEnabled(!this.isTeleportEnabled());
this.dh.vr.getInputAction(VivecraftVRMod.keyTeleport).setEnabled(this.isTeleportEnabled());
this.dh.vr.getInputAction(VivecraftVRMod.keyTeleportFallback).setEnabled(!this.isTeleportEnabled());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ public static void processBindings() {
return;
}

if (!VivecraftVRMod.INSTANCE.keyRadialMenu.isDown()) {
if (!VivecraftVRMod.keyRadialMenu.isDown()) {
if (activecontroller == ControllerType.LEFT) {
UI.mouseClicked((int) d0, (int) d1, 0);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,8 @@ public void idleTick(LocalPlayer player) {
this.forceActivate = false;
}

this.dh.vr.getInputAction(VivecraftVRMod.INSTANCE.keyClimbeyGrab).setEnabled(ControllerType.RIGHT, this.isClimbeyClimb() && (this.isGrabbingLadder() || this.inblock[0] || this.forceActivate));
this.dh.vr.getInputAction(VivecraftVRMod.INSTANCE.keyClimbeyGrab).setEnabled(ControllerType.LEFT, this.isClimbeyClimb() && (this.isGrabbingLadder() || this.inblock[1] || this.forceActivate));
this.dh.vr.getInputAction(VivecraftVRMod.keyClimbeyGrab).setEnabled(ControllerType.RIGHT, this.isClimbeyClimb() && (this.isGrabbingLadder() || this.inblock[0] || this.forceActivate));
this.dh.vr.getInputAction(VivecraftVRMod.keyClimbeyGrab).setEnabled(ControllerType.LEFT, this.isClimbeyClimb() && (this.isGrabbingLadder() || this.inblock[1] || this.forceActivate));
}

public void reset(LocalPlayer player) {
Expand Down Expand Up @@ -307,9 +307,9 @@ public void doProcess(LocalPlayer player) {
}

if (i == 0) {
aboolean[i] = VivecraftVRMod.INSTANCE.keyClimbeyGrab.isDown(ControllerType.RIGHT);
aboolean[i] = VivecraftVRMod.keyClimbeyGrab.isDown(ControllerType.RIGHT);
} else {
aboolean[i] = VivecraftVRMod.INSTANCE.keyClimbeyGrab.isDown(ControllerType.LEFT);
aboolean[i] = VivecraftVRMod.keyClimbeyGrab.isDown(ControllerType.LEFT);
}

this.inblock[i] = this.box[i] != null && this.box[i].move(blockpos).contains(avec3[i]);
Expand All @@ -332,9 +332,9 @@ public void doProcess(LocalPlayer player) {
this.latched[i] = false;

if (i == 0) {
VivecraftVRMod.INSTANCE.keyClimbeyGrab.unpressKey(ControllerType.RIGHT);
VivecraftVRMod.keyClimbeyGrab.unpressKey(ControllerType.RIGHT);
} else {
VivecraftVRMod.INSTANCE.keyClimbeyGrab.unpressKey(ControllerType.LEFT);
VivecraftVRMod.keyClimbeyGrab.unpressKey(ControllerType.LEFT);
}

flag2 = true;
Expand Down Expand Up @@ -398,7 +398,7 @@ public void doProcess(LocalPlayer player) {
}

if (!this.wantjump && !flag3) {
this.wantjump = VivecraftVRMod.INSTANCE.keyClimbeyJump.isDown() && this.dh.jumpTracker.isClimbeyJumpEquipped();
this.wantjump = VivecraftVRMod.keyClimbeyJump.isDown() && this.dh.jumpTracker.isClimbeyJumpEquipped();
}

flag2 = flag2 & this.wantjump;
Expand All @@ -417,8 +417,8 @@ public void doProcess(LocalPlayer player) {
if (!this.latched[0] && !this.latched[1] && !flag2) {
if (player.onGround() && this.unsetflag) {
this.unsetflag = false;
VivecraftVRMod.INSTANCE.keyClimbeyGrab.unpressKey(ControllerType.RIGHT);
VivecraftVRMod.INSTANCE.keyClimbeyGrab.unpressKey(ControllerType.LEFT);
VivecraftVRMod.keyClimbeyGrab.unpressKey(ControllerType.RIGHT);
VivecraftVRMod.keyClimbeyGrab.unpressKey(ControllerType.LEFT);
}

this.latchStartController = -1;
Expand Down
Loading