diff --git a/Readme.md b/Readme.md index 91c7fc6c4..bbe312b12 100644 --- a/Readme.md +++ b/Readme.md @@ -9,13 +9,13 @@ If you want to see a quick demo, check out a video covering the mod here: ![Minecraft Level Of Detail (LOD) mod - Alpha 1.5](https://i.ytimg.com/vi_webp/H2tnvEVbO1c/mqdefault.webp) -Forge version: 37.1.0\ -Fabric version: 0.11.6\ -Fabric API version: 0.37.1+1.17 +Forge version: 36.1.0\ +Fabric version: 0.11.3\ +Fabric API version: 0.34.2+1.16 Notes:\ This version has been confirmed to work in Eclipse and Retail Minecraft.\ -(Retail running forge version 1.17.1-37.1.0 and fabric version 1.17.1-0.11.6) +(Retail running forge version 1.17.1-36.1.0 and fabric version 1.17.1-0.11.3) ## source code installation @@ -47,7 +47,7 @@ Side note: invalidate caches and restart if required 3. The compiled jar file will be in the folder `fabric/build/libs/` and `forge/build/libs/` **If in terminal:** -1. `git clone -b 1.17.1 --recurse-submodules https://gitlab.com/jeseibel/minecraft-lod-mod.git` +1. `git clone -b 1.16.5_architectury --recurse-submodules https://gitlab.com/jeseibel/minecraft-lod-mod.git` 2. `cd minecraft-lod-mod` 3. `./gradlew assemble` or `./gradlew build` 4. The build should be in `fabric/build/libs/` and `forge/build/libs/` 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 a5633a2fd..decc9a5c0 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 @@ -158,7 +158,8 @@ public class BlockColorWrapper implements IBlockColorWrapper if (grassInstance() || leavesInstance() || waterIstance()) lookForTint = true; - int frameIndex = 0; // TODO + // generate the block's color + for (int frameIndex = 0; frameIndex < texture.getFrameCount(); frameIndex++) { // textures normally use u and v instead of x and y for (int u = 0; u < texture.getWidth(); u++) @@ -167,7 +168,7 @@ public class BlockColorWrapper implements IBlockColorWrapper { tempColor = TextureAtlasSpriteWrapper.getPixelRGBA(texture, frameIndex, u, v); - if (ColorUtil.getAlpha(TextureAtlasSpriteWrapper.getPixelRGBA(texture, frameIndex, u, v)) == 0) + if (texture.isTransparent(frameIndex, u, v)) continue; if (lookForTint) diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/block/TextureAtlasSpriteWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/block/TextureAtlasSpriteWrapper.java index 41bcba5f5..3a8bf87f7 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/block/TextureAtlasSpriteWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/block/TextureAtlasSpriteWrapper.java @@ -19,10 +19,12 @@ public class TextureAtlasSpriteWrapper { */ public static int getPixelRGBA(TextureAtlasSprite sprite, int frameIndex, int x, int y) { if (sprite.animatedTexture != null) { - x += sprite.animatedTexture.getFrameX(frameIndex) * sprite.width; - y += sprite.animatedTexture.getFrameY(frameIndex) * sprite.height; + x += sprite.animatedTexture.getFrameX(frameIndex) * sprite.getWidth(); + y += sprite.animatedTexture.getFrameY(frameIndex) * sprite.getHeight(); } return sprite.mainImage[0].getPixelRGBA(x, y); + +// return this.mainImage[0].getPixelRGBA(x + this.framesX[frameIndex] * sprite.getWidth(), y + this.framesY[frameIndex] * sprite.getHeight()); } } diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/chunk/ChunkPosWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/chunk/ChunkPosWrapper.java index d4fcd8d80..b1576c878 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/chunk/ChunkPosWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/chunk/ChunkPosWrapper.java @@ -109,7 +109,7 @@ public class ChunkPosWrapper extends AbstractChunkPosWrapper public AbstractBlockPosWrapper getWorldPosition() { // the parameter here is the y position - BlockPos blockPos = chunkPos.getMiddleBlockPosition(0); + BlockPos blockPos = chunkPos.getWorldPosition(); return new BlockPosWrapper(blockPos.getX(), blockPos.getY(), blockPos.getZ()); } 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 74a2d64cb..488f20252 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 @@ -15,6 +15,7 @@ import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.Predicate; import java.util.regex.Pattern; +import java.util.stream.Collectors; // Logger (for debug stuff) import org.apache.logging.log4j.LogManager; @@ -41,7 +42,6 @@ import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.ContainerObjectSelectionList; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.components.events.GuiEventListener; -import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; @@ -248,7 +248,7 @@ public abstract class ConfigGui info.name = new TranslatableComponent(screenEntry.name()); info.screenButton = true; - info.gotoScreen = (!info.category.isBlank() ? info.category + "." : "") + field.getName(); + info.gotoScreen = (!info.category.isEmpty() ? info.category + "." : "") + field.getName(); } entries.add(info); } @@ -263,13 +263,13 @@ public abstract class ConfigGui info.widget = (BiFunction>) (editBox, button) -> stringValue -> { stringValue = stringValue.trim(); - if (!(stringValue.isBlank() || !isNumber || pattern.matcher(stringValue).matches())) + if (!(stringValue.isEmpty() || !isNumber || pattern.matcher(stringValue).matches())) return false; Number value = 0; boolean inLimits = false; info.error = null; - if (isNumber && !stringValue.isBlank() && !stringValue.equals("-") && !stringValue.equals(".")) + if (isNumber && !stringValue.isEmpty() && !stringValue.equals("-") && !stringValue.equals(".")) { value = func.apply(stringValue); inLimits = value.doubleValue() >= minValue && value.doubleValue() <= maxValue; @@ -292,7 +292,7 @@ public abstract class ConfigGui { if (((List) info.value).size() == info.index) ((List) info.value).add(""); - ((List) info.value).set(info.index, Arrays.stream(info.tempValue.replace("[", "").replace("]", "").split(", ")).toList().get(0)); + ((List) info.value).set(info.index, Arrays.stream(info.tempValue.replace("[", "").replace("]", "").split(", ")).collect(Collectors.toList()).get(0)); } return true; @@ -326,7 +326,7 @@ public abstract class ConfigGui for (EntryInfo info : entries) { if (info.field.isAnnotationPresent(ConfigAnnotations.Entry.class)) { - config.set((info.category.isBlank() ? "" : info.category + ".") + info.field.getName(), info.value); + config.set((info.category.isEmpty() ? "" : info.category + ".") + info.field.getName(), info.value); } } @@ -383,9 +383,9 @@ public abstract class ConfigGui protected ConfigScreen(Screen parent, String category) { super(new TranslatableComponent( - I18n.exists(MOD_NAME + ".config" + (category.isBlank()? "." + category : "") + ".title") ? + I18n.exists(MOD_NAME + ".config" + (category.isEmpty()? "." + category : "") + ".title") ? MOD_NAME + ".config.title" : - MOD_NAME + ".config" + (category.isBlank() ? "" : "." + category) + ".title") + MOD_NAME + ".config" + (category.isEmpty() ? "" : "." + category) + ".title") ); this.parent = parent; this.category = category; @@ -412,12 +412,12 @@ public abstract class ConfigGui if (!reload) loadFromFile(); - this.addRenderableWidget(new Button(this.width / 2 - 154, this.height - 28, 150, 20, CommonComponents.GUI_CANCEL, button -> { + this.addWidget(new Button(this.width / 2 - 154, this.height - 28, 150, 20, CommonComponents.GUI_CANCEL, button -> { loadFromFile(); Objects.requireNonNull(minecraft).setScreen(parent); })); - Button done = this.addRenderableWidget(new Button(this.width / 2 + 4, this.height - 28, 150, 20, CommonComponents.GUI_DONE, (button) -> { + Button done = this.addWidget(new Button(this.width / 2 + 4, this.height - 28, 150, 20, CommonComponents.GUI_DONE, (button) -> { saveToFile(); Objects.requireNonNull(minecraft).setScreen(parent); })); @@ -430,7 +430,7 @@ public abstract class ConfigGui { if (info.category.matches(category) && !info.hideOption) { - TranslatableComponent name = Objects.requireNonNullElseGet(info.name, () -> new TranslatableComponent(translationPrefix + (!info.category.isBlank() ? info.category + "." : "") + info.field.getName())); + TranslatableComponent name = (info.name == null ? new TranslatableComponent(translationPrefix + (!info.category.isEmpty() ? info.category + "." : "") + info.field.getName()) : info.name); Button resetButton = new Button(this.width - ConfigScreenConfigs.SpaceFromRightScreen - info.width - ConfigScreenConfigs.ButtonWidthSpacing - ConfigScreenConfigs.ResetButtonWidth, 0, ConfigScreenConfigs.ResetButtonWidth, 20, new TextComponent("Reset").withStyle(ChatFormatting.RED), (button -> { info.value = info.defaultValue; info.tempValue = info.defaultValue.toString(); @@ -508,8 +508,8 @@ public abstract class ConfigGui if (list.getHoveredButton(mouseX,mouseY).isPresent()) { AbstractWidget buttonWidget = list.getHoveredButton(mouseX,mouseY).get(); Component text = ButtonEntry.buttonsWithText.get(buttonWidget); - TranslatableComponent name = new TranslatableComponent(this.translationPrefix + (info.category.isBlank() ? "" : info.category + ".") + info.field.getName()); - String key = translationPrefix + (info.category.isBlank() ? "" : info.category + ".") + info.field.getName() + ".@tooltip"; + TranslatableComponent name = new TranslatableComponent(this.translationPrefix + (info.category.isEmpty() ? "" : info.category + ".") + info.field.getName()); + String key = translationPrefix + (info.category.isEmpty() ? "" : info.category + ".") + info.field.getName() + ".@tooltip"; if (info.error != null && text.equals(name)) renderTooltip(matrices, (Component) info.error.getValue(), mouseX, mouseY); else if (I18n.exists(key) && text.equals(name)) { @@ -625,10 +625,10 @@ public abstract class ConfigGui return children; } - @Override - public List narratables() - { - return children; - } +// @Override +// public List narratables() +// { +// return children; +// } } } diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/config/TexturedButtonWidget.java b/common/src/main/java/com/seibel/lod/common/wrappers/config/TexturedButtonWidget.java index 9701d9e82..a89d21bec 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/config/TexturedButtonWidget.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/config/TexturedButtonWidget.java @@ -11,9 +11,9 @@ import net.minecraft.resources.ResourceLocation; * Creates a button with a texture on it */ public class TexturedButtonWidget extends ImageButton { - public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, ResourceLocation texture, OnPress pressAction) { - super(x, y, width, height, u, v, texture, pressAction); - } +// public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, ResourceLocation texture, OnPress pressAction) { +// super(x, y, width, height, u, v, texture, pressAction); +// } public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, int hoveredVOffset, ResourceLocation texture, int textureWidth, int textureHeight, OnPress pressAction) { super(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction); } diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java index dc915bef5..f1735ee75 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java @@ -5,12 +5,14 @@ import java.util.HashSet; import com.mojang.blaze3d.platform.NativeImage; import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.math.Vector3d; import com.seibel.lod.common.wrappers.WrapperFactory; import com.seibel.lod.common.wrappers.misc.LightMapWrapper; import com.seibel.lod.core.handlers.IReflectionHandler; import com.seibel.lod.core.handlers.ReflectionHandler; import com.seibel.lod.core.util.LodUtil; import net.minecraft.client.renderer.LightTexture; +import org.lwjgl.opengl.GL15; import org.lwjgl.opengl.GL20; import com.mojang.math.Vector3f; @@ -85,7 +87,7 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper @Override public Mat4f getDefaultProjectionMatrix(float partialTicks) { - return McObjectConverter.Convert(GAME_RENDERER.getProjectionMatrix(GAME_RENDERER.getFov(GAME_RENDERER.getMainCamera(), partialTicks, true))); + return McObjectConverter.Convert(GAME_RENDERER.getProjectionMatrix(GAME_RENDERER.getMainCamera(), partialTicks, true)); } @Override @@ -96,14 +98,15 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper @Override public Color getFogColor() { - float[] colorValues = RenderSystem.getShaderFogColor(); + float[] colorValues = new float[4]; + GL15.glGetFloatv(GL15.GL_FOG_COLOR, colorValues); return new Color(colorValues[0], colorValues[1], colorValues[2], colorValues[3]); } @Override public Color getSkyColor() { if (MC.level.dimensionType().hasSkyLight()) { - Vec3 colorValues = MC.level.getSkyColor(MC.gameRenderer.getMainCamera().getPosition(), MC.getFrameTime()); + Vec3 colorValues = MC.level.getSkyColor(MC.gameRenderer.getMainCamera().getBlockPosition(), MC.getFrameTime()); return new Color((float) colorValues.x, (float) colorValues.y, (float) colorValues.z); } else return new Color(0, 0, 0); @@ -149,18 +152,19 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper // Wow, those are some long names! // go through every RenderInfo to get the compiled chunks - LevelRenderer renderer = MC.levelRenderer; - for (LevelRenderer.RenderChunkInfo worldRenderer$LocalRenderInformationContainer : renderer.renderChunks) - { - CompiledChunk compiledChunk = worldRenderer$LocalRenderInformationContainer.chunk.getCompiledChunk(); - if (!compiledChunk.hasNoRenderableLayers()) - { - // add the ChunkPos for every rendered chunk - BlockPos bpos = worldRenderer$LocalRenderInformationContainer.chunk.getOrigin(); - - loadedPos.add(new ChunkPosWrapper(bpos)); - } - } + // FIXME[1.16.5]: pls fix +// LevelRenderer renderer = MC.levelRenderer; +// for (LevelRenderer.RenderChunkInfo worldRenderer$LocalRenderInformationContainer : renderer.renderChunks) +// { +// CompiledChunk compiledChunk = worldRenderer$LocalRenderInformationContainer.chunk.getCompiledChunk(); +// if (!compiledChunk.hasNoRenderableLayers()) +// { +// // add the ChunkPos for every rendered chunk +// BlockPos bpos = worldRenderer$LocalRenderInformationContainer.chunk.getOrigin(); +// +// loadedPos.add(new ChunkPosWrapper(bpos)); +// } +// } return loadedPos; diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftWrapper.java index 35d48b691..c0624a08e 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftWrapper.java @@ -238,8 +238,7 @@ public class MinecraftWrapper implements IMinecraftWrapper @Override public ChunkPosWrapper getPlayerChunkPos() { - ChunkPos playerPos = getPlayer().chunkPosition(); - return new ChunkPosWrapper(playerPos.x, playerPos.z); + return new ChunkPosWrapper(getPlayer().xChunk, getPlayer().zChunk); } public Options getOptions() diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/world/WorldWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/world/WorldWrapper.java index 49eb24800..bd1fd38af 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/world/WorldWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/world/WorldWrapper.java @@ -137,11 +137,6 @@ public class WorldWrapper implements IWorldWrapper return world.getHeight(); } - @Override - public short getMinHeight() { - return (short) world.getMinBuildHeight(); - } - /** @throws UnsupportedOperationException if the WorldWrapper isn't for a ServerWorld */ @Override public File getSaveFolder() throws UnsupportedOperationException 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 4bb09f586..971474caa 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 @@ -52,8 +52,6 @@ import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkSource; import net.minecraft.world.level.chunk.ChunkStatus; import net.minecraft.world.level.dimension.DimensionType; -import net.minecraft.world.level.entity.EntityTypeTest; -import net.minecraft.world.level.gameevent.GameEvent; import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.level.levelgen.feature.StructureFeature; import net.minecraft.world.level.levelgen.structure.StructureStart; @@ -134,11 +132,6 @@ public class LodServerWorld implements WorldGenLevel return state.test(chunk.getBlockState(pos)); } - @Override - public boolean isFluidAtPosition(BlockPos blockPos, Predicate predicate) { - return predicate.test(chunk.getFluidState(blockPos)); - } - @Override public TickList getBlockTicks() { @@ -265,13 +258,6 @@ public class LodServerWorld implements WorldGenLevel throw new UnsupportedOperationException("Not Implemented"); } - @Nullable - @Override - public MinecraftServer getServer() { - return serverWorld.getServer(); - } - - @Override public LevelData getLevelData() { @@ -286,13 +272,6 @@ public class LodServerWorld implements WorldGenLevel } - // TODO: Check if this causes any issues - @Override - public void gameEvent(@Nullable Entity entity, GameEvent gameEvent, BlockPos blockPos) { - throw new UnsupportedOperationException("Not Implemented"); - } - - @Override public List getEntities(Entity arg0, AABB arg1, Predicate arg2) { @@ -300,19 +279,10 @@ public class LodServerWorld implements WorldGenLevel } @Override - public List getEntities(EntityTypeTest entityTypeTest, AABB aABB, Predicate predicate) { + public List getEntitiesOfClass(Class class_, AABB aABB, @Nullable Predicate predicate) { throw new UnsupportedOperationException("Not Implemented"); } - - @Override - public List getEntitiesOfClass(Class arg0, AABB arg1, - Predicate arg2) - { - throw new UnsupportedOperationException("Not Implemented"); - } - - @Override public List players() { diff --git a/common/src/main/resources/lod.accesswidener b/common/src/main/resources/lod.accesswidener index 5b3d8bffd..ff08b3522 100644 --- a/common/src/main/resources/lod.accesswidener +++ b/common/src/main/resources/lod.accesswidener @@ -33,4 +33,4 @@ extendable class com/mojang/math/Matrix4f # hacky stuff accessible field net/minecraft/world/level/chunk/PalettedContainer lock Ljava/util/concurrent/Semaphore; -mutable field net/minecraft/world/level/chunk/PalettedContainer lock Ljava/util/concurrent/Semaphore; +accessible field net/minecraft/world/level/chunk/PalettedContainer lock Ljava/util/concurrent/Semaphore; diff --git a/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinOptionsScreen.java b/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinOptionsScreen.java index 46feb066a..ffb9e0848 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinOptionsScreen.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinOptionsScreen.java @@ -33,7 +33,7 @@ public class MixinOptionsScreen extends Screen { @Inject(at = @At("HEAD"),method = "init") private void lodconfig$init(CallbackInfo ci) { if (Config.ShowButton) - this.addRenderableWidget(new TexturedButtonWidget( + this.addWidget(new TexturedButtonWidget( // Where the button is on the screen this.width / 2 - 180, this.height / 6 - 12, // Width and height of the button 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 b19643642..3c41535a0 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 @@ -49,8 +49,8 @@ public class MixinWorldRenderer { private static float previousPartialTicks = 0; - @Inject(at = @At("RETURN"), method = "renderClouds(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/math/Matrix4f;FDDD)V") - private void renderClouds(PoseStack modelViewMatrixStack, Matrix4f projectionMatrix, float partialTicks, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, CallbackInfo callback) + @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) { // get the partial ticks since renderChunkLayer doesn't // have access to them @@ -58,7 +58,7 @@ public class MixinWorldRenderer } // HEAD or RETURN - @Inject(at = @At("HEAD"), method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLcom/mojang/math/Matrix4f;)V") + @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) { // only render before solid blocks diff --git a/fabric/src/main/java/com/seibel/lod/fabric/mixins/unsafe/MixinPalettedContainer.java b/fabric/src/main/java/com/seibel/lod/fabric/mixins/unsafe/MixinPalettedContainer.java index d1a513bcc..85acf7ef0 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/mixins/unsafe/MixinPalettedContainer.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/mixins/unsafe/MixinPalettedContainer.java @@ -1,7 +1,6 @@ package com.seibel.lod.fabric.mixins.unsafe; import com.mojang.datafixers.util.Pair; -import net.minecraft.util.DebugBuffer; import net.minecraft.world.level.chunk.PalettedContainer; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Final; diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index ba9db7151..273b6a132 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -38,10 +38,10 @@ "accessWidener" : "lod.accesswidener", "depends": { - "fabricloader": ">=0.11.3", + "fabricloader": "*", "fabric": "*", - "minecraft": "1.17.x", - "java": ">=16" + "minecraft": "1.16.5", + "java": ">=8" }, "suggests": { "another-mod": "*" diff --git a/fabric/src/main/resources/lod.mixins.json b/fabric/src/main/resources/lod.mixins.json index e9b520242..b630f401f 100644 --- a/fabric/src/main/resources/lod.mixins.json +++ b/fabric/src/main/resources/lod.mixins.json @@ -2,7 +2,7 @@ "required": true, "minVersion": "0.8", "package": "com.seibel.lod.fabric.mixins", - "compatibilityLevel": "JAVA_16", + "compatibilityLevel": "JAVA_8", "mixins": [ "events.MixinServerLevel", "unsafe.MixinPalettedContainer" diff --git a/forge/src/main/java/com/seibel/lod/forge/ForgeMain.java b/forge/src/main/java/com/seibel/lod/forge/ForgeMain.java index dc367dfee..8979735fc 100644 --- a/forge/src/main/java/com/seibel/lod/forge/ForgeMain.java +++ b/forge/src/main/java/com/seibel/lod/forge/ForgeMain.java @@ -34,16 +34,17 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.client.model.data.ModelDataMap; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.ExtensionPoint; import net.minecraftforge.fml.ModLoadingContext; +import net.minecraftforge.fml.client.ConfigGuiHandler; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.event.server.FMLServerStartingEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.loading.FMLEnvironment; import net.minecraftforge.fml.loading.FMLLoader; -import net.minecraftforge.fmlclient.ConfigGuiHandler; -import net.minecraftforge.fmlserverevents.FMLServerStartedEvent; import java.util.List; import java.util.Random; @@ -82,8 +83,8 @@ public class ForgeMain implements LodForgeMethodCaller private void onClientStart(final FMLClientSetupEvent event) { - ModLoadingContext.get().registerExtensionPoint(ConfigGuiHandler.ConfigGuiFactory.class, - () -> new ConfigGuiHandler.ConfigGuiFactory((client, parent) -> Config.getScreen(parent, ""))); + ModLoadingContext.get().registerExtensionPoint(ExtensionPoint.CONFIGGUIFACTORY, + () -> (client, parent) -> Config.getScreen(parent, "")); forgeClientProxy = new ForgeClientProxy(); MinecraftForge.EVENT_BUS.register(forgeClientProxy); } @@ -91,7 +92,7 @@ public class ForgeMain implements LodForgeMethodCaller @SubscribeEvent - public void onServerStarting(FMLServerStartedEvent event) + public void onServerStarting(FMLServerStartingEvent event) { // this is called when the server starts } diff --git a/forge/src/main/java/com/seibel/lod/forge/mixins/MixinOptionsScreen.java b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinOptionsScreen.java index 8c50cef77..ca1a68ab8 100644 --- a/forge/src/main/java/com/seibel/lod/forge/mixins/MixinOptionsScreen.java +++ b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinOptionsScreen.java @@ -32,7 +32,7 @@ public class MixinOptionsScreen extends Screen { @Inject(at = @At("HEAD"),method = "init") private void lodconfig$init(CallbackInfo ci) { if (Config.ShowButton) - this.addRenderableWidget(new TexturedButtonWidget( + this.addWidget(new TexturedButtonWidget( // Where the button is on the screen this.width / 2 - 180, this.height / 6 - 12, // Width and height of the button 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 bccfa4ea5..665479d3a 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 @@ -48,8 +48,8 @@ public class MixinWorldRenderer { private static float previousPartialTicks = 0; - @Inject(at = @At("RETURN"), method = "renderClouds(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/math/Matrix4f;FDDD)V") - private void renderClouds(PoseStack modelViewMatrixStack, Matrix4f projectionMatrix, float partialTicks, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, CallbackInfo callback) + @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) { // get the partial ticks since renderChunkLayer doesn't // have access to them @@ -57,7 +57,7 @@ public class MixinWorldRenderer } // HEAD or RETURN - @Inject(at = @At("HEAD"), method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLcom/mojang/math/Matrix4f;)V") + @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) { // only render before solid blocks diff --git a/forge/src/main/resources/lod.mixins.json b/forge/src/main/resources/lod.mixins.json index 020918b9d..58ebd19e7 100644 --- a/forge/src/main/resources/lod.mixins.json +++ b/forge/src/main/resources/lod.mixins.json @@ -1,7 +1,7 @@ { "required": true, "package": "com.seibel.lod.forge.mixins", - "compatibilityLevel": "JAVA_16", + "compatibilityLevel": "JAVA_8", "refmap": "lod.refmap.json", "client": [ "MixinWorldRenderer", diff --git a/forge/src/main/resources/pack.mcmeta b/forge/src/main/resources/pack.mcmeta index 70b6321cb..4fa382386 100644 --- a/forge/src/main/resources/pack.mcmeta +++ b/forge/src/main/resources/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { "description": "", - "pack_format": 7 + "pack_format": 6 } }