diff --git a/.architectury-transformer/debug.log b/.architectury-transformer/debug.log deleted file mode 100644 index 263bc1982..000000000 --- a/.architectury-transformer/debug.log +++ /dev/null @@ -1 +0,0 @@ -[Architectury Transformer DEBUG] Closing File Systems for C:\Users\ArneL\OneDrive\Documents\1.18.2-forge-fabric-mixin\common\build\libs\vivecraft-1.0.0.jar diff --git a/.gitignore b/.gitignore index ccb0c5626..aa9842795 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ classes/ .metadata .vscode .settings -*.launch \ No newline at end of file +*.launch +.architectury-transformer/ diff --git a/common/src/main/java/org/vivecraft/CommonDataHolder.java b/common/src/main/java/org/vivecraft/CommonDataHolder.java index e0a23f7f6..3c3784f63 100644 --- a/common/src/main/java/org/vivecraft/CommonDataHolder.java +++ b/common/src/main/java/org/vivecraft/CommonDataHolder.java @@ -6,12 +6,11 @@ public class CommonDataHolder { public boolean resourcePacksChanged; public final String minecriftVerString; - //TODO add loader name public CommonDataHolder() { if (VRState.checkVR()) { - minecriftVerString = "Vivecraft 1.18.2 jrbudda-VR-fabric-a1"; + minecriftVerString = "Vivecraft 1.18.2 jrbudda-VR-" + Xplat.getModloader() + "-a1"; } else { - minecriftVerString = "Vivecraft 1.18.2 jrbudda-NONVR-fabric-a1"; + minecriftVerString = "Vivecraft 1.18.2 jrbudda-NONVR-" + Xplat.getModloader() + "-a1"; } } diff --git a/common/src/main/java/org/vivecraft/Xplat.java b/common/src/main/java/org/vivecraft/Xplat.java index b7ac9f525..f39eba949 100644 --- a/common/src/main/java/org/vivecraft/Xplat.java +++ b/common/src/main/java/org/vivecraft/Xplat.java @@ -32,4 +32,9 @@ static Path getConfigPath(String fileName) { static boolean isDedicatedServer() { return false; } + + @ExpectPlatform + static String getModloader() { + return ""; + } } diff --git a/common/src/main/java/org/vivecraft/mixin/blaze3d/platform/GlStateManagerVRMixin.java b/common/src/main/java/org/vivecraft/mixin/blaze3d/platform/GlStateManagerVRMixin.java index 02edf6e76..23f63c444 100644 --- a/common/src/main/java/org/vivecraft/mixin/blaze3d/platform/GlStateManagerVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/blaze3d/platform/GlStateManagerVRMixin.java @@ -20,7 +20,7 @@ private static int size(int i) { } //Change the limit of textures to 32 - @ModifyConstant(constant = @Constant(intValue = 12),method = "_getTextureId", remap = false) + @ModifyConstant(constant = @Constant(intValue = 12),method = "_getTextureId") private static int properId(int i) { return RenderSystemAccessor.getShaderTextures().length; } @@ -29,7 +29,8 @@ private static int properId(int i) { * @author * @reason */ - @Overwrite(remap = false) + // do remap because of forge + @Overwrite public static void _blendFuncSeparate(int i, int j, int k, int l) { RenderSystem.assertOnRenderThread(); if (j == GlStateManager.SourceFactor.SRC_ALPHA.value && j == GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA.value && k == GlStateManager.SourceFactor.ONE.value && l == GlStateManager.DestFactor.ZERO.value) { diff --git a/common/src/main/java/org/vivecraft/mixin/blaze3d/platform/WindowVRMixin.java b/common/src/main/java/org/vivecraft/mixin/blaze3d/platform/WindowVRMixin.java index 58f594fcc..b1f29a8ce 100644 --- a/common/src/main/java/org/vivecraft/mixin/blaze3d/platform/WindowVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/blaze3d/platform/WindowVRMixin.java @@ -39,12 +39,12 @@ public abstract class WindowVRMixin { public abstract int getScreenHeight(); @Redirect(at = @At(value = "INVOKE", target = "Lorg/lwjgl/glfw/GLFW;glfwSetFramebufferSizeCallback(JLorg/lwjgl/glfw/GLFWFramebufferSizeCallbackI;)Lorg/lwjgl/glfw/GLFWFramebufferSizeCallback;", remap = false), - method = "(Lcom/mojang/blaze3d/platform/WindowEventHandler;Lcom/mojang/blaze3d/platform/ScreenManager;Lcom/mojang/blaze3d/platform/DisplayData;Ljava/lang/String;Ljava/lang/String;)V", remap = false) + method = "(Lcom/mojang/blaze3d/platform/WindowEventHandler;Lcom/mojang/blaze3d/platform/ScreenManager;Lcom/mojang/blaze3d/platform/DisplayData;Ljava/lang/String;Ljava/lang/String;)V") public GLFWFramebufferSizeCallback removebuffer(long l, GLFWFramebufferSizeCallbackI cl) { return null; } - @Redirect(method = "updateVsync", at = @At(value = "INVOKE", target = "Lorg/lwjgl/glfw/GLFW;glfwSwapInterval(I)V"), remap = false) + @Redirect(method = "updateVsync", at = @At(value = "INVOKE", target = "Lorg/lwjgl/glfw/GLFW;glfwSwapInterval(I)V")) public void disableSwap(int interval) { GLFW.glfwSwapInterval(0); } diff --git a/common/src/main/java/org/vivecraft/mixin/blaze3d/systems/RenderSystemAccessor.java b/common/src/main/java/org/vivecraft/mixin/blaze3d/systems/RenderSystemAccessor.java index d8f882d67..b6252b2b6 100644 --- a/common/src/main/java/org/vivecraft/mixin/blaze3d/systems/RenderSystemAccessor.java +++ b/common/src/main/java/org/vivecraft/mixin/blaze3d/systems/RenderSystemAccessor.java @@ -12,8 +12,10 @@ @Mixin(RenderSystem.class) public interface RenderSystemAccessor { - @Accessor(remap = false) - static int[] getShaderTextures() { + + // needs remap because of forge + @Accessor + public static int[] getShaderTextures(){ return null; } } diff --git a/common/src/main/java/org/vivecraft/mixin/blaze3d/systems/RenderSystemVRMixin.java b/common/src/main/java/org/vivecraft/mixin/blaze3d/systems/RenderSystemVRMixin.java index 4c10419c8..c0607cf1b 100644 --- a/common/src/main/java/org/vivecraft/mixin/blaze3d/systems/RenderSystemVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/blaze3d/systems/RenderSystemVRMixin.java @@ -12,7 +12,8 @@ @Mixin(RenderSystem.class) public class RenderSystemVRMixin { - @Inject(at = @At("HEAD"), method = "defaultBlendFunc", cancellable = true, remap = false) + // do remap because of forge + @Inject(at = @At("HEAD"), method = "defaultBlendFunc", cancellable = true) private static void defaultBlendFunc(CallbackInfo ci) { blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); ci.cancel(); diff --git a/common/src/main/java/org/vivecraft/mixin/client/gui/GuiVRMixin.java b/common/src/main/java/org/vivecraft/mixin/client/gui/GuiVRMixin.java index 0c2fe4ce5..c54adbf64 100644 --- a/common/src/main/java/org/vivecraft/mixin/client/gui/GuiVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client/gui/GuiVRMixin.java @@ -126,7 +126,8 @@ public void renderVRHotbarRight(Gui instance, PoseStack poseStack, int x, int y, } } - @Inject(at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;disableBlend()V", remap = false), method = "renderHotbar") + // do remap because of forge + @Inject(at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;disableBlend()V"), method = "renderHotbar") public void renderVive(float f, PoseStack poseStack, CallbackInfo ci){ this.renderViveHudIcons(poseStack); } diff --git a/common/src/main/java/org/vivecraft/mixin/client/multiplayer/ClientPacketListenerVRMixin.java b/common/src/main/java/org/vivecraft/mixin/client/multiplayer/ClientPacketListenerVRMixin.java index efa7c18b9..39ef054e6 100644 --- a/common/src/main/java/org/vivecraft/mixin/client/multiplayer/ClientPacketListenerVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client/multiplayer/ClientPacketListenerVRMixin.java @@ -60,11 +60,6 @@ public void login(ClientboundLoginPacket p_105030_, CallbackInfo callback) { ClientDataHolder.getInstance().vrPlayer.teleportWarningTimer = 200; } - @Redirect(at = @At(value = "NEW", target = "Lnet/minecraft/client/player/KeyboardInput;(Lnet/minecraft/client/Options;)V"), method = "handleLogin") - public KeyboardInput login(Options options) { - return null; - } - @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;adjustPlayer(Lnet/minecraft/world/entity/player/Player;)V"), method = "handleLogin") public void readdInput(ClientboundLoginPacket clientboundLoginPacket, CallbackInfo ci) { this.minecraft.player.input = new VivecraftMovementInput(this.minecraft.options); @@ -105,19 +100,14 @@ public void chat(ClientboundChatPacket clientboundChatPacket, CallbackInfo ci) { @Redirect(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;resetPos()V"), method = "handleRespawn") public void sync(LocalPlayer instance) { instance.resetPos(); - ((PlayerExtension)instance).updateSyncFields(this.minecraft.player); + // ((PlayerExtension)instance).updateSyncFields(this.minecraft.player); } - @Redirect(at = @At(value = "NEW", target = "Lnet/minecraft/client/player/KeyboardInput;(Lnet/minecraft/client/Options;)V"), method = "handleRespawn") - public KeyboardInput respawn(Options options) { + @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;adjustPlayer(Lnet/minecraft/world/entity/player/Player;)V", shift = At.Shift.BEFORE), method = "handleRespawn") + public void readdInput2(ClientboundRespawnPacket clientboundRespawnPacket, CallbackInfo ci) { ClientNetworkHelper.resetServerSettings(); ClientNetworkHelper.sendVersionInfo(); ClientDataHolder.getInstance().vrPlayer.teleportWarningTimer = 200; - return null; - } - - @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;adjustPlayer(Lnet/minecraft/world/entity/player/Player;)V", shift = At.Shift.BEFORE), method = "handleRespawn") - public void readdInput2(ClientboundRespawnPacket clientboundRespawnPacket, CallbackInfo ci) { this.minecraft.player.input = new VivecraftMovementInput(this.minecraft.options); } diff --git a/common/src/main/java/org/vivecraft/mixin/client/player/LocalPlayerVRMixin.java b/common/src/main/java/org/vivecraft/mixin/client/player/LocalPlayerVRMixin.java index 57fbbf00d..d976ee8f6 100644 --- a/common/src/main/java/org/vivecraft/mixin/client/player/LocalPlayerVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client/player/LocalPlayerVRMixin.java @@ -138,11 +138,13 @@ public void overridePose(CallbackInfo ci) { ClientDataHolder.getInstance().vrPlayer.doPermanantLookOverride((LocalPlayer) (Object) this, ClientDataHolder.getInstance().vrPlayer.vrdata_world_pre); } + /* TODO: not working, is this needed? //TODO verify @ModifyVariable(at = @At("STORE"), ordinal = 3, method = "sendPosition") public boolean changeFlag(boolean b) { return this.teleported || b; } + */ @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;isPassenger()Z", shift = At.Shift.BEFORE), method = "sendPosition") public void passenger(CallbackInfo ci) { diff --git a/common/src/main/java/org/vivecraft/mixin/client/renderer/GameRendererVRMixin.java b/common/src/main/java/org/vivecraft/mixin/client/renderer/GameRendererVRMixin.java index f8eec563e..b1182f909 100644 --- a/common/src/main/java/org/vivecraft/mixin/client/renderer/GameRendererVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client/renderer/GameRendererVRMixin.java @@ -348,7 +348,7 @@ public long active() { return this.lastActiveTime; } - @Inject(at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;viewport(IIII)V", shift = Shift.AFTER, remap = false), method = "Lnet/minecraft/client/renderer/GameRenderer;render(FJZ)V") + @Inject(at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;viewport(IIII)V", shift = Shift.AFTER), method = "Lnet/minecraft/client/renderer/GameRenderer;render(FJZ)V") public void matrix(float partialTicks, long nanoTime, boolean renderWorldIn, CallbackInfo info) { this.resetProjectionMatrix(this.getProjectionMatrix(minecraft.options.fov)); RenderSystem.getModelViewStack().setIdentity(); diff --git a/common/src/main/java/org/vivecraft/mixin/client/renderer/LevelRendererVRMixin.java b/common/src/main/java/org/vivecraft/mixin/client/renderer/LevelRendererVRMixin.java index 28d9dd5fc..6f998f195 100644 --- a/common/src/main/java/org/vivecraft/mixin/client/renderer/LevelRendererVRMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client/renderer/LevelRendererVRMixin.java @@ -241,7 +241,7 @@ public void interactOutline(PoseStack poseStack, float f, long l, boolean bl, Ca } } - @Inject(at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;applyModelViewMatrix()V", ordinal = 1, remap = false), method = "renderLevel") + @Inject(at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;applyModelViewMatrix()V", ordinal = 1), method = "renderLevel") public void renderBukkake(PoseStack poseStack, float f, long l, boolean bl, Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, Matrix4f matrix4f, CallbackInfo ci) { this.level.getProfiler().popPush("render bukkake"); } diff --git a/common/src/main/resources/vivecraft.nonvr.mixins.json b/common/src/main/resources/vivecraft.nonvr.mixins.json index c8a62fe56..81fb9ee66 100644 --- a/common/src/main/resources/vivecraft.nonvr.mixins.json +++ b/common/src/main/resources/vivecraft.nonvr.mixins.json @@ -21,7 +21,6 @@ "blaze3d.pipeline.RenderTargetMixin", "blaze3d.systems.RenderSystemAccessor", "client.MinecraftMixin", - "client.OptionMixin", "client.main.MainMixin", "client.multiplayer.ClientPacketListenerMixin", "client.player.AbstractClientPlayerMixin", diff --git a/fabric/build.gradle b/fabric/build.gradle index 54f530072..d3329a114 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -34,13 +34,15 @@ dependencies { modRuntimeOnly(fabricApi.module("fabric-key-binding-api-v1", rootProject.fabric_api_version))//temp sodium modRuntimeOnly(fabricApi.module("fabric-rendering-fluids-v1", rootProject.fabric_api_version))//temp sodium modRuntimeOnly(fabricApi.module("fabric-rendering-data-attachment-v1", rootProject.fabric_api_version))//temp sodium - modRuntimeOnly(fabricApi.module("fabric-resource-loader-v0", rootProject.fabric_api_version))//temp sodium modRuntimeOnly 'org.anarres:jcpp:1.4.14'//temp iris modCompileOnly 'com.github.2No2Name:McTester:v0.2.4' //temp lithium modCompileOnly 'com.github.astei:lazydfu:0.1.2' //temp lithium + // needed for resource loading + include(modImplementation(fabricApi.module("fabric-resource-loader-v0", rootProject.fabric_api_version))) + include "com.github.Fallen-Breath:conditional-mixin:v0.3.1" include("org.lwjgl:lwjgl-ovr:3.2.2:natives-windows") diff --git a/fabric/src/main/java/org/vivecraft/fabric/XplatImpl.java b/fabric/src/main/java/org/vivecraft/fabric/XplatImpl.java index 84be5cf47..ead081cc4 100644 --- a/fabric/src/main/java/org/vivecraft/fabric/XplatImpl.java +++ b/fabric/src/main/java/org/vivecraft/fabric/XplatImpl.java @@ -18,4 +18,8 @@ public static Path getConfigPath(String fileName) { public static boolean isDedicatedServer() { return FabricLoader.getInstance().getEnvironmentType().equals(EnvType.SERVER); } + + public static String getModloader() { + return "fabric"; + } } diff --git a/common/src/main/java/org/vivecraft/mixin/client/OptionMixin.java b/fabric/src/main/java/org/vivecraft/fabric/mixin/client/FabricOptionVRMixin.java similarity index 52% rename from common/src/main/java/org/vivecraft/mixin/client/OptionMixin.java rename to fabric/src/main/java/org/vivecraft/fabric/mixin/client/FabricOptionVRMixin.java index fa318c620..a1a68cb1f 100644 --- a/common/src/main/java/org/vivecraft/mixin/client/OptionMixin.java +++ b/fabric/src/main/java/org/vivecraft/fabric/mixin/client/FabricOptionVRMixin.java @@ -1,32 +1,17 @@ -package org.vivecraft.mixin.client; +package org.vivecraft.fabric.mixin.client; import org.vivecraft.ClientDataHolder; import net.minecraft.client.*; -import net.minecraft.network.chat.Component; -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.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Option.class) -public abstract class OptionMixin { +public abstract class FabricOptionVRMixin { - @Final - @Shadow - private static Component GRAPHICS_TOOLTIP_FAST; - - @Final - @Shadow - private static Component GRAPHICS_TOOLTIP_FANCY; - - @Final - @Shadow - private static Component GRAPHICS_TOOLTIP_FABULOUS; - - @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;allChanged()V"), method = "method_32552", remap = false) + @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;allChanged()V", remap = true), method = "method_32552", remap = false) private static void reinit(Options options, Option option, GraphicsStatus graphicsStatus, CallbackInfo ci) { ClientDataHolder.getInstance().vrRenderer.reinitFrameBuffers("gfx setting change"); } diff --git a/fabric/src/main/resources/vivecraft.vr.fabric.mixins.json b/fabric/src/main/resources/vivecraft.vr.fabric.mixins.json index 6f9891f0e..6e5b6e980 100644 --- a/fabric/src/main/resources/vivecraft.vr.fabric.mixins.json +++ b/fabric/src/main/resources/vivecraft.vr.fabric.mixins.json @@ -7,6 +7,7 @@ ], "client": [ + "client.FabricOptionVRMixin", "FabricMinecraftVRMixin", "FabricLevelRendererVRMixin", "FabricGameRendererVRMixin" diff --git a/forge/src/main/java/org/vivecraft/forge/XplatImpl.java b/forge/src/main/java/org/vivecraft/forge/XplatImpl.java index f78fb1b64..c79804103 100644 --- a/forge/src/main/java/org/vivecraft/forge/XplatImpl.java +++ b/forge/src/main/java/org/vivecraft/forge/XplatImpl.java @@ -20,4 +20,8 @@ public static Path getConfigPath(String fileName) { public static boolean isDedicatedServer() { return FMLEnvironment.dist == Dist.DEDICATED_SERVER; } + + public static String getModloader() { + return "forge"; + } } diff --git a/forge/src/main/java/org/vivecraft/forge/mixin/ForgeIngameGuiVRMixin.java b/forge/src/main/java/org/vivecraft/forge/mixin/ForgeIngameGuiVRMixin.java index 56a1da35f..f297af58d 100644 --- a/forge/src/main/java/org/vivecraft/forge/mixin/ForgeIngameGuiVRMixin.java +++ b/forge/src/main/java/org/vivecraft/forge/mixin/ForgeIngameGuiVRMixin.java @@ -8,7 +8,7 @@ @Mixin(ForgeIngameGui.class) public abstract class ForgeIngameGuiVRMixin { - @Redirect(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;useFancyGraphics()Z"), method = "lambda$static$0", remap = false) + @Redirect(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;useFancyGraphics()Z", remap = true), method = "lambda$static$0", remap = false) private static boolean noVignette() { return false; } diff --git a/forge/src/main/java/org/vivecraft/forge/mixin/client/ForgeOptionVRMixin.java b/forge/src/main/java/org/vivecraft/forge/mixin/client/ForgeOptionVRMixin.java new file mode 100644 index 000000000..cf8194333 --- /dev/null +++ b/forge/src/main/java/org/vivecraft/forge/mixin/client/ForgeOptionVRMixin.java @@ -0,0 +1,20 @@ +package org.vivecraft.forge.mixin.client; + +import net.minecraft.client.GraphicsStatus; +import net.minecraft.client.Option; +import net.minecraft.client.Options; +import org.spongepowered.asm.mixin.Mixin; +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.ClientDataHolder; + +@Mixin(Option.class) +public class ForgeOptionVRMixin { + + @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;allChanged()V", remap = true), method = "m_193661_", remap = false) + private static void reinit(Options options, Option option, GraphicsStatus graphicsStatus, CallbackInfo ci) { + ClientDataHolder.getInstance().vrRenderer.reinitFrameBuffers("gfx setting change"); + } + +} diff --git a/forge/src/main/resources/vivecraft.vr.forge.mixins.json b/forge/src/main/resources/vivecraft.vr.forge.mixins.json index 9442258d7..8c0109d92 100644 --- a/forge/src/main/resources/vivecraft.vr.forge.mixins.json +++ b/forge/src/main/resources/vivecraft.vr.forge.mixins.json @@ -7,6 +7,7 @@ ], "client": [ + "client.ForgeOptionVRMixin", "ForgeMinecraftVRMixin", "ForgeLevelRendererVRMixin", "ForgeIngameGuiVRMixin",