diff --git a/build.gradle b/build.gradle index 90c70d6c8..6dab71737 100644 --- a/build.gradle +++ b/build.gradle @@ -56,7 +56,7 @@ allprojects { tasks.withType(JavaCompile) { options.encoding = "UTF-8" - options.release = 16 + options.release = 8 } java { diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/block/BlockColorWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/block/BlockColorWrapper.java index decc9a5c0..11a92e02f 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/block/BlockColorWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/block/BlockColorWrapper.java @@ -168,7 +168,7 @@ public class BlockColorWrapper implements IBlockColorWrapper { tempColor = TextureAtlasSpriteWrapper.getPixelRGBA(texture, frameIndex, u, v); - if (texture.isTransparent(frameIndex, u, v)) + if (!texture.isTransparent(frameIndex, u, v)) // TODO[1.16.5]: Check if this should be inverted continue; if (lookForTint) diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/config/ConfigGui.java b/common/src/main/java/com/seibel/lod/common/wrappers/config/ConfigGui.java index 488f20252..4ad59a666 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/config/ConfigGui.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/config/ConfigGui.java @@ -49,6 +49,7 @@ import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.client.resources.language.I18n; // translation import com.mojang.blaze3d.vertex.PoseStack; +//import net.minecraft.client.gui.narration.NarratableEntry; // Remove in 1.16 /** * Based upon TinyConfig @@ -412,12 +413,12 @@ public abstract class ConfigGui if (!reload) loadFromFile(); - this.addWidget(new Button(this.width / 2 - 154, this.height - 28, 150, 20, CommonComponents.GUI_CANCEL, button -> { + this.addRenderableWidget(new Button(this.width / 2 - 154, this.height - 28, 150, 20, CommonComponents.GUI_CANCEL, button -> { loadFromFile(); Objects.requireNonNull(minecraft).setScreen(parent); })); - Button done = this.addWidget(new Button(this.width / 2 + 4, this.height - 28, 150, 20, CommonComponents.GUI_DONE, (button) -> { + Button done = this.addRenderableWidget(new Button(this.width / 2 + 4, this.height - 28, 150, 20, CommonComponents.GUI_DONE, (button) -> { saveToFile(); Objects.requireNonNull(minecraft).setScreen(parent); })); @@ -625,6 +626,8 @@ public abstract class ConfigGui return children; } + // Only for 1.17 and over + // Remove in 1.16 and below // @Override // public List narratables() // { diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/LodServerWorld.java b/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/LodServerWorld.java index 971474caa..3f5d249dc 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/LodServerWorld.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/LodServerWorld.java @@ -258,6 +258,11 @@ public class LodServerWorld implements WorldGenLevel throw new UnsupportedOperationException("Not Implemented"); } + @Nullable + public MinecraftServer getServer() { + return serverWorld.getServer(); + } + @Override public LevelData getLevelData() { diff --git a/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinWorldRenderer.java b/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinWorldRenderer.java index 3c41535a0..edc6cd156 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinWorldRenderer.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinWorldRenderer.java @@ -20,9 +20,9 @@ package com.seibel.lod.fabric.mixins; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Matrix4f; import com.seibel.lod.common.wrappers.McObjectConverter; import net.minecraft.client.renderer.LevelRenderer; +import org.lwjgl.opengl.GL15; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -40,32 +40,38 @@ import net.minecraft.client.renderer.RenderType; * render last event, the LODs would render on top * of the normal terrain. * - * @author coolGi2007 * @author James Seibel - * @version 11-21-2021 + * @version 12-29-2021 */ @Mixin(LevelRenderer.class) public class MixinWorldRenderer { private static float previousPartialTicks = 0; - @Inject(at = @At("RETURN"), method = "renderSky(Lcom/mojang/blaze3d/matrix/MatrixStack;F)V") - private void renderSky(PoseStack modelViewMatrixStack, Matrix4f projectionMatrix, float partialTicks, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, CallbackInfo callback) + @Inject(at = @At("RETURN"), method = "renderSky(Lcom/mojang/blaze3d/vertex/PoseStack;F)V") + private void renderSky(PoseStack matrixStackIn, float partialTicks, CallbackInfo callback) { - // get the partial ticks since renderChunkLayer doesn't + // get the partial ticks since renderBlockLayer doesn't // have access to them previousPartialTicks = partialTicks; } - // HEAD or RETURN - @Inject(at = @At("HEAD"), method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/matrix/MatrixStack;DDD)V") - private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback) + @Inject(at = @At("HEAD"), method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDD)V") + private void renderChunkLayer(RenderType renderType, PoseStack matrixStackIn, double xIn, double yIn, double zIn, CallbackInfo callback) { // only render before solid blocks if (renderType.equals(RenderType.solid())) { - Mat4f mcModelViewMatrix = McObjectConverter.Convert(modelViewMatrixStack.last().pose()); - Mat4f mcProjectionMatrix = McObjectConverter.Convert(projectionMatrix); + // get MC's current projection matrix + float[] mcProjMatrixRaw = new float[16]; + GL15.glGetFloatv(GL15.GL_PROJECTION_MATRIX, mcProjMatrixRaw); + Mat4f mcProjectionMatrix = new Mat4f(mcProjMatrixRaw); + // OpenGl outputs their matrices in col,row form instead of row,col + // (or maybe vice versa I have no idea :P) + mcProjectionMatrix.transpose(); + + + Mat4f mcModelViewMatrix = McObjectConverter.Convert(matrixStackIn.last().pose()); ClientApi.INSTANCE.renderLods(mcModelViewMatrix, mcProjectionMatrix, previousPartialTicks); } diff --git a/forge/src/main/java/com/seibel/lod/forge/mixins/MixinWorldRenderer.java b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinWorldRenderer.java index 665479d3a..fdc530942 100644 --- a/forge/src/main/java/com/seibel/lod/forge/mixins/MixinWorldRenderer.java +++ b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinWorldRenderer.java @@ -19,18 +19,18 @@ package com.seibel.lod.forge.mixins; +import com.mojang.blaze3d.vertex.PoseStack; +import com.seibel.lod.common.wrappers.McObjectConverter; +import net.minecraft.client.renderer.LevelRenderer; +import org.lwjgl.opengl.GL15; 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 com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Matrix4f; import com.seibel.lod.core.api.ClientApi; import com.seibel.lod.core.objects.math.Mat4f; -import com.seibel.lod.common.wrappers.McObjectConverter; -import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.RenderType; /** @@ -41,32 +41,39 @@ import net.minecraft.client.renderer.RenderType; * of the normal terrain. * * @author James Seibel - * @version 9-19-2021 + * @version 12-29-2021 */ @Mixin(LevelRenderer.class) public class MixinWorldRenderer { private static float previousPartialTicks = 0; - @Inject(at = @At("RETURN"), method = "renderSky(Lcom/mojang/blaze3d/matrix/MatrixStack;F)V") - private void renderSky(PoseStack modelViewMatrixStack, Matrix4f projectionMatrix, float partialTicks, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, CallbackInfo callback) + @Inject(at = @At("RETURN"), method = "renderSky(Lcom/mojang/blaze3d/vertex/PoseStack;F)V") + private void renderSky(PoseStack matrixStackIn, float partialTicks, CallbackInfo callback) { - // get the partial ticks since renderChunkLayer doesn't + // get the partial ticks since renderBlockLayer doesn't // have access to them previousPartialTicks = partialTicks; } - // HEAD or RETURN - @Inject(at = @At("HEAD"), method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/matrix/MatrixStack;DDD)V") - private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback) + @Inject(at = @At("HEAD"), method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDD)V") + private void renderChunkLayer(RenderType renderType, PoseStack matrixStackIn, double xIn, double yIn, double zIn, CallbackInfo callback) { // only render before solid blocks if (renderType.equals(RenderType.solid())) { - Mat4f mcModelViewMatrix = McObjectConverter.Convert(modelViewMatrixStack.last().pose()); - Mat4f mcProjectionMatrix = McObjectConverter.Convert(projectionMatrix); + // get MC's current projection matrix + float[] mcProjMatrixRaw = new float[16]; + GL15.glGetFloatv(GL15.GL_PROJECTION_MATRIX, mcProjMatrixRaw); + Mat4f mcProjectionMatrix = new Mat4f(mcProjMatrixRaw); + // OpenGl outputs their matrices in col,row form instead of row,col + // (or maybe vice versa I have no idea :P) + mcProjectionMatrix.transpose(); + + + Mat4f mcModelViewMatrix = McObjectConverter.Convert(matrixStackIn.last().pose()); ClientApi.INSTANCE.renderLods(mcModelViewMatrix, mcProjectionMatrix, previousPartialTicks); } } -} \ No newline at end of file +} diff --git a/gradle.properties b/gradle.properties index b5b8c5fe5..ba625fbba 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,15 +1,14 @@ org.gradle.jvmargs=-Xmx2048M -# TODO: HEY REMEMBER TO UPDATE THE lod.accesswidener WHEN UPDATING TO 1.18 -minecraft_version=1.17.1 +minecraft_version=1.16.5 archives_base_name=DistantHorizons mod_version=1.5.4a maven_group=com.seibel.lod toml_version=3.6.0 -fabric_loader_version=0.11.6 -fabric_api_version=0.37.1+1.17 +fabric_loader_version=0.11.3 +fabric_api_version=0.34.2+1.16 modmenu_version=2.0.14 -forge_version=37.1.0 \ No newline at end of file +forge_version=36.1.0 \ No newline at end of file