diff --git a/common/src/main/java/org/vivecraft/client/VivecraftVRMod.java b/common/src/main/java/org/vivecraft/client/VivecraftVRMod.java index c0c90717b..834335fb0 100644 --- a/common/src/main/java/org/vivecraft/client/VivecraftVRMod.java +++ b/common/src/main/java/org/vivecraft/client/VivecraftVRMod.java @@ -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 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 not bind. */ + public static final Set 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 vanillaBindingSet = new LinkedHashSet<>(); + + /** Key binds provided to the player. */ + public static final Set allKeyBindingSet = Stream.concat( + userKeyBindingSet.stream(), + hiddenKeyBindingSet.stream() + ).collect(Collectors.toSet()); private static final Minecraft mc = Minecraft.getInstance(); - public static VivecraftVRMod INSTANCE = new VivecraftVRMod(); - - Set allKeyBindingSet; - - // key binds that are settable by the user - Set userKeyBindingSet; - - // key binds that are needed internally, but are not required to be set by the user - Set hiddenKeyBindingSet; - - protected Set 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 getUserKeyBindings() { - setupKeybindingSets(); - return this.userKeyBindingSet; - } - - public Set getHiddenKeyBindings() { - setupKeybindingSets(); - return hiddenKeyBindingSet; - } - - public Set getAllKeyBindings() { - setupKeybindingSets(); - return allKeyBindingSet; - } - - public KeyMapping[] initializeBindings(KeyMapping[] keyBindings) { - for (KeyMapping keymapping : this.getUserKeyBindings()) { - keyBindings = ArrayUtils.add(keyBindings, keymapping); - } - - this.setVanillaBindings(keyBindings); - Map 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); } } diff --git a/common/src/main/java/org/vivecraft/client_vr/gameplay/VRPlayer.java b/common/src/main/java/org/vivecraft/client_vr/gameplay/VRPlayer.java index 519e3a092..5d1e0fa2e 100644 --- a/common/src/main/java/org/vivecraft/client_vr/gameplay/VRPlayer.java +++ b/common/src/main/java/org/vivecraft/client_vr/gameplay/VRPlayer.java @@ -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()); } } diff --git a/common/src/main/java/org/vivecraft/client_vr/gameplay/screenhandlers/RadialHandler.java b/common/src/main/java/org/vivecraft/client_vr/gameplay/screenhandlers/RadialHandler.java index f9923ea28..3f309216a 100644 --- a/common/src/main/java/org/vivecraft/client_vr/gameplay/screenhandlers/RadialHandler.java +++ b/common/src/main/java/org/vivecraft/client_vr/gameplay/screenhandlers/RadialHandler.java @@ -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 { diff --git a/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/ClimbTracker.java b/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/ClimbTracker.java index 3926e0fde..a9ce60e15 100644 --- a/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/ClimbTracker.java +++ b/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/ClimbTracker.java @@ -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) { @@ -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]); @@ -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; @@ -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; @@ -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; diff --git a/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/InteractTracker.java b/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/InteractTracker.java index 56f1cac75..3320884f9 100644 --- a/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/InteractTracker.java +++ b/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/InteractTracker.java @@ -95,7 +95,7 @@ private void reset(LocalPlayer player, int c) { this.inCamera[c] = false; this.inHandheldCamera[c] = false; this.active[c] = false; - this.dh.vr.getInputAction(VivecraftVRMod.INSTANCE.keyVRInteract).setEnabled(ControllerType.values()[c], false); + this.dh.vr.getInputAction(VivecraftVRMod.keyVRInteract).setEnabled(ControllerType.values()[c], false); } public void doProcess(LocalPlayer player) { @@ -143,7 +143,7 @@ public void doProcess(LocalPlayer player) { Vec3 vec34 = new Vec3(0.0D, 0.0D, -1.0D); for (int j = 0; j < 2; ++j) { - if (!this.inCamera[j] && !this.inHandheldCamera[j] || !VivecraftVRMod.INSTANCE.keyVRInteract.isDown(ControllerType.values()[j])) { + if (!this.inCamera[j] && !this.inHandheldCamera[j] || !VivecraftVRMod.keyVRInteract.isDown(ControllerType.values()[j])) { this.reset(player, j); if (j == 0 && this.hotbar >= 0) { @@ -218,7 +218,7 @@ public void doProcess(LocalPlayer player) { this.dh.vr.triggerHapticPulse(j, 250); } - this.dh.vr.getInputAction(VivecraftVRMod.INSTANCE.keyVRInteract).setEnabled(ControllerType.values()[j], this.active[j]); + this.dh.vr.getInputAction(VivecraftVRMod.keyVRInteract).setEnabled(ControllerType.values()[j], this.active[j]); this.wasactive[j] = this.active[j]; } } @@ -238,7 +238,7 @@ public boolean isInHandheldCamera() { public void processBindings() { for (int i = 0; i < 2; ++i) { - if (VivecraftVRMod.INSTANCE.keyVRInteract.consumeClick(ControllerType.values()[i]) && this.active[i]) { + if (VivecraftVRMod.keyVRInteract.consumeClick(ControllerType.values()[i]) && this.active[i]) { InteractionHand interactionhand = InteractionHand.values()[i]; boolean flag = false; diff --git a/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/JumpTracker.java b/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/JumpTracker.java index 978020270..5a7bf6827 100644 --- a/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/JumpTracker.java +++ b/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/JumpTracker.java @@ -58,7 +58,7 @@ public boolean isjumping() { } public void idleTick(LocalPlayer player) { - this.dh.vr.getInputAction(VivecraftVRMod.INSTANCE.keyClimbeyJump).setEnabled(this.isClimbeyJumpEquipped() && (this.isActive(player) || this.dh.climbTracker.isClimbeyClimbEquipped() && this.dh.climbTracker.isGrabbingLadder())); + this.dh.vr.getInputAction(VivecraftVRMod.keyClimbeyJump).setEnabled(this.isClimbeyJumpEquipped() && (this.isActive(player) || this.dh.climbTracker.isClimbeyClimbEquipped() && this.dh.climbTracker.isGrabbingLadder())); } public void reset(LocalPlayer player) { @@ -72,7 +72,7 @@ public void doProcess(LocalPlayer player) { boolean[] aboolean = new boolean[2]; for (int i = 0; i < 2; ++i) { - aboolean[i] = VivecraftVRMod.INSTANCE.keyClimbeyJump.isDown(); + aboolean[i] = VivecraftVRMod.keyClimbeyJump.isDown(); } boolean flag = false; diff --git a/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/SwingTracker.java b/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/SwingTracker.java index 6750cd09e..9acfab167 100644 --- a/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/SwingTracker.java +++ b/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/SwingTracker.java @@ -24,6 +24,7 @@ import org.vivecraft.client_vr.Vec3History; import org.vivecraft.client_vr.provider.ControllerType; import org.vivecraft.client_vr.settings.VRSettings; +import org.vivecraft.mixin.accessor.client.multiplayer.MultiplayerGameModeAccessor; import java.util.List; @@ -179,7 +180,7 @@ public void doProcess(LocalPlayer player) { this.canact[i] = this.canact[i] && !flag1 && !flag2; - if (!this.dh.climbTracker.isClimbeyClimb() || (i != 0 || !VivecraftVRMod.INSTANCE.keyClimbeyGrab.isDown(ControllerType.RIGHT)) && flag && (i != 1 || !VivecraftVRMod.INSTANCE.keyClimbeyGrab.isDown(ControllerType.LEFT)) && flag) { + if (!this.dh.climbTracker.isClimbeyClimb() || (i != 0 || !VivecraftVRMod.keyClimbeyGrab.isDown(ControllerType.RIGHT)) && flag && (i != 1 || !VivecraftVRMod.keyClimbeyGrab.isDown(ControllerType.LEFT)) && flag) { BlockPos blockpos = BlockPos.containing(this.miningPoint[i]); BlockState blockstate = this.mc.level.getBlockState(blockpos); BlockHitResult blockhitresult1 = this.mc.level.clip(new ClipContext(this.lastWeaponEndAir[i], this.miningPoint[i], ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, this.mc.player)); @@ -230,7 +231,7 @@ public void doProcess(LocalPlayer player) { } } - Minecraft.getInstance().gameMode.destroyDelay = 0; + ((MultiplayerGameModeAccessor) Minecraft.getInstance().gameMode).setDestroyDelay(0); } this.dh.vrPlayer.blockDust(blockhitresult1.getLocation().x, blockhitresult1.getLocation().y, blockhitresult1.getLocation().z, 3 * j, blockpos, blockstate, 0.6F, 1.0F); diff --git a/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/TeleportTracker.java b/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/TeleportTracker.java index ed49906f4..ddaca2fc1 100644 --- a/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/TeleportTracker.java +++ b/common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/TeleportTracker.java @@ -87,7 +87,7 @@ public void doProcess(LocalPlayer player) { boolean flag = false; Vec3 vec3 = null; - boolean flag1 = VivecraftVRMod.INSTANCE.keyTeleport.isDown() && this.dh.vrPlayer.isTeleportEnabled(); + boolean flag1 = VivecraftVRMod.keyTeleport.isDown() && this.dh.vrPlayer.isTeleportEnabled(); boolean flag2 = this.dh.vrSettings.seated && !this.dh.vrPlayer.getFreeMove() && (player.input.forwardImpulse != 0.0F || player.input.leftImpulse != 0.0F); if ((flag1 || flag2) && !player.isPassenger()) { diff --git a/common/src/main/java/org/vivecraft/client_vr/menuworlds/MenuWorldExporter.java b/common/src/main/java/org/vivecraft/client_vr/menuworlds/MenuWorldExporter.java index 367c9b732..28accaecf 100644 --- a/common/src/main/java/org/vivecraft/client_vr/menuworlds/MenuWorldExporter.java +++ b/common/src/main/java/org/vivecraft/client_vr/menuworlds/MenuWorldExporter.java @@ -32,6 +32,8 @@ import net.minecraft.world.level.dimension.DimensionType; import org.vivecraft.client.Xplat; import org.vivecraft.client_vr.settings.VRSettings; +import org.vivecraft.mixin.accessor.world.level.biome.AmbientParticleSettingsAccessor; +import org.vivecraft.mixin.accessor.world.level.biome.BiomeManagerAccessor; import java.io.*; import java.util.*; @@ -96,7 +98,7 @@ public static byte[] saveArea(Level level, int xMin, int zMin, int xSize, int zS if (level instanceof ServerLevel) { dos.writeLong(((ServerLevel) level).getSeed()); } else { - dos.writeLong(level.getBiomeManager().biomeZoomSeed); // not really correct :/ + dos.writeLong(((BiomeManagerAccessor) level.getBiomeManager()).getBiomeZoomSeed()); // not really correct :/ } dos.writeInt(SharedConstants.getCurrentVersion().getDataVersion().getVersion()); @@ -511,7 +513,7 @@ void writePalette(DataOutputStream dos, RegistryAccess registryAccess) throws IO if (specialEffects.getAmbientParticleSettings().isPresent()) { AmbientParticleSettings ambientParticleSettings = specialEffects.getAmbientParticleSettings().get(); dos.writeUTF(BuiltInRegistries.PARTICLE_TYPE.getKey(ambientParticleSettings.getOptions().getType()).toString()); - dos.writeFloat(ambientParticleSettings.probability); + dos.writeFloat(((AmbientParticleSettingsAccessor) ambientParticleSettings).getProbability()); } } } diff --git a/common/src/main/java/org/vivecraft/client_vr/menuworlds/MenuWorldRenderer.java b/common/src/main/java/org/vivecraft/client_vr/menuworlds/MenuWorldRenderer.java index 7e53be130..307e7156e 100644 --- a/common/src/main/java/org/vivecraft/client_vr/menuworlds/MenuWorldRenderer.java +++ b/common/src/main/java/org/vivecraft/client_vr/menuworlds/MenuWorldRenderer.java @@ -43,6 +43,7 @@ import org.vivecraft.client.Xplat; import org.vivecraft.client_vr.ClientDataHolderVR; import org.vivecraft.client_vr.settings.VRSettings; +import org.vivecraft.mixin.accessor.world.level.block.state.StateHolderAccessor; import org.vivecraft.mod_compat_vr.optifine.OptifineHelper; import org.vivecraft.mod_compat_vr.sodium.SodiumHelper; @@ -1620,7 +1621,7 @@ private static class FluidStateWrapper extends FluidState { @SuppressWarnings("unchecked") public FluidStateWrapper(FluidState fluidState) { - super(fluidState.getType(), fluidState.getValues(), fluidState.propertiesCodec); + super(fluidState.getType(), fluidState.getValues(), ((StateHolderAccessor) fluidState).getPropertiesCodec()); this.fluidState = fluidState; } diff --git a/common/src/main/java/org/vivecraft/client_vr/provider/InputSimulator.java b/common/src/main/java/org/vivecraft/client_vr/provider/InputSimulator.java index 0266326fb..342a13122 100644 --- a/common/src/main/java/org/vivecraft/client_vr/provider/InputSimulator.java +++ b/common/src/main/java/org/vivecraft/client_vr/provider/InputSimulator.java @@ -1,6 +1,8 @@ package org.vivecraft.client_vr.provider; import net.minecraft.client.Minecraft; +import org.vivecraft.mixin.accessor.client.KeyboardHandlerAccessor; +import org.vivecraft.mixin.accessor.client.MouseHandlerAccessor; import java.util.HashSet; import java.util.Set; @@ -31,7 +33,7 @@ public static void releaseKey(int key) { } public static void typeChar(char character, int modifiers) { - Minecraft.getInstance().keyboardHandler.charTyped(Minecraft.getInstance().getWindow().getWindow(), character, modifiers); + ((KeyboardHandlerAccessor) Minecraft.getInstance().keyboardHandler).callCharTyped(Minecraft.getInstance().getWindow().getWindow(), character, modifiers); } public static void typeChar(char character) { @@ -39,7 +41,7 @@ public static void typeChar(char character) { } public static void pressMouse(int button, int modifiers) { - Minecraft.getInstance().mouseHandler.onPress(Minecraft.getInstance().getWindow().getWindow(), button, 1, modifiers); + ((MouseHandlerAccessor) Minecraft.getInstance().mouseHandler).callOnPress(Minecraft.getInstance().getWindow().getWindow(), button, 1, modifiers); } public static void pressMouse(int button) { @@ -47,7 +49,7 @@ public static void pressMouse(int button) { } public static void releaseMouse(int button, int modifiers) { - Minecraft.getInstance().mouseHandler.onPress(Minecraft.getInstance().getWindow().getWindow(), button, 0, modifiers); + ((MouseHandlerAccessor) Minecraft.getInstance().mouseHandler).callOnPress(Minecraft.getInstance().getWindow().getWindow(), button, 0, modifiers); } public static void releaseMouse(int button) { @@ -55,11 +57,11 @@ public static void releaseMouse(int button) { } public static void setMousePos(double x, double y) { - Minecraft.getInstance().mouseHandler.onMove(Minecraft.getInstance().getWindow().getWindow(), x, y); + ((MouseHandlerAccessor) Minecraft.getInstance().mouseHandler).callOnMove(Minecraft.getInstance().getWindow().getWindow(), x, y); } public static void scrollMouse(double xOffset, double yOffset) { - Minecraft.getInstance().mouseHandler.onScroll(Minecraft.getInstance().getWindow().getWindow(), xOffset, yOffset); + ((MouseHandlerAccessor) Minecraft.getInstance().mouseHandler).callOnScroll(Minecraft.getInstance().getWindow().getWindow(), xOffset, yOffset); } public static void typeChars(CharSequence characters) { diff --git a/common/src/main/java/org/vivecraft/client_vr/provider/MCVR.java b/common/src/main/java/org/vivecraft/client_vr/provider/MCVR.java index fd60ff11a..825aaeb73 100644 --- a/common/src/main/java/org/vivecraft/client_vr/provider/MCVR.java +++ b/common/src/main/java/org/vivecraft/client_vr/provider/MCVR.java @@ -36,6 +36,7 @@ import org.vivecraft.common.utils.lwjgl.Vector3f; import org.vivecraft.common.utils.math.Quaternion; import org.vivecraft.common.utils.math.Vector3; +import org.vivecraft.mixin.accessor.client.MinecraftAccessor; import org.vivecraft.mod_compat_vr.ShadersHelper; import java.io.BufferedReader; @@ -50,7 +51,6 @@ public abstract class MCVR { protected Minecraft mc; protected ClientDataHolderVR dh; protected static MCVR me; - protected static VivecraftVRMod mod; protected org.vivecraft.common.utils.math.Matrix4f hmdPose = new org.vivecraft.common.utils.math.Matrix4f(); public org.vivecraft.common.utils.math.Matrix4f hmdRotation = new org.vivecraft.common.utils.math.Matrix4f(); public HardwareType detectedHardware = HardwareType.VIVE; @@ -108,10 +108,9 @@ public abstract class MCVR { protected Map inputActions = new HashMap<>(); protected Map inputActionsByKeyBinding = new HashMap<>(); - public MCVR(Minecraft mc, ClientDataHolderVR dh, VivecraftVRMod vrMod) { + public MCVR(Minecraft mc, ClientDataHolderVR dh) { this.mc = mc; this.dh = dh; - mod = vrMod; me = this; for (int i = 0; i < 3; ++i) { @@ -428,7 +427,7 @@ protected void processHotbar() { } protected KeyMapping findKeyBinding(String name) { - return Stream.concat(Arrays.stream(this.mc.options.keyMappings), mod.getHiddenKeyBindings().stream()).filter((kb) -> + return Stream.concat(Arrays.stream(this.mc.options.keyMappings), VivecraftVRMod.hiddenKeyBindingSet.stream()).filter((kb) -> { return name.equals(kb.getName()); }).findFirst().orElse(null); @@ -734,7 +733,7 @@ public void processBindings() { if (!this.inputActions.isEmpty()) { boolean flag = this.mc.level != null && this.mc.player != null && this.mc.player.isSleeping(); boolean flag1 = this.mc.screen != null; - boolean flag2 = mod.keyToggleMovement.consumeClick(); + boolean flag2 = VivecraftVRMod.keyToggleMovement.consumeClick(); if (!this.mc.options.keyPickItem.isDown() && !flag2) { this.moveModeSwitchCount = 0; @@ -760,9 +759,9 @@ public void processBindings() { float f1 = (float) Math.toDegrees(Math.atan2(-vec31.x, vec31.z)); if (!flag1) { - if (mod.keyWalkabout.isDown()) { + if (VivecraftVRMod.keyWalkabout.isDown()) { float f2 = f; - ControllerType controllertype = this.findActiveBindingControllerType(mod.keyWalkabout); + ControllerType controllertype = this.findActiveBindingControllerType(VivecraftVRMod.keyWalkabout); if (controllertype != null && controllertype == ControllerType.LEFT) { f2 = f1; @@ -779,9 +778,9 @@ public void processBindings() { this.isWalkingAbout = false; } - if (mod.keyRotateFree.isDown()) { + if (VivecraftVRMod.keyRotateFree.isDown()) { float f3 = f; - ControllerType controllertype5 = this.findActiveBindingControllerType(mod.keyRotateFree); + ControllerType controllertype5 = this.findActiveBindingControllerType(VivecraftVRMod.keyRotateFree); if (controllertype5 != null && controllertype5 == ControllerType.LEFT) { f3 = f1; @@ -798,24 +797,24 @@ public void processBindings() { } } - if (mod.keyHotbarNext.consumeClick()) { + if (VivecraftVRMod.keyHotbarNext.consumeClick()) { this.changeHotbar(-1); - this.triggerBindingHapticPulse(mod.keyHotbarNext, 250); + this.triggerBindingHapticPulse(VivecraftVRMod.keyHotbarNext, 250); } - if (mod.keyHotbarPrev.consumeClick()) { + if (VivecraftVRMod.keyHotbarPrev.consumeClick()) { this.changeHotbar(1); - this.triggerBindingHapticPulse(mod.keyHotbarPrev, 250); + this.triggerBindingHapticPulse(VivecraftVRMod.keyHotbarPrev, 250); } - if (mod.keyQuickTorch.consumeClick() && this.mc.player != null) { + if (VivecraftVRMod.keyQuickTorch.consumeClick() && this.mc.player != null) { for (int j = 0; j < 9; ++j) { ItemStack itemstack = this.mc.player.getInventory().getItem(j); if (itemstack.getItem() instanceof BlockItem && ((BlockItem) itemstack.getItem()).getBlock() instanceof TorchBlock && this.mc.screen == null) { this.quickTorchPreviousSlot = this.mc.player.getInventory().selected; this.mc.player.getInventory().selected = j; - this.mc.startUseItem(); + ((MinecraftAccessor) this.mc).callStartUseItem(); this.mc.player.getInventory().selected = this.quickTorchPreviousSlot; this.quickTorchPreviousSlot = -1; break; @@ -836,10 +835,10 @@ public void processBindings() { } if (this.dh.vrSettings.worldRotationIncrement == 0.0F) { - float f4 = this.getInputAction(mod.keyRotateAxis).getAxis2DUseTracked().getX(); + float f4 = this.getInputAction(VivecraftVRMod.keyRotateAxis).getAxis2DUseTracked().getX(); if (f4 == 0.0F) { - f4 = this.getInputAction(mod.keyFreeMoveRotate).getAxis2DUseTracked().getX(); + f4 = this.getInputAction(VivecraftVRMod.keyFreeMoveRotate).getAxis2DUseTracked().getX(); } if (f4 != 0.0F) { @@ -847,11 +846,11 @@ public void processBindings() { this.dh.vrSettings.worldRotation -= f8; this.dh.vrSettings.worldRotation %= 360.0F; } - } else if (mod.keyRotateAxis.consumeClick() || mod.keyFreeMoveRotate.consumeClick()) { - float f5 = this.getInputAction(mod.keyRotateAxis).getAxis2D(false).getX(); + } else if (VivecraftVRMod.keyRotateAxis.consumeClick() || VivecraftVRMod.keyFreeMoveRotate.consumeClick()) { + float f5 = this.getInputAction(VivecraftVRMod.keyRotateAxis).getAxis2D(false).getX(); if (f5 == 0.0F) { - f5 = this.getInputAction(mod.keyFreeMoveRotate).getAxis2D(false).getX(); + f5 = this.getInputAction(VivecraftVRMod.keyFreeMoveRotate).getAxis2D(false).getX(); } if (Math.abs(f5) > 0.5F) { @@ -861,7 +860,7 @@ public void processBindings() { } if (this.dh.vrSettings.worldRotationIncrement == 0.0F) { - float f6 = VivecraftMovementInput.getMovementAxisValue(mod.keyRotateLeft); + float f6 = VivecraftMovementInput.getMovementAxisValue(VivecraftVRMod.keyRotateLeft); if (f6 > 0.0F) { float f9 = 5.0F; @@ -873,13 +872,13 @@ public void processBindings() { this.dh.vrSettings.worldRotation += f9; this.dh.vrSettings.worldRotation %= 360.0F; } - } else if (mod.keyRotateLeft.consumeClick()) { + } else if (VivecraftVRMod.keyRotateLeft.consumeClick()) { this.dh.vrSettings.worldRotation += this.dh.vrSettings.worldRotationIncrement; this.dh.vrSettings.worldRotation %= 360.0F; } if (this.dh.vrSettings.worldRotationIncrement == 0.0F) { - float f7 = VivecraftMovementInput.getMovementAxisValue(mod.keyRotateRight); + float f7 = VivecraftMovementInput.getMovementAxisValue(VivecraftVRMod.keyRotateRight); if (f7 > 0.0F) { float f10 = 5.0F; @@ -891,22 +890,22 @@ public void processBindings() { this.dh.vrSettings.worldRotation -= f10; this.dh.vrSettings.worldRotation %= 360.0F; } - } else if (mod.keyRotateRight.consumeClick()) { + } else if (VivecraftVRMod.keyRotateRight.consumeClick()) { this.dh.vrSettings.worldRotation -= this.dh.vrSettings.worldRotationIncrement; this.dh.vrSettings.worldRotation %= 360.0F; } this.seatedRot = this.dh.vrSettings.worldRotation; - if (mod.keyRadialMenu.consumeClick() && !flag1) { - ControllerType controllertype1 = this.findActiveBindingControllerType(mod.keyRadialMenu); + if (VivecraftVRMod.keyRadialMenu.consumeClick() && !flag1) { + ControllerType controllertype1 = this.findActiveBindingControllerType(VivecraftVRMod.keyRadialMenu); if (controllertype1 != null) { RadialHandler.setOverlayShowing(!RadialHandler.isShowing(), controllertype1); } } - if (mod.keySwapMirrorView.consumeClick()) { + if (VivecraftVRMod.keySwapMirrorView.consumeClick()) { if (this.dh.vrSettings.displayMirrorMode == VRSettings.MirrorMode.THIRD_PERSON) { this.dh.vrSettings.displayMirrorMode = VRSettings.MirrorMode.FIRST_PERSON; } else if (this.dh.vrSettings.displayMirrorMode == VRSettings.MirrorMode.FIRST_PERSON) { @@ -921,37 +920,37 @@ public void processBindings() { } } - if (mod.keyToggleKeyboard.consumeClick()) { + if (VivecraftVRMod.keyToggleKeyboard.consumeClick()) { KeyboardHandler.setOverlayShowing(!KeyboardHandler.Showing); } - if (mod.keyMoveThirdPersonCam.consumeClick() && !ClientDataHolderVR.kiosk && !this.dh.vrSettings.seated && (this.dh.vrSettings.displayMirrorMode == VRSettings.MirrorMode.MIXED_REALITY || this.dh.vrSettings.displayMirrorMode == VRSettings.MirrorMode.THIRD_PERSON)) { - ControllerType controllertype2 = this.findActiveBindingControllerType(mod.keyMoveThirdPersonCam); + if (VivecraftVRMod.keyMoveThirdPersonCam.consumeClick() && !ClientDataHolderVR.kiosk && !this.dh.vrSettings.seated && (this.dh.vrSettings.displayMirrorMode == VRSettings.MirrorMode.MIXED_REALITY || this.dh.vrSettings.displayMirrorMode == VRSettings.MirrorMode.THIRD_PERSON)) { + ControllerType controllertype2 = this.findActiveBindingControllerType(VivecraftVRMod.keyMoveThirdPersonCam); if (controllertype2 != null) { VRHotkeys.startMovingThirdPersonCam(controllertype2.ordinal(), VRHotkeys.Triggerer.BINDING); } } - if (!mod.keyMoveThirdPersonCam.isDown() && VRHotkeys.isMovingThirdPersonCam() && VRHotkeys.getMovingThirdPersonCamTriggerer() == VRHotkeys.Triggerer.BINDING) { + if (!VivecraftVRMod.keyMoveThirdPersonCam.isDown() && VRHotkeys.isMovingThirdPersonCam() && VRHotkeys.getMovingThirdPersonCamTriggerer() == VRHotkeys.Triggerer.BINDING) { VRHotkeys.stopMovingThirdPersonCam(); this.dh.vrSettings.saveOptions(); } - if (VRHotkeys.isMovingThirdPersonCam() && VRHotkeys.getMovingThirdPersonCamTriggerer() == VRHotkeys.Triggerer.MENUBUTTON && mod.keyMenuButton.consumeClick()) { + if (VRHotkeys.isMovingThirdPersonCam() && VRHotkeys.getMovingThirdPersonCamTriggerer() == VRHotkeys.Triggerer.MENUBUTTON && VivecraftVRMod.keyMenuButton.consumeClick()) { VRHotkeys.stopMovingThirdPersonCam(); this.dh.vrSettings.saveOptions(); } - if (KeyboardHandler.Showing && this.mc.screen == null && mod.keyMenuButton.consumeClick()) { + if (KeyboardHandler.Showing && this.mc.screen == null && VivecraftVRMod.keyMenuButton.consumeClick()) { KeyboardHandler.setOverlayShowing(false); } - if (RadialHandler.isShowing() && mod.keyMenuButton.consumeClick()) { + if (RadialHandler.isShowing() && VivecraftVRMod.keyMenuButton.consumeClick()) { RadialHandler.setOverlayShowing(false, null); } - if (mod.keyMenuButton.consumeClick()) { + if (VivecraftVRMod.keyMenuButton.consumeClick()) { if (!flag1) { if (!ClientDataHolderVR.kiosk) { this.mc.pauseGame(false); @@ -964,15 +963,15 @@ public void processBindings() { KeyboardHandler.setOverlayShowing(false); } - if (mod.keyTogglePlayerList.consumeClick()) { + if (VivecraftVRMod.keyTogglePlayerList.consumeClick()) { ((GuiExtension) this.mc.gui).vivecraft$setShowPlayerList(!((GuiExtension) this.mc.gui).vivecraft$getShowPlayerList()); } - if (mod.keyToggleHandheldCam.consumeClick() && this.mc.player != null) { + if (VivecraftVRMod.keyToggleHandheldCam.consumeClick() && this.mc.player != null) { this.dh.cameraTracker.toggleVisibility(); if (this.dh.cameraTracker.isVisible()) { - ControllerType controllertype3 = this.findActiveBindingControllerType(mod.keyToggleHandheldCam); + ControllerType controllertype3 = this.findActiveBindingControllerType(VivecraftVRMod.keyToggleHandheldCam); if (controllertype3 == null) { controllertype3 = ControllerType.RIGHT; @@ -984,12 +983,12 @@ public void processBindings() { } } - if (mod.keyQuickHandheldCam.consumeClick() && this.mc.player != null) { + if (VivecraftVRMod.keyQuickHandheldCam.consumeClick() && this.mc.player != null) { if (!this.dh.cameraTracker.isVisible()) { this.dh.cameraTracker.toggleVisibility(); } - ControllerType controllertype4 = this.findActiveBindingControllerType(mod.keyQuickHandheldCam); + ControllerType controllertype4 = this.findActiveBindingControllerType(VivecraftVRMod.keyQuickHandheldCam); if (controllertype4 == null) { controllertype4 = ControllerType.RIGHT; @@ -1001,7 +1000,7 @@ public void processBindings() { this.dh.cameraTracker.startMoving(controllertype4.ordinal(), true); } - if (!mod.keyQuickHandheldCam.isDown() && this.dh.cameraTracker.isMoving() && this.dh.cameraTracker.isQuickMode() && this.mc.player != null) { + if (!VivecraftVRMod.keyQuickHandheldCam.isDown() && this.dh.cameraTracker.isMoving() && this.dh.cameraTracker.isQuickMode() && this.mc.player != null) { this.dh.cameraTracker.stopMoving(); this.dh.grabScreenShot = true; } @@ -1017,7 +1016,7 @@ public void populateInputActions() { Map map = this.getSpecialActionParams(); // iterate over all minecraft keys, and our hidden keys - for (KeyMapping keymapping : Stream.concat(Arrays.stream(this.mc.options.keyMappings), mod.getHiddenKeyBindings().stream()).toList()) { + for (KeyMapping keymapping : Stream.concat(Arrays.stream(this.mc.options.keyMappings), VivecraftVRMod.hiddenKeyBindingSet.stream()).toList()) { ActionParams actionparams = map.getOrDefault(keymapping.getName(), new ActionParams("optional", "boolean", null)); VRInputAction vrinputaction = new VRInputAction(keymapping, actionparams.requirement, actionparams.type, actionparams.actionSetOverride); this.inputActions.put(vrinputaction.name, vrinputaction); @@ -1027,9 +1026,9 @@ public void populateInputActions() { this.inputActionsByKeyBinding.put(vrinputaction1.keyBinding.getName(), vrinputaction1); } - this.getInputAction(mod.keyVRInteract).setPriority(5).setEnabled(false); - this.getInputAction(mod.keyClimbeyGrab).setPriority(10).setEnabled(false); - this.getInputAction(mod.keyClimbeyJump).setEnabled(false); + this.getInputAction(VivecraftVRMod.keyVRInteract).setPriority(5).setEnabled(false); + this.getInputAction(VivecraftVRMod.keyClimbeyGrab).setPriority(10).setEnabled(false); + this.getInputAction(VivecraftVRMod.keyClimbeyJump).setEnabled(false); this.getInputAction(GuiHandler.keyKeyboardClick).setPriority(50); this.getInputAction(GuiHandler.keyKeyboardShift).setPriority(50); } @@ -1044,26 +1043,26 @@ public Map getSpecialActionParams() { this.addActionParams(map, this.mc.options.keyAttack, "suggested", "boolean", null); this.addActionParams(map, this.mc.options.keyUse, "suggested", "boolean", null); this.addActionParams(map, this.mc.options.keyChat, "optional", "boolean", VRInputActionSet.GLOBAL); - this.addActionParams(map, mod.keyHotbarScroll, "optional", "vector2", null); - this.addActionParams(map, mod.keyHotbarSwipeX, "optional", "vector2", null); - this.addActionParams(map, mod.keyHotbarSwipeY, "optional", "vector2", null); - this.addActionParams(map, mod.keyMenuButton, "suggested", "boolean", VRInputActionSet.GLOBAL); - this.addActionParams(map, mod.keyTeleportFallback, "suggested", "vector1", null); - this.addActionParams(map, mod.keyFreeMoveRotate, "optional", "vector2", null); - this.addActionParams(map, mod.keyFreeMoveStrafe, "optional", "vector2", null); - this.addActionParams(map, mod.keyRotateLeft, "optional", "vector1", null); - this.addActionParams(map, mod.keyRotateRight, "optional", "vector1", null); - this.addActionParams(map, mod.keyRotateAxis, "optional", "vector2", null); - this.addActionParams(map, mod.keyRadialMenu, "suggested", "boolean", null); - this.addActionParams(map, mod.keySwapMirrorView, "optional", "boolean", VRInputActionSet.GLOBAL); - this.addActionParams(map, mod.keyToggleKeyboard, "optional", "boolean", VRInputActionSet.GLOBAL); - this.addActionParams(map, mod.keyMoveThirdPersonCam, "optional", "boolean", VRInputActionSet.GLOBAL); - this.addActionParams(map, mod.keyToggleHandheldCam, "optional", "boolean", VRInputActionSet.GLOBAL); - this.addActionParams(map, mod.keyQuickHandheldCam, "optional", "boolean", VRInputActionSet.GLOBAL); - this.addActionParams(map, mod.keyTrackpadTouch, "optional", "boolean", VRInputActionSet.TECHNICAL); - this.addActionParams(map, mod.keyVRInteract, "suggested", "boolean", VRInputActionSet.CONTEXTUAL); - this.addActionParams(map, mod.keyClimbeyGrab, "suggested", "boolean", null); - this.addActionParams(map, mod.keyClimbeyJump, "suggested", "boolean", null); + this.addActionParams(map, VivecraftVRMod.keyHotbarScroll, "optional", "vector2", null); + this.addActionParams(map, VivecraftVRMod.keyHotbarSwipeX, "optional", "vector2", null); + this.addActionParams(map, VivecraftVRMod.keyHotbarSwipeY, "optional", "vector2", null); + this.addActionParams(map, VivecraftVRMod.keyMenuButton, "suggested", "boolean", VRInputActionSet.GLOBAL); + this.addActionParams(map, VivecraftVRMod.keyTeleportFallback, "suggested", "vector1", null); + this.addActionParams(map, VivecraftVRMod.keyFreeMoveRotate, "optional", "vector2", null); + this.addActionParams(map, VivecraftVRMod.keyFreeMoveStrafe, "optional", "vector2", null); + this.addActionParams(map, VivecraftVRMod.keyRotateLeft, "optional", "vector1", null); + this.addActionParams(map, VivecraftVRMod.keyRotateRight, "optional", "vector1", null); + this.addActionParams(map, VivecraftVRMod.keyRotateAxis, "optional", "vector2", null); + this.addActionParams(map, VivecraftVRMod.keyRadialMenu, "suggested", "boolean", null); + this.addActionParams(map, VivecraftVRMod.keySwapMirrorView, "optional", "boolean", VRInputActionSet.GLOBAL); + this.addActionParams(map, VivecraftVRMod.keyToggleKeyboard, "optional", "boolean", VRInputActionSet.GLOBAL); + this.addActionParams(map, VivecraftVRMod.keyMoveThirdPersonCam, "optional", "boolean", VRInputActionSet.GLOBAL); + this.addActionParams(map, VivecraftVRMod.keyToggleHandheldCam, "optional", "boolean", VRInputActionSet.GLOBAL); + this.addActionParams(map, VivecraftVRMod.keyQuickHandheldCam, "optional", "boolean", VRInputActionSet.GLOBAL); + this.addActionParams(map, VivecraftVRMod.keyTrackpadTouch, "optional", "boolean", VRInputActionSet.TECHNICAL); + this.addActionParams(map, VivecraftVRMod.keyVRInteract, "suggested", "boolean", VRInputActionSet.CONTEXTUAL); + this.addActionParams(map, VivecraftVRMod.keyClimbeyGrab, "suggested", "boolean", null); + this.addActionParams(map, VivecraftVRMod.keyClimbeyJump, "suggested", "boolean", null); this.addActionParams(map, GuiHandler.keyLeftClick, "suggested", "boolean", null); this.addActionParams(map, GuiHandler.keyScrollAxis, "optional", "vector2", null); this.addActionParams(map, GuiHandler.keyRightClick, "suggested", "boolean", null); @@ -1087,7 +1086,7 @@ public Map getSpecialActionParams() { if (keymapping == null) { System.out.println("Unknown key binding: " + astring[0]); - } else if (mod.getAllKeyBindings().contains(keymapping)) { + } else if (VivecraftVRMod.allKeyBindingSet.contains(keymapping)) { System.out.println("NO! Don't touch Vivecraft bindings!"); } else { VRInputActionSet vrinputactionset = null; diff --git a/common/src/main/java/org/vivecraft/client_vr/provider/VRRenderer.java b/common/src/main/java/org/vivecraft/client_vr/provider/VRRenderer.java index cccda865f..0460eccc3 100644 --- a/common/src/main/java/org/vivecraft/client_vr/provider/VRRenderer.java +++ b/common/src/main/java/org/vivecraft/client_vr/provider/VRRenderer.java @@ -33,6 +33,7 @@ import org.vivecraft.client_vr.render.VRShaders; import org.vivecraft.client_vr.settings.VRSettings; import org.vivecraft.client_xr.render_pass.WorldRenderPass; +import org.vivecraft.mixin.accessor.client.MinecraftAccessor; import org.vivecraft.mod_compat_vr.ShadersHelper; import org.vivecraft.mod_compat_vr.resolutioncontrol.ResolutionControlHelper; @@ -656,7 +657,7 @@ public void setupRenderConfiguration() throws Exception { } try { - minecraft.mainRenderTarget = this.framebufferVrRender; + ((MinecraftAccessor) minecraft).setMainRenderTarget(this.framebufferVrRender); VRShaders.setupDepthMask(); ShaderHelper.checkGLError("init depth shader"); VRShaders.setupFOVReduction(); diff --git a/common/src/main/java/org/vivecraft/client_vr/provider/nullvr/NullVR.java b/common/src/main/java/org/vivecraft/client_vr/provider/nullvr/NullVR.java index 1bd65a126..8ad1176de 100644 --- a/common/src/main/java/org/vivecraft/client_vr/provider/nullvr/NullVR.java +++ b/common/src/main/java/org/vivecraft/client_vr/provider/nullvr/NullVR.java @@ -24,7 +24,7 @@ public class NullVR extends MCVR { private boolean vrActiveChangedLastFrame = false; public NullVR(Minecraft mc, ClientDataHolderVR dh) { - super(mc, dh, VivecraftVRMod.INSTANCE); + super(mc, dh); ome = this; this.hapticScheduler = new NullVRHapticScheduler(); } diff --git a/common/src/main/java/org/vivecraft/client_vr/provider/openvr_lwjgl/MCOpenVR.java b/common/src/main/java/org/vivecraft/client_vr/provider/openvr_lwjgl/MCOpenVR.java index a23282d07..7b587a8dd 100644 --- a/common/src/main/java/org/vivecraft/client_vr/provider/openvr_lwjgl/MCOpenVR.java +++ b/common/src/main/java/org/vivecraft/client_vr/provider/openvr_lwjgl/MCOpenVR.java @@ -31,6 +31,7 @@ import org.vivecraft.client_vr.utils.external.jkatvr; import org.vivecraft.common.utils.math.Matrix4f; import org.vivecraft.common.utils.math.Vector3; +import org.vivecraft.mixin.accessor.client.KeyMappingAccessor; import java.io.File; import java.io.FileOutputStream; @@ -94,7 +95,7 @@ public class MCOpenVR extends MCVR { InputAnalogActionData analog = InputAnalogActionData.calloc(); public MCOpenVR(Minecraft mc, ClientDataHolderVR dh) { - super(mc, dh, VivecraftVRMod.INSTANCE); + super(mc, dh); ome = this; this.hapticScheduler = new OpenVRHapticScheduler(); @@ -342,21 +343,21 @@ public void processInputs() { { InputSimulator.scrollMouse(0.0D, -1.0D); }); - this.processScrollInput(VivecraftVRMod.INSTANCE.keyHotbarScroll, () -> + this.processScrollInput(VivecraftVRMod.keyHotbarScroll, () -> { this.changeHotbar(-1); }, () -> { this.changeHotbar(1); }); - this.processSwipeInput(VivecraftVRMod.INSTANCE.keyHotbarSwipeX, () -> + this.processSwipeInput(VivecraftVRMod.keyHotbarSwipeX, () -> { this.changeHotbar(1); }, () -> { this.changeHotbar(-1); }, null, null); - this.processSwipeInput(VivecraftVRMod.INSTANCE.keyHotbarSwipeY, null, null, () -> + this.processSwipeInput(VivecraftVRMod.keyHotbarSwipeY, null, null, () -> { this.changeHotbar(-1); }, () -> @@ -896,7 +897,7 @@ private void processInputAction(VRInputAction action) { if (action.isActive() && action.isEnabledRaw() // try to prevent double left clicks && (!ClientDataHolderVR.getInstance().vrSettings.ingameBindingsInGui - || !(action.actionSet == VRInputActionSet.INGAME && action.keyBinding.key.getType() == InputConstants.Type.MOUSE && action.keyBinding.key.getValue() == 0 && mc.screen != null))) { + || !(action.actionSet == VRInputActionSet.INGAME && ((KeyMappingAccessor) action.keyBinding).getKey().getType() == InputConstants.Type.MOUSE && ((KeyMappingAccessor) action.keyBinding).getKey().getValue() == 0 && mc.screen != null))) { if (action.isButtonChanged()) { if (action.isButtonPressed() && action.isEnabled()) { if (!this.ignorePressesNextFrame) { diff --git a/common/src/main/java/org/vivecraft/client_vr/provider/openvr_lwjgl/VRInputAction.java b/common/src/main/java/org/vivecraft/client_vr/provider/openvr_lwjgl/VRInputAction.java index 0dca0469d..d59a44b07 100644 --- a/common/src/main/java/org/vivecraft/client_vr/provider/openvr_lwjgl/VRInputAction.java +++ b/common/src/main/java/org/vivecraft/client_vr/provider/openvr_lwjgl/VRInputAction.java @@ -10,6 +10,7 @@ import org.vivecraft.client_vr.provider.openvr_lwjgl.control.VRInputActionSet; import org.vivecraft.common.utils.math.Vector2; import org.vivecraft.common.utils.math.Vector3; +import org.vivecraft.mixin.accessor.client.KeyMappingAccessor; import javax.annotation.Nullable; import java.util.ArrayList; @@ -419,14 +420,14 @@ public void unpressBindingImmediately(ControllerType hand) { public static void setKeyBindState(KeyMapping kb, boolean pressed) { if (kb != null) { kb.setDown(pressed); - kb.clickCount += 1; + ((KeyMappingAccessor) kb).setClickCount(((KeyMappingAccessor) kb).getClickCount() + 1); } } private void pressKey() { - InputConstants.Key inputconstants$key = this.keyBinding.key; + InputConstants.Key inputconstants$key = ((KeyMappingAccessor) this.keyBinding).getKey(); - if (inputconstants$key.getValue() != -1 && !VivecraftVRMod.INSTANCE.isSafeBinding(this.keyBinding)) //&& (!Reflector.ForgeKeyBinding_getKeyModifier.exists() || Reflector.call(this.keyBinding, Reflector.ForgeKeyBinding_getKeyModifier) == Reflector.getFieldValue(Reflector.KeyModifier_NONE))) + if (inputconstants$key.getValue() != -1 && !VivecraftVRMod.isSafeBinding(this.keyBinding)) //&& (!Reflector.ForgeKeyBinding_getKeyModifier.exists() || Reflector.call(this.keyBinding, Reflector.ForgeKeyBinding_getKeyModifier) == Reflector.getFieldValue(Reflector.KeyModifier_NONE))) { if (inputconstants$key.getType() == InputConstants.Type.KEYSYM) { InputSimulator.pressKey(inputconstants$key.getValue()); @@ -443,9 +444,9 @@ private void pressKey() { } public void unpressKey() { - InputConstants.Key inputconstants$key = this.keyBinding.key; + InputConstants.Key inputconstants$key = ((KeyMappingAccessor) this.keyBinding).getKey(); - if (inputconstants$key.getValue() != -1 && !VivecraftVRMod.INSTANCE.isSafeBinding(this.keyBinding)) // && (!Reflector.ForgeKeyBinding_getKeyModifier.exists() || Reflector.call(this.keyBinding, Reflector.ForgeKeyBinding_getKeyModifier) == Reflector.getFieldValue(Reflector.KeyModifier_NONE))) + if (inputconstants$key.getValue() != -1 && !VivecraftVRMod.isSafeBinding(this.keyBinding)) // && (!Reflector.ForgeKeyBinding_getKeyModifier.exists() || Reflector.call(this.keyBinding, Reflector.ForgeKeyBinding_getKeyModifier) == Reflector.getFieldValue(Reflector.KeyModifier_NONE))) { if (inputconstants$key.getType() == InputConstants.Type.KEYSYM) { InputSimulator.releaseKey(inputconstants$key.getValue()); @@ -458,7 +459,7 @@ public void unpressKey() { } } - this.keyBinding.release(); + ((KeyMappingAccessor) this.keyBinding).callRelease(); } public class AnalogData { diff --git a/common/src/main/java/org/vivecraft/client_vr/provider/openvr_lwjgl/control/TrackpadSwipeSampler.java b/common/src/main/java/org/vivecraft/client_vr/provider/openvr_lwjgl/control/TrackpadSwipeSampler.java index fd581e0b5..a437f609c 100644 --- a/common/src/main/java/org/vivecraft/client_vr/provider/openvr_lwjgl/control/TrackpadSwipeSampler.java +++ b/common/src/main/java/org/vivecraft/client_vr/provider/openvr_lwjgl/control/TrackpadSwipeSampler.java @@ -25,9 +25,9 @@ public TrackpadSwipeSampler() { } public void update(ControllerType hand, Vector2 position) { - MCOpenVR.get().getInputAction(VivecraftVRMod.INSTANCE.keyTrackpadTouch).setCurrentHand(hand); + MCOpenVR.get().getInputAction(VivecraftVRMod.keyTrackpadTouch).setCurrentHand(hand); - if (MCOpenVR.get().getInputAction(VivecraftVRMod.INSTANCE.keyTrackpadTouch).isButtonPressed()) { + if (MCOpenVR.get().getInputAction(VivecraftVRMod.keyTrackpadTouch).isButtonPressed()) { this.buffer[this.index].set(position.getX(), position.getY()); if (++this.index >= this.buffer.length) { diff --git a/common/src/main/java/org/vivecraft/client_vr/provider/openvr_lwjgl/control/VRInputActionSet.java b/common/src/main/java/org/vivecraft/client_vr/provider/openvr_lwjgl/control/VRInputActionSet.java index b99331369..a6ca44123 100644 --- a/common/src/main/java/org/vivecraft/client_vr/provider/openvr_lwjgl/control/VRInputActionSet.java +++ b/common/src/main/java/org/vivecraft/client_vr/provider/openvr_lwjgl/control/VRInputActionSet.java @@ -39,7 +39,7 @@ public static VRInputActionSet fromKeyBinding(KeyMapping keyBinding) { return KEYBOARD; default: - return VivecraftVRMod.INSTANCE.isModBinding(keyBinding) ? MOD : INGAME; + return VivecraftVRMod.isModBinding(keyBinding) ? MOD : INGAME; } } } diff --git a/common/src/main/java/org/vivecraft/client_vr/render/VivecraftItemRendering.java b/common/src/main/java/org/vivecraft/client_vr/render/VivecraftItemRendering.java index 83ad66774..34e100ef3 100644 --- a/common/src/main/java/org/vivecraft/client_vr/render/VivecraftItemRendering.java +++ b/common/src/main/java/org/vivecraft/client_vr/render/VivecraftItemRendering.java @@ -338,7 +338,7 @@ public static void applyFirstPersonItemTransforms(PoseStack pMatrixStack, Vivecr translateY += 0.02F; translateX += 0.03F; - if (VivecraftVRMod.INSTANCE.keyClimbeyGrab.isDown(ControllerType.RIGHT) && mainHand || VivecraftVRMod.INSTANCE.keyClimbeyGrab.isDown(ControllerType.LEFT) && !mainHand) { + if (VivecraftVRMod.keyClimbeyGrab.isDown(ControllerType.RIGHT) && mainHand || VivecraftVRMod.keyClimbeyGrab.isDown(ControllerType.LEFT) && !mainHand) { translateZ += -0.2F; } } diff --git a/common/src/main/java/org/vivecraft/client_vr/render/XRCamera.java b/common/src/main/java/org/vivecraft/client_vr/render/XRCamera.java index 7198636db..6f5d4b063 100644 --- a/common/src/main/java/org/vivecraft/client_vr/render/XRCamera.java +++ b/common/src/main/java/org/vivecraft/client_vr/render/XRCamera.java @@ -11,6 +11,7 @@ import org.vivecraft.client_vr.render.helpers.RenderHelper; import org.vivecraft.client_vr.settings.VRSettings; import org.vivecraft.client_xr.render_pass.RenderPassType; +import org.vivecraft.mixin.accessor.client.CameraAccessor; public class XRCamera extends Camera { @@ -19,20 +20,20 @@ public void setup(BlockGetter pLevel, Entity pRenderViewEntity, boolean pThirdPe super.setup(pLevel, pRenderViewEntity, pThirdPerson, pThirdPersonReverse, pPartialTicks); return; } - this.initialized = true; - this.level = pLevel; - this.entity = pRenderViewEntity; + ((CameraAccessor) this).setInitialized(true); + ((CameraAccessor) this).setLevel(pLevel); + ((CameraAccessor) this).setEntity(pRenderViewEntity); ClientDataHolderVR dataholder = ClientDataHolderVR.getInstance(); RenderPass renderpass = dataholder.currentPass; VRData.VRDevicePose eye = dataholder.vrPlayer.getVRDataWorld().getEye(renderpass); if (renderpass == RenderPass.CENTER && dataholder.vrSettings.displayMirrorCenterSmooth > 0.0F) { - this.setPosition(RenderHelper.getSmoothCameraPosition(renderpass, dataholder.vrPlayer.getVRDataWorld())); + ((CameraAccessor) this).callSetPosition(RenderHelper.getSmoothCameraPosition(renderpass, dataholder.vrPlayer.getVRDataWorld())); } else { - this.setPosition(eye.getPosition()); + ((CameraAccessor) this).callSetPosition(eye.getPosition()); } - this.xRot = -eye.getPitch(); - this.yRot = eye.getYaw(); + ((CameraAccessor) this).setXRot(-eye.getPitch()); + ((CameraAccessor) this).setYRot(eye.getYaw()); this.getLookVector().set((float) eye.getDirection().x, (float) eye.getDirection().y, (float) eye.getDirection().z); Vec3 up = eye.getCustomVector(new Vec3(0.0D, 1.0D, 0.0D)); this.getUpVector().set((float) up.x, (float) up.y, (float) up.z); @@ -40,8 +41,8 @@ public void setup(BlockGetter pLevel, Entity pRenderViewEntity, boolean pThirdPe this.getLeftVector().set((float) left.x, (float) left.y, (float) left.z); this.rotation().set(0.0F, 0.0F, 0.0F, 1.0F); - this.rotation().mul(Axis.YP.rotationDegrees(-this.yRot)); - this.rotation().mul(Axis.XP.rotationDegrees(this.xRot)); + this.rotation().mul(Axis.YP.rotationDegrees(-((CameraAccessor) this).getYRot())); + this.rotation().mul(Axis.XP.rotationDegrees(((CameraAccessor) this).getXRot())); } public void tick() { @@ -62,7 +63,7 @@ public boolean isDetached() { // some mods call this, when querying the sunrise color in the menu world @Override public FogType getFluidInCamera() { - if (this.level == null) { + if (((CameraAccessor) this).getLevel() == null) { return FogType.NONE; } else { return super.getFluidInCamera(); diff --git a/common/src/main/java/org/vivecraft/client_vr/render/helpers/RenderHelper.java b/common/src/main/java/org/vivecraft/client_vr/render/helpers/RenderHelper.java index 5e81f3ad9..73ade69b0 100644 --- a/common/src/main/java/org/vivecraft/client_vr/render/helpers/RenderHelper.java +++ b/common/src/main/java/org/vivecraft/client_vr/render/helpers/RenderHelper.java @@ -27,7 +27,7 @@ import org.vivecraft.client_vr.gameplay.trackers.TelescopeTracker; import org.vivecraft.client_vr.provider.MCVR; import org.vivecraft.client_vr.render.RenderPass; -import org.vivecraft.mixin.client.blaze3d.RenderSystemAccessor; +import org.vivecraft.mixin.accessor.blaze3d.RenderSystemAccessor; import java.util.function.Supplier; diff --git a/common/src/main/java/org/vivecraft/client_vr/render/helpers/VRArmHelper.java b/common/src/main/java/org/vivecraft/client_vr/render/helpers/VRArmHelper.java index c92d81eb3..d51aa3db4 100644 --- a/common/src/main/java/org/vivecraft/client_vr/render/helpers/VRArmHelper.java +++ b/common/src/main/java/org/vivecraft/client_vr/render/helpers/VRArmHelper.java @@ -21,6 +21,7 @@ import org.vivecraft.client_vr.gameplay.trackers.BowTracker; import org.vivecraft.client_vr.render.RenderPass; import org.vivecraft.client_vr.settings.VRSettings; +import org.vivecraft.mixin.accessor.client.renderer.ItemInHandRendererAccessor; import org.vivecraft.mod_compat_vr.ShadersHelper; import org.vivecraft.mod_compat_vr.optifine.OptifineHelper; @@ -181,7 +182,7 @@ public static void renderVRHand_Main(PoseStack poseStack, float partialTicks) { mc.gameRenderer.lightTexture().turnOnLightLayer(); MultiBufferSource.BufferSource bufferSource = mc.renderBuffers().bufferSource(); - mc.gameRenderer.itemInHandRenderer.renderArmWithItem(mc.player, partialTicks, + ((ItemInHandRendererAccessor) mc.gameRenderer.itemInHandRenderer).callRenderArmWithItem(mc.player, partialTicks, 0.0F, InteractionHand.MAIN_HAND, mc.player.getAttackAnim(partialTicks), item, 0.0F, poseStack, bufferSource, mc.getEntityRenderDispatcher().getPackedLightCoords(mc.player, partialTicks)); @@ -228,7 +229,7 @@ public static void renderVRHand_Offhand(float partialTicks, boolean renderTelepo mc.gameRenderer.lightTexture().turnOnLightLayer(); MultiBufferSource.BufferSource bufferSource = mc.renderBuffers().bufferSource(); - mc.gameRenderer.itemInHandRenderer.renderArmWithItem(mc.player, partialTicks, + ((ItemInHandRendererAccessor) mc.gameRenderer.itemInHandRenderer).callRenderArmWithItem(mc.player, partialTicks, 0.0F, InteractionHand.OFF_HAND, mc.player.getAttackAnim(partialTicks), item, 0.0F, poseStack, bufferSource, mc.getEntityRenderDispatcher().getPackedLightCoords(mc.player, partialTicks)); diff --git a/common/src/main/java/org/vivecraft/client_vr/render/helpers/VREffectsHelper.java b/common/src/main/java/org/vivecraft/client_vr/render/helpers/VREffectsHelper.java index 97208c756..514df4929 100644 --- a/common/src/main/java/org/vivecraft/client_vr/render/helpers/VREffectsHelper.java +++ b/common/src/main/java/org/vivecraft/client_vr/render/helpers/VREffectsHelper.java @@ -7,7 +7,6 @@ import com.mojang.math.Axis; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.LevelRenderer; @@ -30,6 +29,7 @@ import org.lwjgl.opengl.GL11C; import org.vivecraft.client.VivecraftVRMod; import org.vivecraft.client.Xplat; +import org.vivecraft.mixin.accessor.client.gui.GuiAccessor; import org.vivecraft.client.gui.VivecraftClickEvent; import org.vivecraft.client.gui.settings.GuiOtherHUDSettings; import org.vivecraft.client.gui.settings.GuiRenderOpticsSettings; @@ -47,6 +47,7 @@ import org.vivecraft.client_vr.provider.ControllerType; import org.vivecraft.client_vr.render.RenderPass; import org.vivecraft.client_vr.settings.VRSettings; +import org.vivecraft.mixin.accessor.client.renderer.GameRendererAccessor; import org.vivecraft.mod_compat_vr.ShadersHelper; import org.vivecraft.mod_compat_vr.immersiveportals.ImmersivePortalsHelper; import org.vivecraft.mod_compat_vr.optifine.OptifineHelper; @@ -490,7 +491,7 @@ private static void renderVRSelfEffects(float par1) { && dataHolder.currentPass != RenderPass.CAMERA) { VREffectsHelper.renderFireInFirstPerson(); } - mc.gameRenderer.renderItemActivationAnimation(0, 0, par1); + ((GameRendererAccessor) mc.gameRenderer).callRenderItemActivationAnimation(0, 0, par1); } public static void renderFireInFirstPerson() { @@ -808,11 +809,11 @@ private static boolean shouldRenderCrosshair() { return false; } else if (dataHolder.bowTracker.isNotched()) { return false; - } else if (dataHolder.vr.getInputAction(VivecraftVRMod.INSTANCE.keyVRInteract).isEnabledRaw(ControllerType.RIGHT) - || VivecraftVRMod.INSTANCE.keyVRInteract.isDown(ControllerType.RIGHT)) { + } else if (dataHolder.vr.getInputAction(VivecraftVRMod.keyVRInteract).isEnabledRaw(ControllerType.RIGHT) + || VivecraftVRMod.keyVRInteract.isDown(ControllerType.RIGHT)) { return false; - } else if (dataHolder.vr.getInputAction(VivecraftVRMod.INSTANCE.keyClimbeyGrab).isEnabledRaw(ControllerType.RIGHT) - || VivecraftVRMod.INSTANCE.keyClimbeyGrab.isDown(ControllerType.RIGHT)) { + } else if (dataHolder.vr.getInputAction(VivecraftVRMod.keyClimbeyGrab).isEnabledRaw(ControllerType.RIGHT) + || VivecraftVRMod.keyClimbeyGrab.isDown(ControllerType.RIGHT)) { return false; } else if (dataHolder.teleportTracker.isAiming()) { return false; @@ -901,7 +902,7 @@ public static void renderCrosshairAtDepth(boolean depthAlways, PoseStack poseSta brightness = 0.5F; } - RenderSystem.setShaderTexture(0, Gui.GUI_ICONS_LOCATION); + RenderSystem.setShaderTexture(0, GuiAccessor.getGUI_ICONS_LOCATION()); float uMax = 15.0F / 256.0F; float vMax = 15.0F / 256.0F; diff --git a/common/src/main/java/org/vivecraft/client_xr/render_pass/RenderPassManager.java b/common/src/main/java/org/vivecraft/client_xr/render_pass/RenderPassManager.java index cda80a2e9..4b8459f11 100644 --- a/common/src/main/java/org/vivecraft/client_xr/render_pass/RenderPassManager.java +++ b/common/src/main/java/org/vivecraft/client_xr/render_pass/RenderPassManager.java @@ -6,9 +6,12 @@ import org.vivecraft.client_vr.ClientDataHolderVR; import org.vivecraft.client_vr.gameplay.screenhandlers.GuiHandler; import org.vivecraft.client_vr.render.RenderPass; +import org.vivecraft.mixin.accessor.client.MinecraftAccessor; +import org.vivecraft.mixin.accessor.client.renderer.GameRendererAccessor; public class RenderPassManager { private static final Minecraft mc = Minecraft.getInstance(); + private static final MinecraftAccessor mcac = (MinecraftAccessor) mc; public static RenderPassManager INSTANCE; @@ -26,9 +29,9 @@ public RenderPassManager(MainTarget vanillaRenderTarget) { public static void setWorldRenderPass(WorldRenderPass wrp) { RenderPassManager.wrp = wrp; renderPassType = RenderPassType.WORLD_ONLY; - mc.mainRenderTarget = wrp.target; + mcac.setMainRenderTarget(wrp.target); if (mc.gameRenderer != null) { - mc.gameRenderer.postEffect = wrp.postEffect; + ((GameRendererAccessor) mc.gameRenderer).setPostEffect(wrp.postEffect); } } @@ -36,16 +39,16 @@ public static void setGUIRenderPass() { ClientDataHolderVR.getInstance().currentPass = RenderPass.GUI; RenderPassManager.wrp = null; renderPassType = RenderPassType.GUI_ONLY; - mc.mainRenderTarget = GuiHandler.guiFramebuffer; + mcac.setMainRenderTarget(GuiHandler.guiFramebuffer); } public static void setVanillaRenderPass() { ClientDataHolderVR.getInstance().currentPass = null; RenderPassManager.wrp = null; renderPassType = RenderPassType.VANILLA; - mc.mainRenderTarget = INSTANCE.vanillaRenderTarget; + mcac.setMainRenderTarget(INSTANCE.vanillaRenderTarget); if (mc.gameRenderer != null) { - mc.gameRenderer.postEffect = INSTANCE.vanillaPostEffect; + ((GameRendererAccessor) mc.gameRenderer).setPostEffect(INSTANCE.vanillaPostEffect); } } } diff --git a/common/src/main/java/org/vivecraft/mixin/client/blaze3d/RenderSystemAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/blaze3d/RenderSystemAccessor.java similarity index 74% rename from common/src/main/java/org/vivecraft/mixin/client/blaze3d/RenderSystemAccessor.java rename to common/src/main/java/org/vivecraft/mixin/accessor/blaze3d/RenderSystemAccessor.java index 12cf55c1e..410ca73cb 100644 --- a/common/src/main/java/org/vivecraft/mixin/client/blaze3d/RenderSystemAccessor.java +++ b/common/src/main/java/org/vivecraft/mixin/accessor/blaze3d/RenderSystemAccessor.java @@ -1,6 +1,7 @@ -package org.vivecraft.mixin.client.blaze3d; +package org.vivecraft.mixin.accessor.blaze3d; import com.mojang.blaze3d.systems.RenderSystem; +import org.jetbrains.annotations.NotNull; import org.joml.Vector3f; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @@ -10,7 +11,7 @@ public interface RenderSystemAccessor { // needs remap because of forge @Accessor - static int[] getShaderTextures() { + static int @NotNull [] getShaderTextures() { return null; } diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/client/CameraAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/client/CameraAccessor.java new file mode 100644 index 000000000..caa547288 --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/client/CameraAccessor.java @@ -0,0 +1,36 @@ +package org.vivecraft.mixin.accessor.client; + +import net.minecraft.client.Camera; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(Camera.class) +public interface CameraAccessor { + // XR Camera + @Accessor + void setInitialized(boolean initialized); + @Accessor + BlockGetter getLevel(); + @Accessor + void setLevel(BlockGetter level); + @Accessor + Entity getEntity(); + @Accessor + void setEntity(Entity entity); + @Accessor + void setXRot(float xRot); + @Accessor + float getXRot(); + @Accessor + void setYRot(float yRot); + @Accessor + float getYRot(); + + // to set reset camera before tick + @Invoker + void callSetPosition(Vec3 v); +} diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/client/KeyMappingAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/client/KeyMappingAccessor.java new file mode 100644 index 000000000..b575a8a39 --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/client/KeyMappingAccessor.java @@ -0,0 +1,20 @@ +package org.vivecraft.mixin.accessor.client; + +import com.mojang.blaze3d.platform.InputConstants; +import net.minecraft.client.KeyMapping; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(KeyMapping.class) +public interface KeyMappingAccessor { + // to check key inputs + @Accessor + void setClickCount(int clickCount); + @Accessor + int getClickCount(); + @Invoker + void callRelease(); + @Accessor + InputConstants.Key getKey(); +} diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/client/KeyboardHandlerAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/client/KeyboardHandlerAccessor.java new file mode 100644 index 000000000..046c8b86a --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/client/KeyboardHandlerAccessor.java @@ -0,0 +1,12 @@ +package org.vivecraft.mixin.accessor.client; + +import net.minecraft.client.KeyboardHandler; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(KeyboardHandler.class) +public interface KeyboardHandlerAccessor { + // gui handling + @Invoker + void callCharTyped(long l, int i, int j); +} diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/client/MinecraftAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/client/MinecraftAccessor.java new file mode 100644 index 000000000..552b9c078 --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/client/MinecraftAccessor.java @@ -0,0 +1,22 @@ +package org.vivecraft.mixin.accessor.client; + +import com.mojang.blaze3d.pipeline.RenderTarget; +import net.minecraft.client.Minecraft; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(Minecraft.class) +public interface MinecraftAccessor { + + @Accessor + void setMainRenderTarget(RenderTarget target); + + // for quicktorch + @Invoker + void callStartUseItem(); + + // for pausemenu buttons + @Invoker + boolean callIsMultiplayerServer(); +} diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/client/MouseHandlerAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/client/MouseHandlerAccessor.java new file mode 100644 index 000000000..2cec436b5 --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/client/MouseHandlerAccessor.java @@ -0,0 +1,16 @@ +package org.vivecraft.mixin.accessor.client; + +import net.minecraft.client.MouseHandler; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(MouseHandler.class) +public interface MouseHandlerAccessor { + // gui handling + @Invoker + void callOnPress(long l, int i, int j, int k); + @Invoker + void callOnMove(long l, double d, double e); + @Invoker + void callOnScroll(long l, double d, double e); +} diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/client/gui/GuiAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/client/gui/GuiAccessor.java new file mode 100644 index 000000000..67ce172ac --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/client/gui/GuiAccessor.java @@ -0,0 +1,16 @@ +package org.vivecraft.mixin.accessor.client.gui; + +import net.minecraft.client.gui.Gui; +import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.NotNull; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(Gui.class) +public interface GuiAccessor { + @NotNull + @Accessor + static ResourceLocation getGUI_ICONS_LOCATION() { + return null; + } +} diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/client/model/PlayerModelAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/client/model/PlayerModelAccessor.java new file mode 100644 index 000000000..9544f4241 --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/client/model/PlayerModelAccessor.java @@ -0,0 +1,11 @@ +package org.vivecraft.mixin.accessor.client.model; + +import net.minecraft.client.model.PlayerModel; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(PlayerModel.class) +public interface PlayerModelAccessor { + @Accessor + boolean isSlim(); +} diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/client/multiplayer/MultiplayerGameModeAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/client/multiplayer/MultiplayerGameModeAccessor.java new file mode 100644 index 000000000..3b320cedb --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/client/multiplayer/MultiplayerGameModeAccessor.java @@ -0,0 +1,12 @@ +package org.vivecraft.mixin.accessor.client.multiplayer; + +import net.minecraft.client.multiplayer.MultiPlayerGameMode; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(MultiPlayerGameMode.class) +public interface MultiplayerGameModeAccessor { + // to disable destroy delay, on roomscale hitting + @Accessor + void setDestroyDelay(int destroyDelay); +} diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/client/renderer/GameRendererAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/client/renderer/GameRendererAccessor.java new file mode 100644 index 000000000..d7a1f5c72 --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/client/renderer/GameRendererAccessor.java @@ -0,0 +1,18 @@ +package org.vivecraft.mixin.accessor.client.renderer; + +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.PostChain; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(GameRenderer.class) +public interface GameRendererAccessor { + // to render item activation outside GameRenderer + @Invoker + void callRenderItemActivationAnimation(int a, int b, float c); + + // to have different postEffects per pass + @Accessor + void setPostEffect(PostChain postChain); +} diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/client/renderer/ItemInHandRendererAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/client/renderer/ItemInHandRendererAccessor.java new file mode 100644 index 000000000..5a62dbb2d --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/client/renderer/ItemInHandRendererAccessor.java @@ -0,0 +1,28 @@ +package org.vivecraft.mixin.accessor.client.renderer; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.ItemInHandRenderer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(ItemInHandRenderer.class) +public interface ItemInHandRendererAccessor { + // to render vr hands + @Invoker + void callRenderArmWithItem( + AbstractClientPlayer abstractClientPlayer, + float f, + float g, + InteractionHand interactionHand, + float h, + ItemStack itemStack, + float i, + PoseStack poseStack, + MultiBufferSource multiBufferSource, + int j + ); +} diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/client/renderer/RenderTypeAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/client/renderer/RenderTypeAccessor.java new file mode 100644 index 000000000..9a1ddb377 --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/client/renderer/RenderTypeAccessor.java @@ -0,0 +1,26 @@ +package org.vivecraft.mixin.accessor.client.renderer; + +import com.mojang.blaze3d.vertex.VertexFormat; +import net.minecraft.client.renderer.RenderType; +import org.jetbrains.annotations.NotNull; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(RenderType.class) +public interface RenderTypeAccessor { + // to create custom END shader + @NotNull + @Invoker + static RenderType.CompositeRenderType callCreate( + String string, + VertexFormat vertexFormat, + VertexFormat.Mode mode, + int i, + boolean bl, + boolean bl2, + RenderType.CompositeState compositeStat + ) { + return null; + } + +} diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/client/renderer/entity/layers/RenderLayerAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/client/renderer/entity/layers/RenderLayerAccessor.java new file mode 100644 index 000000000..d1a4e636d --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/client/renderer/entity/layers/RenderLayerAccessor.java @@ -0,0 +1,12 @@ +package org.vivecraft.mixin.accessor.client.renderer.entity.layers; + +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(RenderLayer.class) +public interface RenderLayerAccessor { + @Accessor + void setRenderer(RenderLayerParent renderLayerParent); +} diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/network/ConnectionAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/network/ConnectionAccessor.java new file mode 100644 index 000000000..de4bc94dc --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/network/ConnectionAccessor.java @@ -0,0 +1,13 @@ +package org.vivecraft.mixin.accessor.network; + +import io.netty.channel.Channel; +import net.minecraft.network.Connection; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(Connection.class) +public interface ConnectionAccessor { + //for aim fix + @Accessor + Channel getChannel(); +} diff --git a/common/src/main/java/org/vivecraft/mixin/server/ChunkMapAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/server/ChunkMapAccessor.java similarity index 88% rename from common/src/main/java/org/vivecraft/mixin/server/ChunkMapAccessor.java rename to common/src/main/java/org/vivecraft/mixin/accessor/server/ChunkMapAccessor.java index 4c9f48341..85902acc3 100644 --- a/common/src/main/java/org/vivecraft/mixin/server/ChunkMapAccessor.java +++ b/common/src/main/java/org/vivecraft/mixin/accessor/server/ChunkMapAccessor.java @@ -1,4 +1,4 @@ -package org.vivecraft.mixin.server; +package org.vivecraft.mixin.accessor.server; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.server.level.ChunkMap; diff --git a/common/src/main/java/org/vivecraft/mixin/server/TrackedEntityAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/server/TrackedEntityAccessor.java similarity index 89% rename from common/src/main/java/org/vivecraft/mixin/server/TrackedEntityAccessor.java rename to common/src/main/java/org/vivecraft/mixin/accessor/server/TrackedEntityAccessor.java index 9e20b0b89..2c7306632 100644 --- a/common/src/main/java/org/vivecraft/mixin/server/TrackedEntityAccessor.java +++ b/common/src/main/java/org/vivecraft/mixin/accessor/server/TrackedEntityAccessor.java @@ -1,4 +1,4 @@ -package org.vivecraft.mixin.server; +package org.vivecraft.mixin.accessor.server; import net.minecraft.server.network.ServerPlayerConnection; import org.spongepowered.asm.mixin.Mixin; diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/world/entity/EntityAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/world/entity/EntityAccessor.java new file mode 100644 index 000000000..72f1d3c99 --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/world/entity/EntityAccessor.java @@ -0,0 +1,14 @@ +package org.vivecraft.mixin.accessor.world.entity; + +import net.minecraft.world.entity.Entity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(Entity.class) +public interface EntityAccessor { + // for correct vr rendering + @Accessor + float getEyeHeight(); + @Accessor + void setEyeHeight(float eyeHeight); +} diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/world/item/CreativeModeTabsAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/world/item/CreativeModeTabsAccessor.java new file mode 100644 index 000000000..1ad469543 --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/world/item/CreativeModeTabsAccessor.java @@ -0,0 +1,24 @@ +package org.vivecraft.mixin.accessor.world.item; + +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.CreativeModeTabs; +import org.jetbrains.annotations.NotNull; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(CreativeModeTabs.class) +public interface CreativeModeTabsAccessor { + + @NotNull + @Accessor + static ResourceKey getFOOD_AND_DRINKS(){ + return null; + } + + @NotNull + @Accessor + static ResourceKey getTOOLS_AND_UTILITIES(){ + return null; + } +} diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/world/level/biome/AmbientParticleSettingsAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/world/level/biome/AmbientParticleSettingsAccessor.java new file mode 100644 index 000000000..bfa0a2c96 --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/world/level/biome/AmbientParticleSettingsAccessor.java @@ -0,0 +1,11 @@ +package org.vivecraft.mixin.accessor.world.level.biome; + +import net.minecraft.world.level.biome.AmbientParticleSettings; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(AmbientParticleSettings.class) +public interface AmbientParticleSettingsAccessor { + @Accessor + float getProbability(); +} diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/world/level/biome/BiomeManagerAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/world/level/biome/BiomeManagerAccessor.java new file mode 100644 index 000000000..2d3a3c73d --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/world/level/biome/BiomeManagerAccessor.java @@ -0,0 +1,11 @@ +package org.vivecraft.mixin.accessor.world.level.biome; + +import net.minecraft.world.level.biome.BiomeManager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(BiomeManager.class) +public interface BiomeManagerAccessor { + @Accessor + long getBiomeZoomSeed(); +} diff --git a/common/src/main/java/org/vivecraft/mixin/accessor/world/level/block/state/StateHolderAccessor.java b/common/src/main/java/org/vivecraft/mixin/accessor/world/level/block/state/StateHolderAccessor.java new file mode 100644 index 000000000..c4b97b179 --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/accessor/world/level/block/state/StateHolderAccessor.java @@ -0,0 +1,13 @@ +package org.vivecraft.mixin.accessor.world.level.block.state; + +import com.mojang.serialization.MapCodec; +import net.minecraft.world.level.block.state.StateHolder; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(StateHolder.class) +public interface StateHolderAccessor { + @SuppressWarnings("rawtypes") + @Accessor + MapCodec getPropertiesCodec(); +} diff --git a/common/src/main/java/org/vivecraft/mixin/client/blaze3d/RenderTargetMixin.java b/common/src/main/java/org/vivecraft/mixin/client/blaze3d/RenderTargetMixin.java index 781401416..5057213f6 100644 --- a/common/src/main/java/org/vivecraft/mixin/client/blaze3d/RenderTargetMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client/blaze3d/RenderTargetMixin.java @@ -15,6 +15,7 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.*; import org.vivecraft.client.extensions.RenderTargetExtension; +import org.vivecraft.mixin.accessor.blaze3d.RenderSystemAccessor; @Debug(export = true) @Mixin(RenderTarget.class) diff --git a/common/src/main/java/org/vivecraft/mixin/client/renderer/entity/PlayerRendererMixin.java b/common/src/main/java/org/vivecraft/mixin/client/renderer/entity/PlayerRendererMixin.java index f991369f9..93324b9bc 100644 --- a/common/src/main/java/org/vivecraft/mixin/client/renderer/entity/PlayerRendererMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client/renderer/entity/PlayerRendererMixin.java @@ -3,7 +3,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.model.EntityModel; import net.minecraft.client.model.HumanoidModel; -import net.minecraft.client.model.PlayerModel; import net.minecraft.client.model.geom.EntityModelSet; import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.renderer.entity.EntityRendererProvider; @@ -17,8 +16,10 @@ import org.spongepowered.asm.mixin.Unique; import org.vivecraft.client.extensions.EntityRenderDispatcherExtension; import org.vivecraft.client.extensions.RenderLayerExtension; +import org.vivecraft.mixin.accessor.client.model.PlayerModelAccessor; import org.vivecraft.client.utils.RenderLayerTypes; import org.vivecraft.client_vr.settings.VRSettings; +import org.vivecraft.mixin.accessor.client.renderer.entity.layers.RenderLayerAccessor; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; @@ -73,7 +74,7 @@ public boolean addLayer(RenderLayer renderLayer) { // if no suitable constructor was found, use do a basic Object.clone call, and replace the parent of the copy if (constructor == null) { // do a hacky clone, and replace parent - if (((PlayerModel) model).slim) { + if (((PlayerModelAccessor) model).isSlim()) { addLayerClone(renderLayer, (LivingEntityRenderer) ((EntityRenderDispatcherExtension) entityRenderDispatcher).vivecraft$getSkinMapVRSeated().get("slim")); addLayerClone(renderLayer, (LivingEntityRenderer) ((EntityRenderDispatcherExtension) entityRenderDispatcher).vivecraft$getSkinMapVR().get("slim")); } else { @@ -82,7 +83,7 @@ public boolean addLayer(RenderLayer renderLayer) { } } else { // make a new instance with the vr model as parent - if (((PlayerModel) model).slim) { + if (((PlayerModelAccessor) model).isSlim()) { addLayerConstructor(constructor, type, (LivingEntityRenderer) ((EntityRenderDispatcherExtension) entityRenderDispatcher).vivecraft$getSkinMapVRSeated().get("slim")); addLayerConstructor(constructor, type, (LivingEntityRenderer) ((EntityRenderDispatcherExtension) entityRenderDispatcher).vivecraft$getSkinMapVR().get("slim")); } else { @@ -102,7 +103,7 @@ private void addLayerClone(RenderLayer renderLayer, LivingEntityRenderer newLayer = (RenderLayer) ((RenderLayerExtension) renderLayer).clone(); - newLayer.renderer = target; + ((RenderLayerAccessor) newLayer).setRenderer(target); target.addLayer(newLayer); } catch (CloneNotSupportedException e) { throw new RuntimeException(e); @@ -120,7 +121,7 @@ private void addLayerConstructor(Constructor constructor, RenderLayerTypes.La case PARENT_MODELSET -> target.addLayer((RenderLayer) constructor.newInstance(target, Minecraft.getInstance().getEntityModels())); case PARENT_MODEL_MODEL -> { - if (((PlayerModel) model).slim) { + if (((PlayerModelAccessor) model).isSlim()) { target.addLayer((RenderLayer) constructor.newInstance(target, new HumanoidModel(Minecraft.getInstance().getEntityModels().bakeLayer(ModelLayers.PLAYER_SLIM_INNER_ARMOR)), new HumanoidModel(Minecraft.getInstance().getEntityModels().bakeLayer(ModelLayers.PLAYER_SLIM_OUTER_ARMOR)))); diff --git a/common/src/main/java/org/vivecraft/mixin/client_vr/KeyMappingVRMixin.java b/common/src/main/java/org/vivecraft/mixin/client_vr/KeyMappingVRMixin.java new file mode 100644 index 000000000..7cdb8dbf8 --- /dev/null +++ b/common/src/main/java/org/vivecraft/mixin/client_vr/KeyMappingVRMixin.java @@ -0,0 +1,23 @@ +package org.vivecraft.mixin.client_vr; + +import net.minecraft.client.KeyMapping; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import java.util.Map; + +@Mixin(KeyMapping.class) +public abstract class KeyMappingVRMixin { + + @Final + @Shadow + private static Map CATEGORY_SORT_ORDER; + + // inject custom controls categories + static { + CATEGORY_SORT_ORDER.put("vivecraft.key.category.gui", CATEGORY_SORT_ORDER.values().stream().max(Integer::compareTo).orElse(0) + 1); + CATEGORY_SORT_ORDER.put("vivecraft.key.category.climbey", CATEGORY_SORT_ORDER.values().stream().max(Integer::compareTo).orElse(0) + 1); + CATEGORY_SORT_ORDER.put("vivecraft.key.category.keyboard", CATEGORY_SORT_ORDER.values().stream().max(Integer::compareTo).orElse(0) + 1); + } +} diff --git a/common/src/main/java/org/vivecraft/mixin/client_vr/KeyboardInputVRMixin.java b/common/src/main/java/org/vivecraft/mixin/client_vr/KeyboardInputVRMixin.java index 96d79eeff..4e95d90a5 100644 --- a/common/src/main/java/org/vivecraft/mixin/client_vr/KeyboardInputVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client_vr/KeyboardInputVRMixin.java @@ -55,7 +55,7 @@ public class KeyboardInputVRMixin extends Input { ClientDataHolderVR dataholder = ClientDataHolderVR.getInstance(); boolean climbing = dataholder.climbTracker.isClimbeyClimb() && !minecraft.player.isInWater() && dataholder.climbTracker.isGrabbingLadder(); - if (climbing || !this.options.keyUp.isDown() && !VivecraftVRMod.INSTANCE.keyTeleportFallback.isDown()) { + if (climbing || !this.options.keyUp.isDown() && !VivecraftVRMod.keyTeleportFallback.isDown()) { this.up = false; } else { ++this.forwardImpulse; @@ -87,8 +87,8 @@ public class KeyboardInputVRMixin extends Input { float f = 0.0F; if (!climbing && !dataholder.vrSettings.seated && minecraft.screen == null && !KeyboardHandler.Showing) { - VRInputAction vrinputaction = dataholder.vr.getInputAction(VivecraftVRMod.INSTANCE.keyFreeMoveStrafe); - VRInputAction vrinputaction1 = dataholder.vr.getInputAction(VivecraftVRMod.INSTANCE.keyFreeMoveRotate); + VRInputAction vrinputaction = dataholder.vr.getInputAction(VivecraftVRMod.keyFreeMoveStrafe); + VRInputAction vrinputaction1 = dataholder.vr.getInputAction(VivecraftVRMod.keyFreeMoveRotate); Vector2 vector2 = vrinputaction.getAxis2DUseTracked(); Vector2 vector21 = vrinputaction1.getAxis2DUseTracked(); @@ -112,7 +112,7 @@ public class KeyboardInputVRMixin extends Input { float f1 = getMovementAxisValue(this.options.keyUp); if (f1 == 0.0F) { - f1 = getMovementAxisValue(VivecraftVRMod.INSTANCE.keyTeleportFallback); + f1 = getMovementAxisValue(VivecraftVRMod.keyTeleportFallback); } f = f1; diff --git a/common/src/main/java/org/vivecraft/mixin/client_vr/MinecraftVRMixin.java b/common/src/main/java/org/vivecraft/mixin/client_vr/MinecraftVRMixin.java index 7a7bd203a..02bafa09b 100644 --- a/common/src/main/java/org/vivecraft/mixin/client_vr/MinecraftVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client_vr/MinecraftVRMixin.java @@ -42,10 +42,7 @@ import org.joml.Matrix4f; import org.lwjgl.glfw.GLFW; import org.objectweb.asm.Opcodes; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.*; import org.spongepowered.asm.mixin.injection.At.Shift; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -53,6 +50,7 @@ import org.vivecraft.client.VRPlayersClient; import org.vivecraft.client.VivecraftVRMod; import org.vivecraft.client.extensions.RenderTargetExtension; +import org.vivecraft.mixin.accessor.client.gui.GuiAccessor; import org.vivecraft.client.gui.VivecraftClickEvent; import org.vivecraft.client.gui.screens.ErrorScreen; import org.vivecraft.client.gui.screens.UpdateScreen; @@ -161,7 +159,9 @@ public abstract class MinecraftVRMixin implements MinecraftExtension { public ClientLevel level; @Shadow - public RenderTarget mainRenderTarget; + @Final + @Mutable + private RenderTarget mainRenderTarget; @Shadow public LocalPlayer player; @@ -270,7 +270,7 @@ public abstract class MinecraftVRMixin implements MinecraftExtension { if (OptifineHelper.isOptifineLoaded() && ClientDataHolderVR.getInstance().menuWorldRenderer != null && ClientDataHolderVR.getInstance().menuWorldRenderer.isReady()) { // with optifine this texture somehow fails to load, so manually reload it try { - textureManager.getTexture(Gui.GUI_ICONS_LOCATION).load(resourceManager); + textureManager.getTexture(GuiAccessor.getGUI_ICONS_LOCATION()).load(resourceManager); } catch (IOException e) { // if there was an error, just reload everything reloadResourcePacks(); @@ -679,7 +679,7 @@ public abstract class MinecraftVRMixin implements MinecraftExtension { VRPlayersClient.getInstance().tick(); - if (VivecraftVRMod.INSTANCE.keyExportWorld.consumeClick() && level != null && player != null) { + if (VivecraftVRMod.keyExportWorld.consumeClick() && level != null && player != null) { Throwable error = null; try { final BlockPos blockpos = player.blockPosition(); diff --git a/common/src/main/java/org/vivecraft/mixin/client_vr/OptionsVRMixin.java b/common/src/main/java/org/vivecraft/mixin/client_vr/OptionsVRMixin.java index 41c47906f..e5f45c7e0 100644 --- a/common/src/main/java/org/vivecraft/mixin/client_vr/OptionsVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client_vr/OptionsVRMixin.java @@ -2,20 +2,46 @@ import net.minecraft.client.KeyMapping; import net.minecraft.client.Options; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.ModifyArg; import org.vivecraft.client.VivecraftVRMod; +import org.vivecraft.client_vr.settings.VRSettings; + +import java.util.Arrays; +import java.util.stream.Stream; @Mixin(Options.class) public abstract class OptionsVRMixin { + @Shadow - public KeyMapping[] keyMappings; + @Final + public KeyMapping[] keyHotbarSlots; - @Redirect(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Options;load()V")) - void vivecraft$processOptionsMixin(Options instance) { - this.keyMappings = VivecraftVRMod.INSTANCE.initializeBindings(this.keyMappings); - instance.load(); + @ModifyArg( + method = "", + index = 0, + at = @At( + value = "INVOKE", + target = "Lorg/apache/commons/lang3/ArrayUtils;addAll([Ljava/lang/Object;[Ljava/lang/Object;)[Ljava/lang/Object;" + ) + ) + private Object[] vivecraft$injectKeyBindingsMixin(Object[] array) + { + if (array instanceof KeyMapping[] mappings && mappings.length > 0) { + // inject custom key mappings + array = mappings = Stream.concat(Arrays.stream(mappings), VivecraftVRMod.userKeyBindingSet.stream()).toArray(KeyMapping[]::new); + VivecraftVRMod.vanillaBindingSet.addAll(Arrays.asList(mappings)); + if (this.keyHotbarSlots != null && this.keyHotbarSlots.length > 0) { + VivecraftVRMod.vanillaBindingSet.addAll(Arrays.asList(this.keyHotbarSlots)); + } else { + VRSettings.logger.error("keyHotbarSlots is invalid! {}", Arrays.toString(array)); + } + } else { + VRSettings.logger.error("keyMappings is invalid! {}", Arrays.toString(array)); + } + return array; } } diff --git a/common/src/main/java/org/vivecraft/mixin/client_vr/gui/screens/PauseScreenVRMixin.java b/common/src/main/java/org/vivecraft/mixin/client_vr/gui/screens/PauseScreenVRMixin.java index 3faf34e16..f9b31d840 100644 --- a/common/src/main/java/org/vivecraft/mixin/client_vr/gui/screens/PauseScreenVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client_vr/gui/screens/PauseScreenVRMixin.java @@ -24,6 +24,7 @@ import org.vivecraft.client_vr.settings.VRHotkeys; import org.vivecraft.client_vr.settings.VRSettings; import org.vivecraft.client_vr.utils.external.jkatvr; +import org.vivecraft.mixin.accessor.client.MinecraftAccessor; @Mixin(value = PauseScreen.class, priority = 900) public abstract class PauseScreenVRMixin extends Screen { @@ -43,7 +44,7 @@ protected PauseScreenVRMixin(Component component) { } catch (IllegalArgumentException e) { } - if (!Minecraft.getInstance().isMultiplayerServer()) { + if (!((MinecraftAccessor) Minecraft.getInstance()).callIsMultiplayerServer()) { rowHelper.addChild(new Button.Builder(Component.translatable("vivecraft.gui.chat"), (p) -> { this.minecraft.setScreen(new ChatScreen("")); diff --git a/common/src/main/java/org/vivecraft/mixin/client_vr/gui/screens/inventory/CreativeModeInventoryScreenVRMixin.java b/common/src/main/java/org/vivecraft/mixin/client_vr/gui/screens/inventory/CreativeModeInventoryScreenVRMixin.java index 07b806322..085d3d759 100644 --- a/common/src/main/java/org/vivecraft/mixin/client_vr/gui/screens/inventory/CreativeModeInventoryScreenVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client_vr/gui/screens/inventory/CreativeModeInventoryScreenVRMixin.java @@ -8,7 +8,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.alchemy.PotionUtils; @@ -19,6 +18,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.vivecraft.mixin.accessor.world.item.CreativeModeTabsAccessor; @Mixin(CreativeModeInventoryScreen.class) public abstract class CreativeModeInventoryScreenVRMixin extends EffectRenderingInventoryScreen { @@ -42,7 +42,7 @@ public CreativeModeInventoryScreenVRMixin(CreativeModeInventoryScreen.ItemPicker @Unique private void vivecraft$addCreativeItems(CreativeModeTab tab, NonNullList list) { - if (tab == BuiltInRegistries.CREATIVE_MODE_TAB.get(CreativeModeTabs.FOOD_AND_DRINKS) || tab == null) { + if (tab == BuiltInRegistries.CREATIVE_MODE_TAB.get(CreativeModeTabsAccessor.getFOOD_AND_DRINKS()) || tab == null) { ItemStack itemstack = (new ItemStack(Items.PUMPKIN_PIE)).setHoverName(Component.literal("EAT ME")); ItemStack itemstack1 = PotionUtils.setPotion(new ItemStack(Items.POTION), Potions.WATER).setHoverName(Component.literal("DRINK ME")); itemstack1.getTag().putInt("HideFlags", 32); @@ -50,7 +50,7 @@ public CreativeModeInventoryScreenVRMixin(CreativeModeInventoryScreen.ItemPicker list.add(itemstack1); } - if (tab == BuiltInRegistries.CREATIVE_MODE_TAB.get(CreativeModeTabs.TOOLS_AND_UTILITIES) || tab == null) { + if (tab == BuiltInRegistries.CREATIVE_MODE_TAB.get(CreativeModeTabsAccessor.getTOOLS_AND_UTILITIES()) || tab == null) { ItemStack itemstack3 = (new ItemStack(Items.LEATHER_BOOTS)).setHoverName(Component.translatable("vivecraft.item.jumpboots")); itemstack3.getTag().putBoolean("Unbreakable", true); itemstack3.getTag().putInt("HideFlags", 4); diff --git a/common/src/main/java/org/vivecraft/mixin/client_vr/renderer/GameRendererVRMixin.java b/common/src/main/java/org/vivecraft/mixin/client_vr/renderer/GameRendererVRMixin.java index e29c50595..06204443c 100644 --- a/common/src/main/java/org/vivecraft/mixin/client_vr/renderer/GameRendererVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client_vr/renderer/GameRendererVRMixin.java @@ -49,6 +49,7 @@ import org.vivecraft.client_xr.render_pass.RenderPassManager; import org.vivecraft.client_xr.render_pass.RenderPassType; import org.vivecraft.client_xr.render_pass.WorldRenderPass; +import org.vivecraft.mixin.accessor.world.entity.EntityAccessor; import org.vivecraft.mod_compat_vr.immersiveportals.ImmersivePortalsHelper; import java.io.IOException; @@ -543,7 +544,7 @@ public abstract class GameRendererVRMixin livingentity.setYRot(vrdata$vrdevicepose.getYaw()); livingentity.yHeadRot = livingentity.getYRot(); livingentity.yHeadRotO = livingentity.getYRot(); - livingentity.eyeHeight = 0.0001F; + ((EntityAccessor) livingentity).setEyeHeight(0.0001F); } } @@ -565,7 +566,7 @@ public abstract class GameRendererVRMixin this.vivecraft$rvepitch = e.getXRot(); this.vivecraft$rvelastyaw = e.yHeadRotO; this.vivecraft$rvelastpitch = e.xRotO; - this.vivecraft$rveHeight = e.getEyeHeight(); + this.vivecraft$rveHeight = ((EntityAccessor) e).getEyeHeight(); this.vivecraft$cached = true; } } @@ -588,7 +589,7 @@ public abstract class GameRendererVRMixin e.xRotO = this.vivecraft$rvelastpitch; e.yHeadRot = this.vivecraft$rveyaw; e.yHeadRotO = this.vivecraft$rvelastyaw; - e.eyeHeight = this.vivecraft$rveHeight; + ((EntityAccessor) e).setEyeHeight(this.vivecraft$rveHeight); this.vivecraft$cached = false; } } diff --git a/common/src/main/java/org/vivecraft/mixin/client_vr/renderer/NoSodiumLevelRendererVRMixin.java b/common/src/main/java/org/vivecraft/mixin/client_vr/renderer/NoSodiumLevelRendererVRMixin.java index 30bc23587..f14084c5d 100644 --- a/common/src/main/java/org/vivecraft/mixin/client_vr/renderer/NoSodiumLevelRendererVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client_vr/renderer/NoSodiumLevelRendererVRMixin.java @@ -12,7 +12,7 @@ import org.spongepowered.asm.mixin.injection.ModifyConstant; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.vivecraft.client_vr.VRState; -import org.vivecraft.mixin.client.blaze3d.RenderSystemAccessor; +import org.vivecraft.mixin.accessor.blaze3d.RenderSystemAccessor; import java.util.concurrent.atomic.AtomicBoolean; diff --git a/common/src/main/java/org/vivecraft/mixin/client_vr/renderer/blockentity/TheEndGatewayRendererVRMixin.java b/common/src/main/java/org/vivecraft/mixin/client_vr/renderer/blockentity/TheEndGatewayRendererVRMixin.java index 7b6087ee7..f71d4440b 100644 --- a/common/src/main/java/org/vivecraft/mixin/client_vr/renderer/blockentity/TheEndGatewayRendererVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client_vr/renderer/blockentity/TheEndGatewayRendererVRMixin.java @@ -13,29 +13,29 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.vivecraft.client_vr.render.VRShaders; import org.vivecraft.client_xr.render_pass.RenderPassType; +import org.vivecraft.mixin.accessor.client.renderer.RenderTypeAccessor; @Mixin(TheEndGatewayRenderer.class) public class TheEndGatewayRendererVRMixin { @Unique - private static final RenderType vivecraft$END_GATEWAY_VR = - RenderType - .create( - "end_portal", - DefaultVertexFormat.POSITION, - VertexFormat.Mode.QUADS, - 256, - false, - false, - RenderType.CompositeState.builder() - .setShaderState(new RenderStateShard.ShaderStateShard(VRShaders::getRendertypeEndGatewayShaderVR)) - .setTextureState( - RenderStateShard - .MultiTextureStateShard - .builder() - .add(TheEndPortalRenderer.END_SKY_LOCATION, false, false) - .add(TheEndPortalRenderer.END_PORTAL_LOCATION, false, false) - .build()) - .createCompositeState(false)); + private static final RenderType vivecraft$END_GATEWAY_VR = RenderTypeAccessor.callCreate( + "end_portal", + DefaultVertexFormat.POSITION, + VertexFormat.Mode.QUADS, + 256, + false, + false, + RenderType.CompositeState.builder() + .setShaderState(new RenderStateShard.ShaderStateShard(VRShaders::getRendertypeEndGatewayShaderVR)) + .setTextureState( + RenderStateShard + .MultiTextureStateShard + .builder() + .add(TheEndPortalRenderer.END_SKY_LOCATION, false, false) + .add(TheEndPortalRenderer.END_PORTAL_LOCATION, false, false) + .build()) + .createCompositeState(false) + ); @Inject(at = @At("HEAD"), method = "renderType", cancellable = true) private void vivecraft$differentShaderInVR(CallbackInfoReturnable cir) { diff --git a/common/src/main/java/org/vivecraft/mixin/client_vr/renderer/blockentity/TheEndPortalRendererVRMixin.java b/common/src/main/java/org/vivecraft/mixin/client_vr/renderer/blockentity/TheEndPortalRendererVRMixin.java index bd7d91aed..b4388a041 100644 --- a/common/src/main/java/org/vivecraft/mixin/client_vr/renderer/blockentity/TheEndPortalRendererVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client_vr/renderer/blockentity/TheEndPortalRendererVRMixin.java @@ -12,30 +12,31 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.vivecraft.client_vr.render.VRShaders; import org.vivecraft.client_xr.render_pass.RenderPassType; +import org.vivecraft.mixin.accessor.client.renderer.RenderTypeAccessor; @Mixin(TheEndPortalRenderer.class) public class TheEndPortalRendererVRMixin { @Unique - private static final RenderType vivecraft$END_PORTAL_VR = - RenderType - .create( - "end_portal", - DefaultVertexFormat.POSITION, - VertexFormat.Mode.QUADS, - 256, - false, - false, - RenderType.CompositeState.builder() - .setShaderState(new RenderStateShard.ShaderStateShard(VRShaders::getRendertypeEndPortalShaderVR)) - .setTextureState( - RenderStateShard - .MultiTextureStateShard - .builder() - .add(TheEndPortalRenderer.END_SKY_LOCATION, false, false) - .add(TheEndPortalRenderer.END_PORTAL_LOCATION, false, false) - .build()) - .createCompositeState(false)); + private static final RenderType vivecraft$END_PORTAL_VR = RenderTypeAccessor.callCreate( + "end_portal", + DefaultVertexFormat.POSITION, + VertexFormat.Mode.QUADS, + 256, + false, + false, + RenderType.CompositeState.builder() + .setShaderState(new RenderStateShard.ShaderStateShard(VRShaders::getRendertypeEndPortalShaderVR)) + .setTextureState( + RenderStateShard + .MultiTextureStateShard + .builder() + .add(TheEndPortalRenderer.END_SKY_LOCATION, false, false) + .add(TheEndPortalRenderer.END_PORTAL_LOCATION, false, false) + .build() + ) + .createCompositeState(false) + ); @Inject(at = @At("HEAD"), method = "renderType", cancellable = true) private void vivecraft$differentShaderInVR(CallbackInfoReturnable cir) { diff --git a/common/src/main/java/org/vivecraft/mixin/client_vr/tutorial/MovementTutorialStepInstanceVRMixin.java b/common/src/main/java/org/vivecraft/mixin/client_vr/tutorial/MovementTutorialStepInstanceVRMixin.java index c277d4664..7ec0d0320 100644 --- a/common/src/main/java/org/vivecraft/mixin/client_vr/tutorial/MovementTutorialStepInstanceVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client_vr/tutorial/MovementTutorialStepInstanceVRMixin.java @@ -36,12 +36,12 @@ public class MovementTutorialStepInstanceVRMixin { if (!ClientDataHolderVR.getInstance().vrSettings.seated) { // find the currently used movement binding - if (MCVR.get().getInputAction(VivecraftVRMod.INSTANCE.keyFreeMoveStrafe).isActive()) { + if (MCVR.get().getInputAction(VivecraftVRMod.keyFreeMoveStrafe).isActive()) { // moveStrafe active - return Component.translatable("vivecraft.toasts.move1", Component.literal(MCVR.get().getOriginName(MCVR.get().getInputAction(VivecraftVRMod.INSTANCE.keyFreeMoveStrafe).getLastOrigin())).withStyle(ChatFormatting.BOLD)); - } else if (MCVR.get().getInputAction(VivecraftVRMod.INSTANCE.keyFreeMoveRotate).isActive()) { + return Component.translatable("vivecraft.toasts.move1", Component.literal(MCVR.get().getOriginName(MCVR.get().getInputAction(VivecraftVRMod.keyFreeMoveStrafe).getLastOrigin())).withStyle(ChatFormatting.BOLD)); + } else if (MCVR.get().getInputAction(VivecraftVRMod.keyFreeMoveRotate).isActive()) { // moveRotate active - return Component.translatable("vivecraft.toasts.move1", Component.literal(MCVR.get().getOriginName(MCVR.get().getInputAction(VivecraftVRMod.INSTANCE.keyFreeMoveRotate).getLastOrigin())).withStyle(ChatFormatting.BOLD)); + return Component.translatable("vivecraft.toasts.move1", Component.literal(MCVR.get().getOriginName(MCVR.get().getInputAction(VivecraftVRMod.keyFreeMoveRotate).getLastOrigin())).withStyle(ChatFormatting.BOLD)); } else if (MCVR.get().getInputAction(Minecraft.getInstance().options.keyUp).isActive() || MCVR.get().getInputAction(Minecraft.getInstance().options.keyDown).isActive() || MCVR.get().getInputAction(Minecraft.getInstance().options.keyLeft).isActive() || @@ -88,12 +88,12 @@ public class MovementTutorialStepInstanceVRMixin { ); default -> Component.literal(""); }; - } else if (MCVR.get().getInputAction(VivecraftVRMod.INSTANCE.keyTeleportFallback).isActive()) { + } else if (MCVR.get().getInputAction(VivecraftVRMod.keyTeleportFallback).isActive()) { // teleport fallback - return Component.translatable("vivecraft.toasts.move1", Component.literal(MCVR.get().getOriginName(MCVR.get().getInputAction(VivecraftVRMod.INSTANCE.keyTeleportFallback).getLastOrigin())).withStyle(ChatFormatting.BOLD)); - } else if (MCVR.get().getInputAction(VivecraftVRMod.INSTANCE.keyTeleport).isActive()) { + return Component.translatable("vivecraft.toasts.move1", Component.literal(MCVR.get().getOriginName(MCVR.get().getInputAction(VivecraftVRMod.keyTeleportFallback).getLastOrigin())).withStyle(ChatFormatting.BOLD)); + } else if (MCVR.get().getInputAction(VivecraftVRMod.keyTeleport).isActive()) { // teleport - return Component.translatable("vivecraft.toasts.teleport", Component.literal(MCVR.get().getOriginName(MCVR.get().getInputAction(VivecraftVRMod.INSTANCE.keyTeleport).getLastOrigin())).withStyle(ChatFormatting.BOLD)); + return Component.translatable("vivecraft.toasts.teleport", Component.literal(MCVR.get().getOriginName(MCVR.get().getInputAction(VivecraftVRMod.keyTeleport).getLastOrigin())).withStyle(ChatFormatting.BOLD)); } } return title; @@ -125,7 +125,7 @@ public class MovementTutorialStepInstanceVRMixin { @Inject(at = @At("TAIL"), method = "onInput") private void vivecraft$addTeleport(Input input, CallbackInfo ci) { - moved |= VivecraftVRMod.INSTANCE.keyTeleport.isDown(); + moved |= VivecraftVRMod.keyTeleport.isDown(); } @Inject(at = @At("HEAD"), method = "onMouse", cancellable = true) diff --git a/common/src/main/java/org/vivecraft/mixin/server/ServerGamePacketListenerImplMixin.java b/common/src/main/java/org/vivecraft/mixin/server/ServerGamePacketListenerImplMixin.java index 5d301d599..119a586fe 100644 --- a/common/src/main/java/org/vivecraft/mixin/server/ServerGamePacketListenerImplMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/server/ServerGamePacketListenerImplMixin.java @@ -1,5 +1,6 @@ package org.vivecraft.mixin.server; +import io.netty.channel.Channel; import net.minecraft.network.Connection; import net.minecraft.network.chat.Component; import net.minecraft.network.protocol.PacketUtils; @@ -16,6 +17,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.vivecraft.common.network.CommonNetworkHelper; +import org.vivecraft.mixin.accessor.network.ConnectionAccessor; import org.vivecraft.server.AimFixHandler; import org.vivecraft.server.ServerNetworking; import org.vivecraft.server.ServerVRPlayers; @@ -43,9 +45,9 @@ public abstract class ServerGamePacketListenerImplMixin implements ServerPlayerC @Inject(at = @At("TAIL"), method = "(Lnet/minecraft/server/MinecraftServer;Lnet/minecraft/network/Connection;Lnet/minecraft/server/level/ServerPlayer;)V") public void vivecraft$init(MinecraftServer p_9770_, Connection p_9771_, ServerPlayer p_9772_, CallbackInfo info) { // Vivecraft - if (this.connection.channel != null && this.connection.channel.pipeline().get("packet_handler") != null) { //fake player fix - this.connection.channel.pipeline().addBefore("packet_handler", "vr_aim_fix", - new AimFixHandler(this.connection)); + Channel channel = ((ConnectionAccessor) this.connection).getChannel(); + if (channel != null && channel.pipeline().get("packet_handler") != null) { //fake player fix + channel.pipeline().addBefore("packet_handler", "vr_aim_fix", new AimFixHandler(this.connection)); } } diff --git a/common/src/main/java/org/vivecraft/mod_compat_vr/optifine/mixin/ShadersRenderVRMixin.java b/common/src/main/java/org/vivecraft/mod_compat_vr/optifine/mixin/ShadersRenderVRMixin.java index 2aca5869d..08f7a413c 100644 --- a/common/src/main/java/org/vivecraft/mod_compat_vr/optifine/mixin/ShadersRenderVRMixin.java +++ b/common/src/main/java/org/vivecraft/mod_compat_vr/optifine/mixin/ShadersRenderVRMixin.java @@ -18,6 +18,7 @@ import org.vivecraft.client_vr.extensions.GameRendererExtension; import org.vivecraft.client_vr.render.RenderPass; import org.vivecraft.client_xr.render_pass.RenderPassType; +import org.vivecraft.mixin.accessor.client.CameraAccessor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -68,7 +69,7 @@ public static void updateActiveRenderInfo(Camera activeRenderInfo, Minecraft mc, @ModifyVariable(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;renderEntity(Lnet/minecraft/world/entity/Entity;DDDFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;)V", remap = true, shift = At.Shift.BEFORE), ordinal = 0, method = "renderShadowMap", remap = false) private static Entity vivecraft$fixPlayerPos(Entity entity, GameRenderer gameRenderer, Camera activeRenderInfo) { - if (!RenderPassType.isVanilla() && entity == activeRenderInfo.entity) { + if (!RenderPassType.isVanilla() && entity == ((CameraAccessor) activeRenderInfo).getEntity()) { ((GameRendererExtension) gameRenderer).vivecraft$restoreRVEPos((LivingEntity) entity); } return entity; @@ -76,7 +77,7 @@ public static void updateActiveRenderInfo(Camera activeRenderInfo, Minecraft mc, @ModifyVariable(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;renderEntity(Lnet/minecraft/world/entity/Entity;DDDFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;)V", remap = true, shift = At.Shift.AFTER), ordinal = 0, method = "renderShadowMap", remap = false) private static Entity vivecraft$restorePlayerPos(Entity entity, GameRenderer gameRenderer, Camera activeRenderInfo) { - if (!RenderPassType.isVanilla() && entity == activeRenderInfo.entity) { + if (!RenderPassType.isVanilla() && entity == ((CameraAccessor) activeRenderInfo).getEntity()) { ((GameRendererExtension) gameRenderer).vivecraft$cacheRVEPos((LivingEntity) entity); ((GameRendererExtension) gameRenderer).vivecraft$setupRVE(); } diff --git a/common/src/main/java/org/vivecraft/server/AimFixHandler.java b/common/src/main/java/org/vivecraft/server/AimFixHandler.java index 4b470ec9f..c964d4c76 100644 --- a/common/src/main/java/org/vivecraft/server/AimFixHandler.java +++ b/common/src/main/java/org/vivecraft/server/AimFixHandler.java @@ -12,6 +12,7 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.network.ServerGamePacketListenerImpl; import net.minecraft.world.phys.Vec3; +import org.vivecraft.mixin.accessor.world.entity.EntityAccessor; import org.vivecraft.server.config.ServerConfig; public class AimFixHandler extends ChannelInboundHandlerAdapter { @@ -40,7 +41,7 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) { float xRotO = serverplayer.xRotO; float yRotO = serverplayer.yRotO; float yHeadRotO = serverplayer.yHeadRotO; - float eyeHeight = serverplayer.getEyeHeight(); + float eyeHeight = ((EntityAccessor) serverplayer).getEyeHeight(); ServerVivePlayer serverviveplayer = ServerVRPlayers.getVivePlayer(serverplayer); @@ -57,7 +58,7 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) { serverplayer.setYRot((float) Math.toDegrees(Math.atan2(-dir.x, dir.z))); serverplayer.xRotO = serverplayer.getXRot(); serverplayer.yRotO = serverplayer.yHeadRotO = serverplayer.yHeadRot = serverplayer.getYRot(); - serverplayer.eyeHeight = 0.0001F; + ((EntityAccessor) serverplayer).setEyeHeight(0.0001F); serverviveplayer.offset = position.subtract(aimPos); if (ServerConfig.debug.get()) { System.out.println("AimFix " + aimPos.x + " " + aimPos.y + " " + aimPos.z + " " + (float) Math.toDegrees(Math.asin(-dir.y)) + " " + (float) Math.toDegrees(Math.atan2(-dir.x, dir.z))); @@ -93,7 +94,7 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) { serverplayer.xRotO = xRotO; serverplayer.yRotO = yRotO; serverplayer.yHeadRotO = yHeadRotO; - serverplayer.eyeHeight = eyeHeight; + ((EntityAccessor) serverplayer).setEyeHeight(eyeHeight); if (serverviveplayer != null) { serverviveplayer.offset = new Vec3(0.0D, 0.0D, 0.0D); } diff --git a/common/src/main/java/org/vivecraft/server/ServerNetworking.java b/common/src/main/java/org/vivecraft/server/ServerNetworking.java index 31c894455..62af794f1 100644 --- a/common/src/main/java/org/vivecraft/server/ServerNetworking.java +++ b/common/src/main/java/org/vivecraft/server/ServerNetworking.java @@ -16,7 +16,7 @@ import org.vivecraft.common.CommonDataHolder; import org.vivecraft.common.network.CommonNetworkHelper; import org.vivecraft.common.network.VrPlayerState; -import org.vivecraft.mixin.server.ChunkMapAccessor; +import org.vivecraft.mixin.accessor.server.ChunkMapAccessor; import org.vivecraft.server.config.ServerConfig; import java.util.*; diff --git a/common/src/main/resources/vivecraft.accesswidener b/common/src/main/resources/vivecraft.accesswidener index 1d61305e9..0da357c61 100644 --- a/common/src/main/resources/vivecraft.accesswidener +++ b/common/src/main/resources/vivecraft.accesswidener @@ -7,87 +7,17 @@ accessible field net/minecraft/client/model/geom/ModelPart cubes Ljava/util/List accessible field net/minecraft/client/model/geom/ModelPart$Cube polygons [Lnet/minecraft/client/model/geom/ModelPart$Polygon; # custom player modle rendering -accessible field net/minecraft/client/model/PlayerModel slim Z extendable method net/minecraft/client/renderer/entity/player/PlayerRenderer setModelProperties (Lnet/minecraft/client/player/AbstractClientPlayer;)V # modded layer supports accessible method net/minecraft/client/renderer/entity/LivingEntityRenderer addLayer (Lnet/minecraft/client/renderer/entity/layers/RenderLayer;)Z extendable method net/minecraft/client/renderer/entity/LivingEntityRenderer addLayer (Lnet/minecraft/client/renderer/entity/layers/RenderLayer;)Z -mutable field net/minecraft/client/renderer/entity/layers/RenderLayer renderer Lnet/minecraft/client/renderer/entity/RenderLayerParent; -accessible field net/minecraft/client/renderer/entity/layers/RenderLayer renderer Lnet/minecraft/client/renderer/entity/RenderLayerParent; - -# gui handling -accessible method net/minecraft/client/MouseHandler onPress (JIII)V -accessible method net/minecraft/client/MouseHandler onMove (JDD)V -accessible method net/minecraft/client/MouseHandler onScroll (JDD)V -accessible method net/minecraft/client/KeyboardHandler charTyped (JII)V - -# for aim fix -accessible field net/minecraft/network/Connection channel Lio/netty/channel/Channel; - -# for quicktorch -accessible method net/minecraft/client/Minecraft startUseItem ()V - -# to switch rendrtargetrs for VR passes -mutable field net/minecraft/client/Minecraft mainRenderTarget Lcom/mojang/blaze3d/pipeline/RenderTarget; -accessible field net/minecraft/client/Minecraft mainRenderTarget Lcom/mojang/blaze3d/pipeline/RenderTarget; - -# XR Camera -accessible field net/minecraft/client/Camera initialized Z -accessible field net/minecraft/client/Camera level Lnet/minecraft/world/level/BlockGetter; -accessible field net/minecraft/client/Camera entity Lnet/minecraft/world/entity/Entity; -accessible field net/minecraft/client/Camera xRot F -accessible field net/minecraft/client/Camera yRot F - -# to set reset camera before tick -accessible method net/minecraft/client/Camera setPosition (Lnet/minecraft/world/phys/Vec3;)V - -# for pausemenu buttons -accessible method net/minecraft/client/Minecraft isMultiplayerServer ()Z - -# to add custom key mappings -mutable field net/minecraft/client/Options keyMappings [Lnet/minecraft/client/KeyMapping; -# to add custom controls categories -accessible field net/minecraft/client/KeyMapping CATEGORY_SORT_ORDER Ljava/util/Map; -mutable field net/minecraft/client/KeyMapping CATEGORY_SORT_ORDER Ljava/util/Map; -# to check key inputs -accessible field net/minecraft/client/KeyMapping clickCount I -accessible method net/minecraft/client/KeyMapping release ()V -accessible field net/minecraft/client/KeyMapping key Lcom/mojang/blaze3d/platform/InputConstants$Key; # to get the current blend state accessible field com/mojang/blaze3d/platform/GlStateManager BLEND Lcom/mojang/blaze3d/platform/GlStateManager$BlendState; accessible class com/mojang/blaze3d/platform/GlStateManager$BlendState -# to render vr hands -accessible method net/minecraft/client/renderer/ItemInHandRenderer renderArmWithItem (Lnet/minecraft/client/player/AbstractClientPlayer;FFLnet/minecraft/world/InteractionHand;FLnet/minecraft/world/item/ItemStack;FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V - -# to create custom END shader -accessible method net/minecraft/client/renderer/RenderType create (Ljava/lang/String;Lcom/mojang/blaze3d/vertex/VertexFormat;Lcom/mojang/blaze3d/vertex/VertexFormat$Mode;IZZLnet/minecraft/client/renderer/RenderType$CompositeState;)Lnet/minecraft/client/renderer/RenderType$CompositeRenderType; - -# to render item activation outside of gamerenderer -accessible method net/minecraft/client/renderer/GameRenderer renderItemActivationAnimation (IIF)V - -# tohave differnt postEffects per pass -accessible field net/minecraft/client/renderer/GameRenderer postEffect Lnet/minecraft/client/renderer/PostChain; - -# to disable destroy delay, on roomscale hitting -accessible field net/minecraft/client/multiplayer/MultiPlayerGameMode destroyDelay I - -# for correct vr rendering -accessible field net/minecraft/world/entity/Entity eyeHeight F - -# to add vivecraft items in the creative menus -accessible field net/minecraft/world/item/CreativeModeTabs TOOLS_AND_UTILITIES Lnet/minecraft/resources/ResourceKey; -accessible field net/minecraft/world/item/CreativeModeTabs FOOD_AND_DRINKS Lnet/minecraft/resources/ResourceKey; - -# to render crosshair -accessible field net/minecraft/client/gui/Gui GUI_ICONS_LOCATION Lnet/minecraft/resources/ResourceLocation; - # for menuworlds accessible field net/minecraft/client/multiplayer/ClientLevel$ClientLevelData isFlat Z -accessible field net/minecraft/world/level/biome/BiomeManager biomeZoomSeed J accessible class net/minecraft/world/level/biome/Biome$ClimateSettings -accessible field net/minecraft/world/level/biome/AmbientParticleSettings probability F extendable class net/minecraft/world/level/material/FluidState -accessible field net/minecraft/world/level/block/state/StateHolder propertiesCodec Lcom/mojang/serialization/MapCodec; diff --git a/common/src/main/resources/vivecraft.mixins.json b/common/src/main/resources/vivecraft.mixins.json index 2811f7f13..dddb6ced0 100644 --- a/common/src/main/resources/vivecraft.mixins.json +++ b/common/src/main/resources/vivecraft.mixins.json @@ -4,7 +4,23 @@ "plugin": "org.vivecraft.MixinConfig", "compatibilityLevel": "JAVA_17", "client": [ - "client.blaze3d.RenderSystemAccessor", + "accessor.blaze3d.RenderSystemAccessor", + "accessor.client.CameraAccessor", + "accessor.client.KeyboardHandlerAccessor", + "accessor.client.KeyMappingAccessor", + "accessor.client.MinecraftAccessor", + "accessor.client.MouseHandlerAccessor", + "accessor.client.gui.GuiAccessor", + "accessor.client.model.PlayerModelAccessor", + "accessor.client.multiplayer.MultiplayerGameModeAccessor", + "accessor.client.renderer.GameRendererAccessor", + "accessor.client.renderer.ItemInHandRendererAccessor", + "accessor.client.renderer.RenderTypeAccessor", + "accessor.client.renderer.entity.layers.RenderLayerAccessor", + "accessor.world.item.CreativeModeTabsAccessor", + "accessor.world.level.biome.AmbientParticleSettingsAccessor", + "accessor.world.level.biome.BiomeManagerAccessor", + "accessor.world.level.block.state.StateHolderAccessor", "client.blaze3d.RenderTargetMixin", "client.gui.screens.ScreenMixin", "client.gui.screens.TitleScreenMixin", @@ -18,6 +34,7 @@ "client_vr.ClientBrandRetrieverVRMixin", "client_vr.KeyboardHandlerVRMixin", "client_vr.KeyboardInputVRMixin", + "client_vr.KeyMappingVRMixin", "client_vr.MinecraftVRMixin", "client_vr.MouseHandlerVRMixin", "client_vr.OptionsVRMixin", @@ -71,11 +88,13 @@ ], "minVersion": "0.8.4", "mixins": [ - "server.ChunkMapAccessor", + "accessor.network.ConnectionAccessor", + "accessor.server.ChunkMapAccessor", + "accessor.server.TrackedEntityAccessor", + "accessor.world.entity.EntityAccessor", "server.MinecraftServerMixin", "server.ServerGamePacketListenerImplMixin", "server.ServerPlayerMixin", - "server.TrackedEntityAccessor", "server.players.PlayerListMixin", "world.entity.ai.goal.SwellGoalMixin", "world.entity.monster.EndermanFreezeWhenLookedAtMixin",