From eba2036718287a4ad7c19f150e63a72e7b8f6cf9 Mon Sep 17 00:00:00 2001 From: coolGi Date: Sun, 25 Jun 2023 00:01:37 +0000 Subject: [PATCH 01/28] Added clean to the ci --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 814c07ab5..96ad2710e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,6 +19,7 @@ build_1_18_2: stage: build_1_18_2 script: # this both runs the unit tests and assembles the code + - ./gradlew clean -PmcVer="1.18.2" --gradle-user-home cache/; - ./gradlew build -PmcVer="1.18.2" --gradle-user-home cache/; - ./gradlew mergeJars -PmcVer="1.18.2" --gradle-user-home cache/; image: eclipse-temurin:17 @@ -53,6 +54,7 @@ build_1_19_4: stage: build_1_19_4 script: # this both runs the unit tests and assembles the code + - ./gradlew clean -PmcVer="1.19.4" --gradle-user-home cache/; - ./gradlew build -PmcVer="1.19.4" --gradle-user-home cache/; - ./gradlew mergeJars -PmcVer="1.19.4" --gradle-user-home cache/; image: eclipse-temurin:17 From 01f767486d3596f7f95145f2578baceceadedacf Mon Sep 17 00:00:00 2001 From: TomTheFurry Date: Sun, 25 Jun 2023 14:56:50 +0800 Subject: [PATCH 02/28] Add in 1.20.1 builds! But, sky light for world gen isn't working...? --- .gitlab-ci.yml | 34 ++++ .../common/wrappers/WrapperFactory.java | 4 +- .../wrappers/block/BlockStateWrapper.java | 19 ++- .../common/wrappers/chunk/ChunkWrapper.java | 28 +++- .../common/wrappers/gui/ClassicConfigGUI.java | 46 +++--- .../common/wrappers/gui/DhScreen.java | 48 +++++- .../common/wrappers/gui/MinecraftScreen.java | 12 +- .../wrappers/gui/updater/ChangelogScreen.java | 20 ++- .../wrappers/gui/updater/UpdateModScreen.java | 14 +- .../BatchGenerationEnvironment.java | 2 + .../mimicObject/LightGetterAdaptor.java | 5 +- .../mimicObject/WorldGenLevelLightEngine.java | 147 +++++++++++++----- .../worldGeneration/step/StepFeatures.java | 4 +- .../worldGeneration/step/StepLight.java | 10 +- .../1_20.distanthorizons.accesswidener | 34 +--- .../mixins/client/MixinClientLevel.java | 5 +- .../client/MixinClientPacketListener.java | 12 ++ .../mixins/client/MixinLevelRenderer.java | 10 +- .../forge/mixins/client/MixinTextureUtil.java | 2 + gradle.properties | 2 +- 20 files changed, 347 insertions(+), 111 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 96ad2710e..52145f21a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,6 +8,7 @@ stages: # TODO: Make stages depending on what is in versionProperties - build_1_18_2 - build_1_19_4 + - build_1_20_1 variables: # Pull core when building @@ -84,6 +85,39 @@ build_1_19_4: allow_failure: true +# 1.20.1 build +build_1.20.1: + stage: build_1.20.1 + script: + # this both runs the unit tests and assembles the code + - ./gradlew clean -PmcVer="1.20.1" --gradle-user-home cache/; + - ./gradlew build -PmcVer="1.20.1" --gradle-user-home cache/; + - ./gradlew mergeJars -PmcVer="1.20.1" --gradle-user-home cache/; + image: eclipse-temurin:17 + artifacts: + name: "NightlyBuild_1.20.1-${CI_COMMIT_SHORT_SHA}-${CI_COMMIT_TIMESTAMP}" + paths: + - Merged/*.jar + - fabric/build/libs/*.jar + - forge/build/libs/*.jar + - quilt/build/libs/*.jar + exclude: + # TODO: There is a lot of duplicate stuff here, fix it later to be smaller + - fabric/build/libs/*-all.jar + - fabric/build/libs/*-sources.jar + - forge/build/libs/*-all.jar + - forge/build/libs/*-sources.jar + - quilt/build/libs/*-all.jar + - quilt/build/libs/*-sources.jar + expire_in: 1 day + when: always + cache: + key: "gradleCache" + policy: pull-push + paths: + - .gradle + - cache/ + allow_failure: true diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/WrapperFactory.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/WrapperFactory.java index 914ffc9c1..ea931d8bf 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/WrapperFactory.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/WrapperFactory.java @@ -95,7 +95,7 @@ public class WrapperFactory implements IWrapperFactory } // MC 1.18 - #if POST_MC_1_17_1 && PRE_MC_1_20_1 + #if POST_MC_1_17_1 else if (objectArray.length == 2) { // correct number of parameters from the API @@ -138,7 +138,7 @@ public class WrapperFactory implements IWrapperFactory "Expected parameters: \n"); // MC 1.18 - #if POST_MC_1_17_1 && PRE_MC_1_20_1 + #if POST_MC_1_17_1 message.append("["+ChunkAccess.class.getName()+"], \n"); message.append("["+LevelReader.class.getName()+"]. \n"); #else diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BlockStateWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BlockStateWrapper.java index ca63130ff..b890762f7 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BlockStateWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BlockStateWrapper.java @@ -4,6 +4,9 @@ import com.google.gson.JsonParser; import com.mojang.serialization.JsonOps; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.wrapperInterfaces.block.IBlockStateWrapper; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.EmptyBlockGetter; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import org.apache.logging.log4j.Logger; @@ -81,10 +84,22 @@ public class BlockStateWrapper implements IBlockStateWrapper public boolean isAir(BlockState blockState) { return blockState == null || blockState.isAir(); } @Override - public boolean isSolid() { return this.blockState.getMaterial().isSolid(); } + public boolean isSolid() { + #if PRE_MC_1_20_1 + return this.blockState.getMaterial().isSolid(); + #else + return !this.blockState.getCollisionShape(EmptyBlockGetter.INSTANCE, BlockPos.ZERO).isEmpty(); + #endif + } @Override - public boolean isLiquid() { return this.blockState.getMaterial().isLiquid(); } + public boolean isLiquid() { + #if PRE_MC_1_20_1 + return this.blockState.getMaterial().isLiquid(); + #else + return !this.blockState.getFluidState().isEmpty(); + #endif + } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/chunk/ChunkWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/chunk/ChunkWrapper.java index 78c4520b4..3d2778a20 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/chunk/ChunkWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/chunk/ChunkWrapper.java @@ -39,15 +39,22 @@ import net.minecraft.core.BlockPos; #if POST_MC_1_17_1 import net.minecraft.core.QuartPos; #endif +import net.minecraft.core.SectionPos; +import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.LightLayer; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkStatus; import net.minecraft.world.level.chunk.LevelChunk; +import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.levelgen.Heightmap; // Which nullable should be used??? +import net.minecraft.world.level.lighting.LevelLightEngine; +#if POST_MC_1_20_1 +import net.minecraft.world.level.lighting.LightEngine; +#endif import org.jetbrains.annotations.Nullable; import java.util.HashMap; @@ -357,13 +364,32 @@ public class ChunkWrapper implements IChunkWrapper @Override public boolean isStillValid() { return this.wrappedLevel == null || this.wrappedLevel.tryGetChunk(this.chunkPos) == this; } + #if POST_MC_1_20_1 + private static boolean checkLightSectionsOnChunk(LevelChunk chunk, LevelLightEngine engine) { + LevelChunkSection[] sections = chunk.getSections(); + int minY = chunk.getMinSection(); + int maxY = chunk.getMaxSection(); + for (int y = minY; y < maxY; ++y) { + LevelChunkSection section = sections[chunk.getSectionIndexFromSectionY(y)]; + if (section.hasOnlyAir()) continue; + if (!engine.lightOnInSection(SectionPos.of(chunk.getPos(), y))) { + return false; + } + } + return true; + } + #endif + // Should be called after client light updates are triggered. private static boolean updateClientLightReady(ChunkAccess chunk, boolean oldValue) { if (chunk instanceof LevelChunk && ((LevelChunk)chunk).getLevel() instanceof ClientLevel) { LevelChunk levelChunk = (LevelChunk)chunk; ClientChunkCache clientChunkCache = ((ClientLevel)levelChunk.getLevel()).getChunkSource(); - return clientChunkCache.getChunkForLighting(chunk.getPos().x, chunk.getPos().z) != null && levelChunk.isClientLightReady(); + return clientChunkCache.getChunkForLighting(chunk.getPos().x, chunk.getPos().z) != null && + #if PRE_MC_1_20_1 levelChunk.isClientLightReady() + #else checkLightSectionsOnChunk(levelChunk, levelChunk.getLevel().getLightEngine()) + #endif; } else { diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/ClassicConfigGUI.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/ClassicConfigGUI.java index 7bbaa25b3..965042b16 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/ClassicConfigGUI.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/ClassicConfigGUI.java @@ -36,7 +36,11 @@ import com.seibel.distanthorizons.coreapi.ModInfo; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; +#if PRE_MC_1_20_1 import net.minecraft.client.gui.GuiComponent; +#else +import net.minecraft.client.gui.GuiGraphics; +#endif import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.ContainerObjectSelectionList; @@ -165,7 +169,7 @@ public class ClassicConfigGUI /** * Pain */ - private static class ConfigScreen extends Screen { + private static class ConfigScreen extends DhScreen { protected ConfigScreen(ConfigBase configBase, Screen parent, String category) { super(Translatable( I18n.exists(configBase.modID + ".config" + (category.isEmpty() ? "." + category : "") + ".title") ? @@ -203,17 +207,6 @@ public class ClassicConfigGUI Objects.requireNonNull(minecraft).setScreen(this.parent); } - // addRenderableWidget in 1.17 and over - // addButton in 1.16 and below - private Button addBtn(Button button) { - #if PRE_MC_1_17_1 - this.addButton(button); - #else - this.addRenderableWidget(button); - #endif - return button; - } - @Override protected void init() { super.init(); @@ -314,14 +307,20 @@ public class ClassicConfigGUI } @Override - public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { + #if PRE_MC_1_20_1 + public void render(PoseStack matrices, int mouseX, int mouseY, float delta) + #else + public void render(GuiGraphics matrices, int mouseX, int mouseY, float delta) + #endif + { this.renderBackground(matrices); // Renders background this.list.render(matrices, mouseX, mouseY, delta); // Render buttons - drawCenteredString(matrices, font, title, width / 2, 15, 0xFFFFFF); // Render title + + DhDrawCenteredString(matrices, font, title, width / 2, 15, 0xFFFFFF); // Render title // If the update is pending, display this message to inform the user that it will apply when the game restarts if (SelfUpdater.deleteOldOnClose) - drawString(matrices, font, Translatable(configBase.modID + ".updater.waitingForClose"), 4, height-38, 0xFFFFFF); + DhDrawString(matrices, font, Translatable(configBase.modID + ".updater.waitingForClose"), 4, height-38, 0xFFFFFF); // Render the tooltip only if it can find a tooltip in the language file @@ -339,13 +338,13 @@ public class ClassicConfigGUI String key = translationPrefix + (newInfo.category.isEmpty() ? "" : newInfo.category + ".") + newInfo.getName() + ".@tooltip"; if (((EntryInfo) newInfo.guiValue).error != null && text.equals(name)) - renderTooltip(matrices, (Component) ((EntryInfo) newInfo.guiValue).error.getValue(), mouseX, mouseY); + DhRenderTooltip(matrices, font, ((EntryInfo) newInfo.guiValue).error.getValue(), mouseX, mouseY); else if (I18n.exists(key) && (text != null && text.equals(name))) { List list = new ArrayList<>(); for (String str : I18n.get(key).split("\n")) { list.add(TextOrTranslatable(str)); } - renderComponentTooltip(matrices, list, mouseX, mouseY); + DhRenderComponentTooltip(matrices, font, list, mouseX, mouseY); } } } @@ -485,7 +484,12 @@ public class ClassicConfigGUI } @Override - public void render(PoseStack matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { + #if PRE_MC_1_20_1 + public void render(PoseStack matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) + #else + public void render(GuiGraphics matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) + #endif + { if (button != null) { SetY(button, y); button.render(matrices, mouseX, mouseY, tickDelta); @@ -499,7 +503,11 @@ public class ClassicConfigGUI indexButton.render(matrices, mouseX, mouseY, tickDelta); } if (text != null && (!text.getString().contains("spacer") || button != null)) - GuiComponent.drawString(matrices, textRenderer, text, 12, y + 5, 0xFFFFFF); + #if PRE_MC_1_20_1 + GuiComponent.drawString(matrices, textRenderer, text, 12, y + 5, 0xFFFFFF); + #else + matrices.drawString(textRenderer, text, 12, y + 5, 0xFFFFFF); + #endif } @Override diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/DhScreen.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/DhScreen.java index 83c7e18b2..8d120725c 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/DhScreen.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/DhScreen.java @@ -1,9 +1,17 @@ package com.seibel.distanthorizons.common.wrappers.gui; +import net.minecraft.client.gui.Font; +#if PRE_MC_1_20_1 +import com.mojang.blaze3d.vertex.PoseStack; +#else +import net.minecraft.client.gui.GuiGraphics; +#endif import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; +import java.util.List; + public class DhScreen extends Screen { protected DhScreen(Component $$0) { @@ -12,11 +20,45 @@ public class DhScreen extends Screen { // addRenderableWidget in 1.17 and over // addButton in 1.16 and below - protected void addBtn(Button button) { + protected Button addBtn(Button button) { #if PRE_MC_1_17_1 - this.addButton(button); + return this.addButton(button); #else - this.addRenderableWidget(button); + return this.addRenderableWidget(button); #endif } + + #if PRE_MC_1_20_1 + protected void DhDrawCenteredString(PoseStack guiStack, Font font, Component text, int x, int y, int color) { + drawCenteredString(guiStack, font, text, x, y, color); + } + protected void DhDrawString(PoseStack guiStack, Font font, Component text, int x, int y, int color) { + drawString(guiStack, font, text, x, y, color); + } + protected void DhRenderTooltip(PoseStack guiStack, Font font, List text, int x, int y) { + renderTooltip(guiStack, text, x, y); + } + protected void DhRenderComponentTooltip(PoseStack guiStack, Font font, List comp, int x, int y) { + renderComponentTooltip(guiStack, comp, x, y); + } + protected void DhRenderTooltip(PoseStack guiStack, Font font, Component comp, int x, int y) { + renderTooltip(guiStack, comp, x, y); + } + #else + protected void DhDrawCenteredString(GuiGraphics guiStack, Font font, Component text, int x, int y, int color) { + guiStack.drawCenteredString(font, text, x, y, color); + } + protected void DhDrawString(GuiGraphics guiStack, Font font, Component text, int x, int y, int color) { + guiStack.drawString(font, text, x, y, color); + } + protected void DhRenderTooltip(GuiGraphics guiStack, Font font, List text, int x, int y) { + guiStack.renderTooltip(font, text, x, y); + } + protected void DhRenderComponentTooltip(GuiGraphics guiStack, Font font, List comp, int x, int y) { + guiStack.renderComponentTooltip(font, comp, x, y); + } + protected void DhRenderTooltip(GuiGraphics guiStack, Font font, Component text, int x, int y) { + guiStack.renderTooltip(font, text, x, y); + } + #endif } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/MinecraftScreen.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/MinecraftScreen.java index 9210af4a8..15da5d970 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/MinecraftScreen.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/MinecraftScreen.java @@ -4,6 +4,9 @@ import com.mojang.blaze3d.platform.Window; import com.mojang.blaze3d.vertex.PoseStack; import com.seibel.distanthorizons.core.config.gui.AbstractScreen; import net.minecraft.client.Minecraft; +#if POST_MC_1_20_1 +import net.minecraft.client.gui.GuiGraphics; +#endif import net.minecraft.client.gui.components.ContainerObjectSelectionList; import net.minecraft.client.gui.screens.Screen; import org.jetbrains.annotations.NotNull; @@ -16,7 +19,7 @@ public class MinecraftScreen { return new ConfigScreenRenderer(parent, screen, translationName); } - private static class ConfigScreenRenderer extends Screen { + private static class ConfigScreenRenderer extends DhScreen { private final Screen parent; private ConfigListWidget list; private AbstractScreen screen; @@ -56,7 +59,12 @@ public class MinecraftScreen { } @Override - public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { + #if PRE_MC_1_20_1 + public void render(PoseStack matrices, int mouseX, int mouseY, float delta) + #else + public void render(GuiGraphics matrices, int mouseX, int mouseY, float delta) + #endif + { this.renderBackground(matrices); // Render background this.list.render(matrices, mouseX, mouseY, delta); // Renders the items in the render list (currently only used to tint background darker) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/ChangelogScreen.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/ChangelogScreen.java index 75b5d094d..dded7822a 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/ChangelogScreen.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/ChangelogScreen.java @@ -9,7 +9,11 @@ import com.seibel.distanthorizons.core.jar.installer.MarkdownFormatter; import com.seibel.distanthorizons.core.jar.installer.ModrinthGetter; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; +#if PRE_MC_1_20_1 import net.minecraft.client.gui.GuiComponent; +#else +import net.minecraft.client.gui.GuiGraphics; +#endif import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.ContainerObjectSelectionList; @@ -104,7 +108,12 @@ public class ChangelogScreen extends DhScreen { } @Override - public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { + #if PRE_MC_1_20_1 + public void render(PoseStack matrices, int mouseX, int mouseY, float delta) + #else + public void render(GuiGraphics matrices, int mouseX, int mouseY, float delta) + #endif + { this.renderBackground(matrices); // Render background // Set the scroll position to the mouse height relative to the screen @@ -115,7 +124,7 @@ public class ChangelogScreen extends DhScreen { super.render(matrices, mouseX, mouseY, delta); // Render the buttons - drawCenteredString(matrices, font, title, width / 2, 15, 0xFFFFFF); // Render title + DhDrawCenteredString(matrices, font, title, width / 2, 15, 0xFFFFFF); // Render title } @Override @@ -155,10 +164,17 @@ public class ChangelogScreen extends DhScreen { return new ButtonEntry(text); } + #if PRE_MC_1_20_1 @Override public void render(PoseStack matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { GuiComponent.drawString(matrices, textRenderer, text, 12, y + 5, 0xFFFFFF); } + #else + @Override + public void render(GuiGraphics matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { + matrices.drawString(textRenderer, text, 12, y + 5, 0xFFFFFF); + } + #endif @Override public List children() { diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/UpdateModScreen.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/UpdateModScreen.java index 14905f017..4088710cd 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/UpdateModScreen.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/UpdateModScreen.java @@ -10,6 +10,9 @@ import com.seibel.distanthorizons.core.jar.JarUtils; import com.seibel.distanthorizons.core.jar.installer.ModrinthGetter; import com.seibel.distanthorizons.core.jar.updater.SelfUpdater; import net.minecraft.client.Minecraft; +#if POST_MC_1_20_1 +import net.minecraft.client.gui.GuiGraphics; +#endif import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.ImageButton; import net.minecraft.client.gui.screens.Screen; @@ -117,13 +120,18 @@ public class UpdateModScreen extends DhScreen { } @Override - public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { + #if PRE_MC_1_20_1 + public void render(PoseStack matrices, int mouseX, int mouseY, float delta) + #else + public void render(GuiGraphics matrices, int mouseX, int mouseY, float delta) + #endif + { this.renderBackground(matrices); // Render background // Render the text's - drawCenteredString(matrices, this.font, Translatable(ModInfo.ID + ".updater.text1"), this.width / 2, this.height / 2 - 35, 0xFFFFFF); - drawCenteredString(matrices, this.font, Translatable(ModInfo.ID + ".updater.text2", ModInfo.VERSION, ModrinthGetter.releaseNames.get(this.newVersionID)), this.width / 2, this.height / 2 -20, 0x52FD52); + DhDrawCenteredString(matrices, this.font, Translatable(ModInfo.ID + ".updater.text1"), this.width / 2, this.height / 2 - 35, 0xFFFFFF); + DhDrawCenteredString(matrices, this.font, Translatable(ModInfo.ID + ".updater.text2", ModInfo.VERSION, ModrinthGetter.releaseNames.get(this.newVersionID)), this.width / 2, this.height / 2 -20, 0x52FD52); // TODO: add the tooltips for the buttons super.render(matrices, mouseX, mouseY, delta); // Render the buttons diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/BatchGenerationEnvironment.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/BatchGenerationEnvironment.java index ff115348b..bb9ccf27e 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/BatchGenerationEnvironment.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/BatchGenerationEnvironment.java @@ -587,7 +587,9 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv { LevelChunk levelChunk = (LevelChunk) chunk; levelChunk.setLightCorrect(true); + #if PRE_MC_1_20_1 levelChunk.setClientLightReady(true); + #endif levelChunk.loaded = true; } #endif diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/LightGetterAdaptor.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/LightGetterAdaptor.java index 6d2fbee11..b8035d256 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/LightGetterAdaptor.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/LightGetterAdaptor.java @@ -28,6 +28,9 @@ import net.minecraft.world.level.LevelHeightAccessor; #endif import net.minecraft.world.level.chunk.ChunkStatus; import net.minecraft.world.level.chunk.LightChunkGetter; +#if POST_MC_1_20_1 +import net.minecraft.world.level.chunk.LightChunk; +#endif public class LightGetterAdaptor implements LightChunkGetter { private final BlockGetter heightGetter; @@ -44,7 +47,7 @@ public class LightGetterAdaptor implements LightChunkGetter { } @Override - public BlockGetter getChunkForLighting(int chunkX, int chunkZ) { + public #if PRE_MC_1_20_1 BlockGetter #else LightChunk #endif getChunkForLighting(int chunkX, int chunkZ) { if (genRegion == null) throw new IllegalStateException("World Gen region has not been set!"); // May be null diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/WorldGenLevelLightEngine.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/WorldGenLevelLightEngine.java index 19f46fd7b..420bb78ad 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/WorldGenLevelLightEngine.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/WorldGenLevelLightEngine.java @@ -19,6 +19,7 @@ package com.seibel.distanthorizons.common.wrappers.worldGeneration.mimicObject; +import net.minecraft.world.level.lighting.*; import org.jetbrains.annotations.Nullable; import net.minecraft.core.BlockPos; @@ -31,10 +32,7 @@ import net.minecraft.world.level.LightLayer; import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.DataLayer; import net.minecraft.world.level.chunk.LevelChunkSection; -import net.minecraft.world.level.lighting.BlockLightEngine; -import net.minecraft.world.level.lighting.LayerLightEventListener; -import net.minecraft.world.level.lighting.LevelLightEngine; -import net.minecraft.world.level.lighting.SkyLightEngine; +import org.jetbrains.annotations.PropertyKey; public class WorldGenLevelLightEngine extends LevelLightEngine { public static final int MAX_SOURCE_LEVEL = 15; @@ -42,10 +40,19 @@ public class WorldGenLevelLightEngine extends LevelLightEngine { #if POST_MC_1_17_1 protected final LevelHeightAccessor levelHeightAccessor; #endif + + #if PRE_MC_1_20_1 @Nullable public final BlockLightEngine blockEngine; @Nullable public final SkyLightEngine skyEngine; + #else + @Nullable + public final LightEngine blockEngine; + @Nullable + public final LightEngine skyEngine; + #endif + public WorldGenLevelLightEngine(LightGetterAdaptor genRegion) { super(genRegion, false, false); @@ -56,16 +63,7 @@ public class WorldGenLevelLightEngine extends LevelLightEngine { this.skyEngine = new SkyLightEngine(genRegion); } - @Override - public void checkBlock(BlockPos blockPos) { - if (this.blockEngine != null) { - this.blockEngine.checkBlock(blockPos); - } - if (this.skyEngine != null) { - this.skyEngine.checkBlock(blockPos); - } - } - + #if PRE_MC_1_20_1 @Override public void onBlockEmissionIncrease(BlockPos blockPos, int i) { if (this.blockEngine != null) { @@ -73,14 +71,6 @@ public class WorldGenLevelLightEngine extends LevelLightEngine { } } - @Override - public boolean hasLightWork() { - if (this.skyEngine != null && this.skyEngine.hasLightWork()) { - return true; - } - return this.blockEngine != null && this.blockEngine.hasLightWork(); - } - @Override public int runUpdates(int i, boolean bl, boolean bl2) { if (this.blockEngine != null && this.skyEngine != null) { @@ -102,16 +92,6 @@ public class WorldGenLevelLightEngine extends LevelLightEngine { return i; } - @Override - public void updateSectionStatus(SectionPos sectionPos, boolean bl) { - if (this.blockEngine != null) { - this.blockEngine.updateSectionStatus(sectionPos, bl); - } - if (this.skyEngine != null) { - this.skyEngine.updateSectionStatus(sectionPos, bl); - } - } - @Override public void enableLightSources(ChunkPos chunkPos, boolean bl) { if (this.blockEngine != null) { @@ -122,6 +102,87 @@ public class WorldGenLevelLightEngine extends LevelLightEngine { } } + #else + @Override + public int runLightUpdates() { + int $$0 = 0; + if (this.blockEngine != null) { + $$0 += this.blockEngine.runLightUpdates(); + } + if (this.skyEngine != null) { + $$0 += this.skyEngine.runLightUpdates(); + } + return $$0; + } + + @Override + public void setLightEnabled(ChunkPos $$0, boolean $$1) { + if (this.blockEngine != null) { + this.blockEngine.setLightEnabled($$0, $$1); + } + + if (this.skyEngine != null) { + this.skyEngine.setLightEnabled($$0, $$1); + } + } + + @Override + public void propagateLightSources(ChunkPos arg) { + if (this.skyEngine != null) { + this.skyEngine.propagateLightSources(arg); + } + if (this.blockEngine != null) { + this.blockEngine.propagateLightSources(arg); + } + } + + public boolean lightOnInSection(SectionPos $$0) { + long $$1 = $$0.asLong(); + return this.blockEngine == null + /*Note: Somehow vanilla access the protected 'storage' field from the LevelLightEngine class... we're using mixin to do this.*/ + || this.blockEngine.storage.lightOnInSection($$1) && (this.skyEngine == null || this.skyEngine.storage.lightOnInSection($$1)); + } + #endif + + @Override + public void queueSectionData(LightLayer lightLayer, SectionPos sectionPos, @Nullable DataLayer dataLayer #if PRE_MC_1_20_1, boolean bl #endif) { + if (lightLayer == LightLayer.BLOCK) { + if (this.blockEngine != null) { + this.blockEngine.queueSectionData(sectionPos.asLong(), dataLayer #if PRE_MC_1_20_1, bl #endif); + } + } else if (this.skyEngine != null) { + this.skyEngine.queueSectionData(sectionPos.asLong(), dataLayer #if PRE_MC_1_20_1, bl #endif); + } + } + + @Override + public void checkBlock(BlockPos blockPos) { + if (this.blockEngine != null) { + this.blockEngine.checkBlock(blockPos); + } + if (this.skyEngine != null) { + this.skyEngine.checkBlock(blockPos); + } + } + + @Override + public boolean hasLightWork() { + if (this.skyEngine != null && this.skyEngine.hasLightWork()) { + return true; + } + return this.blockEngine != null && this.blockEngine.hasLightWork(); + } + + @Override + public void updateSectionStatus(SectionPos sectionPos, boolean bl) { + if (this.blockEngine != null) { + this.blockEngine.updateSectionStatus(sectionPos, bl); + } + if (this.skyEngine != null) { + this.skyEngine.updateSectionStatus(sectionPos, bl); + } + } + @Override public LayerLightEventListener getLayerListener(LightLayer lightLayer) { if (lightLayer == LightLayer.BLOCK) { @@ -168,15 +229,25 @@ public class WorldGenLevelLightEngine extends LevelLightEngine { #else if (levelChunkSection.hasOnlyAir()) continue; int j = this.levelHeightAccessor.getSectionYFromSectionIndex(i); + #if POST_MC_1_20_1 + queueSectionData(LightLayer.BLOCK, SectionPos.of(chunkPos, i), null); + queueSectionData(LightLayer.SKY, SectionPos.of(chunkPos, i), null); + #endif + updateSectionStatus(SectionPos.of(chunkPos, j), false); #endif } + #if PRE_MC_1_20_1 enableLightSources(chunkPos, true); if (needLightBlockUpdate) { chunkAccess.getLights().forEach(blockPos -> onBlockEmissionIncrease(blockPos, chunkAccess.getLightEmission(blockPos))); } - + #else + //runLightUpdates(); + propagateLightSources(chunkPos); + //runLightUpdates(); + #endif chunkAccess.setLightCorrect(true); } @@ -185,16 +256,6 @@ public class WorldGenLevelLightEngine extends LevelLightEngine { throw new UnsupportedOperationException("This should never be used!"); } @Override - public void queueSectionData(LightLayer lightLayer, SectionPos sectionPos, @Nullable DataLayer dataLayer, boolean bl) { - if (lightLayer == LightLayer.BLOCK) { - if (this.blockEngine != null) { - this.blockEngine.queueSectionData(sectionPos.asLong(), dataLayer, bl); - } - } else if (this.skyEngine != null) { - this.skyEngine.queueSectionData(sectionPos.asLong(), dataLayer, bl); - } - } - @Override public void retainData(ChunkPos chunkPos, boolean bl) { if (this.blockEngine != null) { this.blockEngine.retainData(chunkPos, bl); diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepFeatures.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepFeatures.java index ca4accc34..d543c36ea 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepFeatures.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepFeatures.java @@ -64,12 +64,12 @@ public final class StepFeatures { try { #if PRE_MC_1_18_1 worldGenRegion.setOverrideCenter(chunk.getPos()); - Heightmap.primeHeightmaps(chunk, STATUS.heightmapsAfter()); environment.params.generator.applyBiomeDecoration(worldGenRegion, tParams.structFeat); - #else Heightmap.primeHeightmaps(chunk, STATUS.heightmapsAfter()); + #else environment.params.generator.applyBiomeDecoration(worldGenRegion, chunk, tParams.structFeat.forWorldGenRegion(worldGenRegion)); + Heightmap.primeHeightmaps(chunk, STATUS.heightmapsAfter()); #endif } catch (ReportedException e) { e.printStackTrace(); diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepLight.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepLight.java index 760ae807a..0a0e6feff 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepLight.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepLight.java @@ -72,11 +72,19 @@ public final class StepLight { } catch (Exception e) { e.printStackTrace(); } - #if POST_MC_1_18_1 + #if POST_MC_1_18_1 && PRE_MC_1_20_1 if (chunk instanceof LevelChunk) ((LevelChunk)chunk).setClientLightReady(true); + #elif POST_MC_1_20_1 + lightEngine.setLightEnabled(chunk.getPos(), true); #endif + + chunk.setLightCorrect(true); } + #if PRE_MC_1_20_1 lightEngine.runUpdates(Integer.MAX_VALUE, true, true); + #else + lightEngine.runLightUpdates(); + #endif } } \ No newline at end of file diff --git a/common/src/main/resources/1_20.distanthorizons.accesswidener b/common/src/main/resources/1_20.distanthorizons.accesswidener index 5357c2b46..c0cfb2c33 100644 --- a/common/src/main/resources/1_20.distanthorizons.accesswidener +++ b/common/src/main/resources/1_20.distanthorizons.accesswidener @@ -1,12 +1,9 @@ accessWidener v1 named - # used when determining where to save files to accessible field net/minecraft/world/level/storage/DimensionDataStorage dataFolder Ljava/io/File; # used when rendering -accessible field com/mojang/blaze3d/vertex/VertexBuffer indexCount I -accessible field com/mojang/blaze3d/vertex/VertexBuffer vertextBufferId I accessible method net/minecraft/client/renderer/GameRenderer getFov (Lnet/minecraft/client/Camera;FZ)D # used for grabbing vanilla rendered chunks @@ -15,39 +12,24 @@ accessible class net/minecraft/client/renderer/LevelRenderer$RenderChunkStorage accessible class net/minecraft/client/renderer/LevelRenderer$RenderChunkInfo accessible field net/minecraft/client/renderer/LevelRenderer$RenderChunkInfo chunk Lnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher$RenderChunk; -# lighting -accessible field net/minecraft/client/renderer/LightTexture lightPixels Lcom/mojang/blaze3d/platform/NativeImage; -accessible field net/minecraft/client/renderer/LightTexture lightTexture Lnet/minecraft/client/renderer/texture/DynamicTexture; -accessible field net/minecraft/world/level/lighting/LevelLightEngine blockEngine Lnet/minecraft/world/level/lighting/LayerLightEngine; -accessible field net/minecraft/world/level/lighting/LevelLightEngine skyEngine Lnet/minecraft/world/level/lighting/LayerLightEngine; - # world generation -accessible method net/minecraft/world/level/levelgen/Heightmap setHeight (III)V -accessible field net/minecraft/world/level/biome/Biome generationSettings Lnet/minecraft/world/level/biome/BiomeGenerationSettings; -accessible field net/minecraft/world/level/biome/Biome biomeCategory Lnet/minecraft/world/level/biome/Biome$BiomeCategory; -# accessible field net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator settings Lnet/minecraft/core/Holder; -accessible method net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator doFill (Lnet/minecraft/world/level/levelgen/blending/Blender;Lnet/minecraft/world/level/StructureFeatureManager;Lnet/minecraft/world/level/chunk/ChunkAccess;II)Lnet/minecraft/world/level/chunk/ChunkAccess; -#accessible method net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator doCreateBiomes (Lnet/minecraft/core/Registry;Lnet/minecraft/world/level/levelgen/blending/Blender;Lnet/minecraft/world/level/StructureFeatureManager;Lnet/minecraft/world/level/chunk/ChunkAccess;)V -accessible method net/minecraft/world/level/lighting/LayerLightEngine queueSectionData (JLnet/minecraft/world/level/chunk/DataLayer;Z)V +# accessible method net/minecraft/world/level/lighting/LayerLightEngine queueSectionData (JLnet/minecraft/world/level/chunk/DataLayer;Z)V accessible field net/minecraft/world/level/chunk/LevelChunk loaded Z +accessible field net/minecraft/world/level/lighting/LightEngine storage Lnet/minecraft/world/level/lighting/LayerLightSectionStorage; +accessible method net/minecraft/world/level/lighting/LayerLightSectionStorage lightOnInSection (J)Z # lod generation from save file -accessible field net/minecraft/server/level/ChunkMap mainThreadExecutor Lnet/minecraft/util/thread/BlockableEventLoop; -accessible method net/minecraft/server/level/ChunkMap readChunk (Lnet/minecraft/world/level/ChunkPos;)Lnet/minecraft/nbt/CompoundTag; accessible field net/minecraft/world/level/chunk/storage/ChunkStorage worker Lnet/minecraft/world/level/chunk/storage/IOWorker; accessible field net/minecraft/world/level/chunk/storage/IOWorker storage Lnet/minecraft/world/level/chunk/storage/RegionFileStorage; accessible field net/minecraft/world/level/chunk/storage/RegionFileStorage regionCache Lit/unimi/dsi/fastutil/longs/Long2ObjectLinkedOpenHashMap; accessible field net/minecraft/world/level/chunk/storage/RegionFileStorage folder Ljava/nio/file/Path; # grabbing textures -accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite animatedTexture Lnet/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture; -accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite width I -accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite height I -accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite mainImage [Lcom/mojang/blaze3d/platform/NativeImage; -accessible class net/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture -accessible method net/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture getFrameX (I)I -accessible method net/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture getFrameY (I)I -extendable class com/mojang/math/Matrix4f +accessible class net/minecraft/client/renderer/texture/SpriteContents$AnimatedTexture +accessible method net/minecraft/client/renderer/texture/SpriteContents$AnimatedTexture getFrameX (I)I +accessible method net/minecraft/client/renderer/texture/SpriteContents$AnimatedTexture getFrameY (I)I +accessible field net/minecraft/client/renderer/texture/SpriteContents animatedTexture Lnet/minecraft/client/renderer/texture/SpriteContents$AnimatedTexture; +accessible field net/minecraft/client/renderer/texture/SpriteContents originalImage Lcom/mojang/blaze3d/platform/NativeImage; # hacky stuff accessible field net/minecraft/util/ThreadingDetector lock Ljava/util/concurrent/Semaphore; diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientLevel.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientLevel.java index f309d2f38..0ff222d21 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientLevel.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientLevel.java @@ -48,8 +48,9 @@ public class MixinClientLevel // { // ClientApi.INSTANCE.clientLevelLoadEvent(WorldWrapper.getWorldWrapper((ClientLevel)(Object)this)); // } - - #if POST_MC_1_18_1 // Only the setLightReady is only available after 1.18. This ensures the light data is ready. + + // Moved to overriding the enableChunkLight(...) method over at ClientPacketListener for 1.20+ + #if POST_MC_1_18_1 && PRE_MC_1_20_1 // Only the setLightReady is only available after 1.18. This ensures the light data is ready. @Inject(method = "setLightReady", at = @At("HEAD")) private void onChunkLightReady(int x, int z, CallbackInfo ci) { diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientPacketListener.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientPacketListener.java index 7ba15ef9f..240029c97 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientPacketListener.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientPacketListener.java @@ -1,9 +1,11 @@ package com.seibel.distanthorizons.fabric.mixins.client; +import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper; import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; import com.seibel.distanthorizons.core.api.internal.ClientApi; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.multiplayer.ClientPacketListener; +import net.minecraft.world.level.chunk.LevelChunk; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -51,5 +53,15 @@ public class MixinClientPacketListener ClientApi.INSTANCE.clientLevelUnloadEvent(ClientLevelWrapper.getWrapper(level)); } } + + #if POST_MC_1_20_1 + @Inject(method = "enableChunkLight", at = @At("TAIL")) + void onEnableChunkLight(LevelChunk chunk, int x, int z, CallbackInfo ci) + { + ClientLevelWrapper clientLevel = ClientLevelWrapper.getWrapper((ClientLevel) chunk.getLevel()); + ClientApi.INSTANCE.clientChunkLoadEvent(new ChunkWrapper(chunk, chunk.getLevel(), clientLevel), clientLevel); + } + + #endif } diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java index 779045cc8..c4a135d98 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java @@ -116,11 +116,19 @@ public class MixinLevelRenderer , at = @At( value = "INVOKE", + #if PRE_MC_1_20_1 target = "Lnet/minecraft/world/level/lighting/LevelLightEngine;runUpdates(IZZ)I" + #else + target = "Lnet/minecraft/world/level/lighting/LevelLightEngine;runLightUpdates()I" + #endif )) - private int callAfterRunUpdates(LevelLightEngine light, int pos, boolean isQueueEmpty, boolean updateBlockLight) + private int callAfterRunUpdates(LevelLightEngine light #if PRE_MC_1_20_1 , int pos, boolean isQueueEmpty, boolean updateBlockLight #endif) { + #if PRE_MC_1_20_1 int r = light.runUpdates(pos, isQueueEmpty, updateBlockLight); + #else + int r = light.runLightUpdates(); + #endif ChunkWrapper.syncedUpdateClientLightStatus(); return r; } diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinTextureUtil.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinTextureUtil.java index c451a0534..553fda49e 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinTextureUtil.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinTextureUtil.java @@ -12,6 +12,7 @@ import org.spongepowered.asm.mixin.injection.Redirect; * * @author coolGi */ + #if PRE_MC_1_20_1 // FIXME: Forge seems to be missing the mapping for this ,and remap=false doesn't work... Help @Mixin(TextureUtil.class) public class MixinTextureUtil { @Redirect(method = "Lcom/mojang/blaze3d/platform/TextureUtil;prepareImage(Lcom/mojang/blaze3d/platform/NativeImage$InternalGlFormat;IIII)V", @@ -26,3 +27,4 @@ public class MixinTextureUtil { } } } + #endif diff --git a/gradle.properties b/gradle.properties index 5d03ad02a..b9a94aac6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -33,4 +33,4 @@ versionStr= # This defines what MC version Intellij will use for the preprocessor # and what version is used automatically by build and run commands -mcVer=1.19.4 +mcVer=1.18.2 From 318d514b4124d5cbe348dae7470bb4d0c0a62de6 Mon Sep 17 00:00:00 2001 From: TomTheFurry Date: Sun, 25 Jun 2023 14:58:50 +0800 Subject: [PATCH 03/28] Ops. --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 52145f21a..fb054a1b9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -86,8 +86,8 @@ build_1_19_4: # 1.20.1 build -build_1.20.1: - stage: build_1.20.1 +build_1_20_1: + stage: build_1_20_1 script: # this both runs the unit tests and assembles the code - ./gradlew clean -PmcVer="1.20.1" --gradle-user-home cache/; @@ -95,7 +95,7 @@ build_1.20.1: - ./gradlew mergeJars -PmcVer="1.20.1" --gradle-user-home cache/; image: eclipse-temurin:17 artifacts: - name: "NightlyBuild_1.20.1-${CI_COMMIT_SHORT_SHA}-${CI_COMMIT_TIMESTAMP}" + name: "NightlyBuild_1_20_1-${CI_COMMIT_SHORT_SHA}-${CI_COMMIT_TIMESTAMP}" paths: - Merged/*.jar - fabric/build/libs/*.jar From 960488bef425c8dc8f2d4c85bf3253e4b2e63420 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 25 Jun 2023 18:50:53 -0500 Subject: [PATCH 04/28] Update coreSubProjects --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index d04b4c0d5..9789b5be1 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit d04b4c0d55b56e015cd150b2050f468aff9e1048 +Subproject commit 9789b5be126b402f4e4fb2174552a13298e832fa From 52f52b1c1bd27517c51d9ad561c28519c6a982c4 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Mon, 26 Jun 2023 07:59:01 -0500 Subject: [PATCH 05/28] re-add horizontal micro-offset in vertex shader --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index 9789b5be1..e3ae9126b 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 9789b5be126b402f4e4fb2174552a13298e832fa +Subproject commit e3ae9126bfe6c87b74d960cc7a0f5a9687b5277b From 7d8ab781cb0257036e7fbe8f426132215fc61389 Mon Sep 17 00:00:00 2001 From: TomTheFurry Date: Mon, 26 Jun 2023 23:20:02 +0800 Subject: [PATCH 06/28] Optimization on load time, fix gl bug, and improve transparency --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index e3ae9126b..007749c9e 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit e3ae9126bfe6c87b74d960cc7a0f5a9687b5277b +Subproject commit 007749c9ef07981d956db96272b540daecd799ce From 5e242561bdbba3e2e9fa7c226abdb24d6d6168f6 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Mon, 26 Jun 2023 19:26:22 -0500 Subject: [PATCH 07/28] add build_api_docs to the CI --- .gitlab-ci.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fb054a1b9..1f46bc94a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,6 +9,7 @@ stages: - build_1_18_2 - build_1_19_4 - build_1_20_1 + - build_api_javadocs variables: # Pull core when building @@ -120,6 +121,30 @@ build_1_20_1: allow_failure: true +# generate API javadocs +build_api_javadocs: + stage: build_api_javadocs + script: + # this should only run for the API + - ./gradlew api:clean --gradle-user-home cache/; + # this also runs unit tests + - ./gradlew api:build --gradle-user-home cache/; + - ./gradlew api:javadoc --gradle-user-home cache/; + image: eclipse-temurin:17 + artifacts: + name: "ApiJavaDoc-${CI_COMMIT_SHORT_SHA}-${CI_COMMIT_TIMESTAMP}" + paths: + - $CI_PROJECT_DIR/coreSubProjects/api/build/docs/javadoc/ + expose_as: "apiJavaDocs" + when: always + cache: + key: "gradleCache" + policy: pull-push + paths: + - .gradle + - cache/ + allow_failure: false + From 9be222f25f1fb6f2646790295d6ce62728a58434 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Tue, 27 Jun 2023 01:20:56 +0000 Subject: [PATCH 08/28] JavaDoc API auto deploy attempt --- .gitlab-ci.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1f46bc94a..2e36424da 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,7 +9,7 @@ stages: - build_1_18_2 - build_1_19_4 - build_1_20_1 - - build_api_javadocs + - pages variables: # Pull core when building @@ -121,22 +121,21 @@ build_1_20_1: allow_failure: true -# generate API javadocs -build_api_javadocs: - stage: build_api_javadocs +# generate and publish API javadocs +pages: + stage: pages script: # this should only run for the API - ./gradlew api:clean --gradle-user-home cache/; # this also runs unit tests - ./gradlew api:build --gradle-user-home cache/; - ./gradlew api:javadoc --gradle-user-home cache/; + - mkdir public + - cp -r $CI_PROJECT_DIR/coreSubProjects/api/build/docs/javadoc/ .public image: eclipse-temurin:17 artifacts: - name: "ApiJavaDoc-${CI_COMMIT_SHORT_SHA}-${CI_COMMIT_TIMESTAMP}" paths: - - $CI_PROJECT_DIR/coreSubProjects/api/build/docs/javadoc/ - expose_as: "apiJavaDocs" - when: always + - public cache: key: "gradleCache" policy: pull-push From 0342b4b5a9dc19fb60a77482cc39879bb65ce303 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Tue, 27 Jun 2023 01:27:06 +0000 Subject: [PATCH 09/28] JavaDoc API auto deploy attempt 2 (Fix typo) --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2e36424da..b8c95330f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -131,7 +131,7 @@ pages: - ./gradlew api:build --gradle-user-home cache/; - ./gradlew api:javadoc --gradle-user-home cache/; - mkdir public - - cp -r $CI_PROJECT_DIR/coreSubProjects/api/build/docs/javadoc/ .public + - cp -r $CI_PROJECT_DIR/coreSubProjects/api/build/docs/javadoc/ public image: eclipse-temurin:17 artifacts: paths: From a16099bc980a38afa5ab7d79e7ab64c9724def30 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Tue, 27 Jun 2023 01:36:36 +0000 Subject: [PATCH 10/28] Fix javadoc landing page --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b8c95330f..86d3b9ffd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -131,7 +131,7 @@ pages: - ./gradlew api:build --gradle-user-home cache/; - ./gradlew api:javadoc --gradle-user-home cache/; - mkdir public - - cp -r $CI_PROJECT_DIR/coreSubProjects/api/build/docs/javadoc/ public + - cp -r $CI_PROJECT_DIR/coreSubProjects/api/build/docs/javadoc/. public image: eclipse-temurin:17 artifacts: paths: From 38085c3e7d40fff173b3a8ce5f966e4e279dc8fc Mon Sep 17 00:00:00 2001 From: James Seibel Date: Mon, 26 Jun 2023 21:26:42 -0500 Subject: [PATCH 11/28] Set the javadoc's title to their project names In this case "DistantHorizons-api" --- build.gradle | 10 +++++++--- coreSubProjects | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 996ae3480..03e379fcf 100644 --- a/build.gradle +++ b/build.gradle @@ -420,12 +420,16 @@ allprojects { p -> apply plugin: "java" apply plugin: "maven-publish" - + archivesBaseName = rootProject.mod_name version = project.name + "-" + rootProject.versionStr group = rootProject.maven_group - - + + // this is the text that appears at the top of the overview (home) page + // and is used when bookmarking a page + javadoc.title = rootProject.mod_name + "-" + project.name + + repositories { // The central repo mavenCentral() diff --git a/coreSubProjects b/coreSubProjects index 007749c9e..d91cde231 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 007749c9ef07981d956db96272b540daecd799ce +Subproject commit d91cde23198beb478a0b6bfdf209a2d9a72dda8b From 207d5cb9491a5973d1ed7b48bc04808b1b62bf54 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Wed, 28 Jun 2023 18:17:33 -0500 Subject: [PATCH 12/28] Update coreSubProjects --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index d91cde231..98634e2a0 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit d91cde23198beb478a0b6bfdf209a2d9a72dda8b +Subproject commit 98634e2a0b3f965f57b7fc886c38e895554be06d From 1b66672166007b18b415dabd0f75191b968b4f24 Mon Sep 17 00:00:00 2001 From: TomTheFurry Date: Thu, 29 Jun 2023 16:04:20 +0800 Subject: [PATCH 13/28] Trash remaining 1.19 & 1.18.1 unsupported mc version, and fixup 1.19.2 --- .gitlab-ci.yml | 34 +++++++++++++ buildAll.bat | 6 +-- .../common/forge/LodForgeMethodCaller.java | 4 +- .../common/wrappers/VersionConstants.java | 2 +- .../common/wrappers/block/BiomeWrapper.java | 2 +- .../block/cache/ClientBlockStateCache.java | 4 +- .../common/wrappers/chunk/ChunkWrapper.java | 6 +-- .../common/wrappers/gui/ClassicConfigGUI.java | 2 +- .../common/wrappers/gui/GuiHelper.java | 14 +++--- .../common/wrappers/gui/MinecraftScreen.java | 2 +- .../wrappers/gui/updater/ChangelogScreen.java | 2 +- .../minecraft/MinecraftClientWrapper.java | 4 +- .../minecraft/MinecraftRenderWrapper.java | 6 +-- .../BatchGenerationEnvironment.java | 12 ++--- .../worldGeneration/GlobalParameters.java | 14 +++--- .../worldGeneration/ThreadedParameters.java | 10 ++-- .../mimicObject/ChunkLoader.java | 26 +++++----- .../mimicObject/LightedWorldGenRegion.java | 8 +-- .../mimicObject/WorldGenLevelLightEngine.java | 2 +- .../WorldGenStructFeatManager.java | 26 +++++----- .../worldGeneration/step/StepBiomes.java | 8 +-- .../worldGeneration/step/StepFeatures.java | 4 +- .../worldGeneration/step/StepLight.java | 2 +- .../worldGeneration/step/StepNoise.java | 6 +-- .../step/StepStructureReference.java | 2 +- .../step/StepStructureStart.java | 12 +++-- .../worldGeneration/step/StepSurface.java | 2 +- .../1_19_2.distanthorizons.accesswidener | 39 +++++++++++++++ ...r => 1_19_4.distanthorizons.accesswidener} | 0 coreSubProjects | 2 +- .../fabric/FabricClientProxy.java | 2 +- .../mixins/client/MixinClientLevel.java | 4 +- .../client/MixinClientPacketListener.java | 2 +- .../mixins/client/MixinFogRenderer.java | 2 +- .../mixins/client/MixinOptionsScreen.java | 4 +- .../mixins/server/MixinChunkGenerator.java | 2 +- .../server/MixinUtilBackgroundThread.java | 2 +- .../server/unsafe/MixinThreadingDetector.java | 2 +- .../wrappers/modAccessor/SodiumAccessor.java | 2 +- .../forge/ForgeClientProxy.java | 6 +-- .../distanthorizons/forge/ForgeMain.java | 8 +-- .../forge/ForgeServerProxy.java | 4 +- .../client/MixinClientPacketListener.java | 2 +- .../mixins/client/MixinOptionsScreen.java | 4 +- .../mixins/server/MixinChunkGenerator.java | 2 +- .../server/MixinUtilBackgroundThread.java | 2 +- .../server/unsafe/MixinThreadingDetector.java | 2 +- gradle.properties | 2 +- versionProperties/1.18.1.properties | 50 ------------------- versionProperties/1.19.2.properties | 2 +- versionProperties/1.19.4.properties | 2 +- versionProperties/1.19.properties | 47 ----------------- 52 files changed, 198 insertions(+), 220 deletions(-) create mode 100644 common/src/main/resources/1_19_2.distanthorizons.accesswidener rename common/src/main/resources/{1_19.distanthorizons.accesswidener => 1_19_4.distanthorizons.accesswidener} (100%) delete mode 100644 versionProperties/1.18.1.properties delete mode 100644 versionProperties/1.19.properties diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 86d3b9ffd..26eda445f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,6 +9,7 @@ stages: - build_1_18_2 - build_1_19_4 - build_1_20_1 + - build_1_19_2 - pages variables: @@ -50,6 +51,39 @@ build_1_18_2: - cache/ allow_failure: true +# 1.19.2 build +build_1_19_2: + stage: build_1_19_2 + script: + # this both runs the unit tests and assembles the code + - ./gradlew clean -PmcVer="1.19.2" --gradle-user-home cache/; + - ./gradlew build -PmcVer="1.19.2" --gradle-user-home cache/; + - ./gradlew mergeJars -PmcVer="1.19.2" --gradle-user-home cache/; + image: eclipse-temurin:17 + artifacts: + name: "NightlyBuild_1_19_2-${CI_COMMIT_SHORT_SHA}-${CI_COMMIT_TIMESTAMP}" + paths: + - Merged/*.jar + - fabric/build/libs/*.jar + - forge/build/libs/*.jar + - quilt/build/libs/*.jar + exclude: + # TODO: There is a lot of duplicate stuff here, fix it later to be smaller + - fabric/build/libs/*-all.jar + - fabric/build/libs/*-sources.jar + - forge/build/libs/*-all.jar + - forge/build/libs/*-sources.jar + - quilt/build/libs/*-all.jar + - quilt/build/libs/*-sources.jar + expire_in: 1 day + when: always + cache: + key: "gradleCache" + policy: pull-push + paths: + - .gradle + - cache/ + allow_failure: true # 1.19.4 build build_1_19_4: diff --git a/buildAll.bat b/buildAll.bat index 9affd3a91..75578f376 100644 --- a/buildAll.bat +++ b/buildAll.bat @@ -10,11 +10,9 @@ echo So if someone does use Windows and knows how to script stuff then can you p @REM Old BAT script if you need some help with this task @REM SETLOCAL -@REM CALL :buildVersion "1.19" @REM CALL :buildVersion "1.18.2" -@REM CALL :buildVersion "1.18.1" -@REM CALL :buildVersion "1.17.1" -@REM CALL :buildVersion "1.16.5" +@REM CALL :buildVersion "1.19.4" +@REM CALL :buildVersion "1.20.1" @REM EXIT /B %ERRORLEVEL% @REM @REM :buildVersion diff --git a/common/src/main/java/com/seibel/distanthorizons/common/forge/LodForgeMethodCaller.java b/common/src/main/java/com/seibel/distanthorizons/common/forge/LodForgeMethodCaller.java index e086f6b96..2b73515c7 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/forge/LodForgeMethodCaller.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/forge/LodForgeMethodCaller.java @@ -22,7 +22,7 @@ package com.seibel.distanthorizons.common.forge; import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftClientWrapper; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.core.Direction; -#if POST_MC_1_19 +#if POST_MC_1_19_2 import net.minecraft.util.RandomSource; #endif import net.minecraft.world.level.ColorResolver; @@ -39,7 +39,7 @@ import java.util.Random; * @author Ran */ public interface LodForgeMethodCaller { - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 List getQuads(MinecraftClientWrapper mc, Block block, BlockState blockState, Direction direction, Random random); // FIXME: For 1.19 #else List getQuads(MinecraftClientWrapper mc, Block block, BlockState blockState, Direction direction, RandomSource random); // FIXME: For 1.19 diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/VersionConstants.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/VersionConstants.java index f8b76d06f..5a60af01b 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/VersionConstants.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/VersionConstants.java @@ -58,7 +58,7 @@ public class VersionConstants implements IVersionConstants @Override public String getMinecraftVersion() { - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 return Minecraft.getInstance().getGame().getVersion().getId(); #else return SharedConstants.getCurrentVersion().getId(); diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BiomeWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BiomeWrapper.java index b9004fe55..a8abb0e6e 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BiomeWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BiomeWrapper.java @@ -30,7 +30,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.world.IBiomeWrapper; import net.minecraft.client.Minecraft; import net.minecraft.core.Holder; -#if POST_MC_1_19 +#if POST_MC_1_19_2 import net.minecraft.data.worldgen.biome.EndBiomes; import net.minecraft.data.worldgen.biome.NetherBiomes; #endif diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/cache/ClientBlockStateCache.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/cache/ClientBlockStateCache.java index 9836e24cc..e080f600e 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/cache/ClientBlockStateCache.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/cache/ClientBlockStateCache.java @@ -19,7 +19,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.FlowerBlock; import net.minecraft.world.level.block.LeavesBlock; import net.minecraft.world.level.block.RotatedPillarBlock; -#if POST_MC_1_19 +#if POST_MC_1_19_2 import net.minecraft.util.RandomSource; #endif import net.minecraft.world.level.block.state.BlockState; @@ -37,7 +37,7 @@ public class ClientBlockStateCache private static final Logger LOGGER = DhLoggerBuilder.getLogger(); - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 public static final Random random = new Random(0); #else public static final RandomSource random = RandomSource.create(); diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/chunk/ChunkWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/chunk/ChunkWrapper.java index 3d2778a20..0184ce1da 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/chunk/ChunkWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/chunk/ChunkWrapper.java @@ -144,7 +144,7 @@ public class ChunkWrapper implements IChunkWrapper #if PRE_MC_1_17_1 return BiomeWrapper.getBiomeWrapper(chunk.getBiomes().getNoiseBiome( x >> 2, y >> 2, z >> 2)); - #elif PRE_MC_1_18_1 + #elif PRE_MC_1_18_2 return BiomeWrapper.getBiomeWrapper(chunk.getBiomes().getNoiseBiome( QuartPos.fromBlock(x), QuartPos.fromBlock(y), QuartPos.fromBlock(z))); #elif PRE_MC_1_18_2 @@ -176,7 +176,7 @@ public class ChunkWrapper implements IChunkWrapper @Override public boolean isLightCorrect() { - #if PRE_MC_1_18_1 + #if PRE_MC_1_18_2 return true; #else if (this.chunk instanceof LevelChunk) @@ -399,7 +399,7 @@ public class ChunkWrapper implements IChunkWrapper public static void syncedUpdateClientLightStatus() { - #if PRE_MC_1_18_1 + #if PRE_MC_1_18_2 // TODO: Check what to do in 1.18.1, or in other versions #else weakMapLock.writeLock().lock(); diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/ClassicConfigGUI.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/ClassicConfigGUI.java index 965042b16..dda593bd2 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/ClassicConfigGUI.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/ClassicConfigGUI.java @@ -53,7 +53,7 @@ import net.minecraft.client.resources.language.I18n; // translation #if POST_MC_1_17_1 import net.minecraft.client.gui.narration.NarratableEntry; #endif -#if PRE_MC_1_19 +#if PRE_MC_1_19_2 import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; #endif diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/GuiHelper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/GuiHelper.java index 7c9035097..de2449be0 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/GuiHelper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/GuiHelper.java @@ -5,7 +5,7 @@ import net.minecraft.client.gui.components.Button; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -#if PRE_MC_1_19 +#if PRE_MC_1_19_2 import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; #endif @@ -15,7 +15,7 @@ public class GuiHelper { * Helper static methods for versional compat */ public static Button MakeBtn(Component base, int a, int b, int c, int d, Button.OnPress action) { - #if PRE_MC_1_19 + #if PRE_MC_1_19_4 return new Button(a, b, c, d, base, action); #else return Button.builder(base, action).bounds(a,b,c,d).build(); @@ -23,7 +23,7 @@ public class GuiHelper { } public static MutableComponent TextOrLiteral(String text) { - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 return new TextComponent(text); #else return Component.literal(text); @@ -31,7 +31,7 @@ public class GuiHelper { } public static MutableComponent TextOrTranslatable(String text) { - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 return new TextComponent(text); #else return Component.translatable(text); @@ -39,7 +39,7 @@ public class GuiHelper { } public static MutableComponent Translatable(String text, Object... args) { - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 return new TranslatableComponent(text, args); #else return Component.translatable(text, args); @@ -47,7 +47,7 @@ public class GuiHelper { } public static void SetX(AbstractWidget w, int x) { - #if PRE_MC_1_19 + #if PRE_MC_1_19_4 w.x = x; #else w.setX(x); @@ -55,7 +55,7 @@ public class GuiHelper { } public static void SetY(AbstractWidget w, int y) { - #if PRE_MC_1_19 + #if PRE_MC_1_19_4 w.y = y; #else w.setY(y); diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/MinecraftScreen.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/MinecraftScreen.java index 15da5d970..bcc1bd3f9 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/MinecraftScreen.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/MinecraftScreen.java @@ -25,7 +25,7 @@ public class MinecraftScreen { private AbstractScreen screen; - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 public static net.minecraft.network.chat.TranslatableComponent translate (String str, Object... args) { return new net.minecraft.network.chat.TranslatableComponent(str, args); } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/ChangelogScreen.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/ChangelogScreen.java index dded7822a..ba32ae88d 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/ChangelogScreen.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/ChangelogScreen.java @@ -21,7 +21,7 @@ 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.Component; -#if PRE_MC_1_19 +#if PRE_MC_1_19_2 import net.minecraft.network.chat.TextComponent; #endif diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftClientWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftClientWrapper.java index a892f1be1..402b10ac5 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftClientWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftClientWrapper.java @@ -43,7 +43,7 @@ import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.resources.model.ModelManager; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -#if PRE_MC_1_19 +#if PRE_MC_1_19_2 import net.minecraft.network.chat.TextComponent; #endif import net.minecraft.server.level.ServerLevel; @@ -223,7 +223,7 @@ public class MinecraftClientWrapper implements IMinecraftClientWrapper, IMinecra { LocalPlayer p = getPlayer(); if (p == null) return; - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 p.sendMessage(new TextComponent(string), getPlayer().getUUID()); #else p.sendSystemMessage(net.minecraft.network.chat.Component.translatable(string)); diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper.java index 32fef12a8..6ddc93225 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper.java @@ -138,7 +138,7 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper @Override public double getGamma() { - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 return MC.options.gamma; #else return MC.options.gamma().get(); @@ -186,7 +186,7 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper @Override public int getRenderDistance() { - #if PRE_MC_1_18_1 + #if PRE_MC_1_18_2 //FIXME: How to resolve this? return MC.options.renderDistance; #else @@ -278,7 +278,7 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper try { LevelRenderer levelRenderer = MC.levelRenderer; Collection chunks = - #if PRE_MC_1_18_1 levelRenderer.renderChunks; + #if PRE_MC_1_18_2 levelRenderer.renderChunks; #else levelRenderer.renderChunkStorage.get().renderChunks; #endif return (chunks.stream().map((chunk) -> { diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/BatchGenerationEnvironment.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/BatchGenerationEnvironment.java index bb9ccf27e..228ef9e64 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/BatchGenerationEnvironment.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/BatchGenerationEnvironment.java @@ -55,7 +55,7 @@ import com.seibel.distanthorizons.common.wrappers.worldGeneration.step.StepStruc import com.seibel.distanthorizons.common.wrappers.worldGeneration.step.StepStructureStart; import com.seibel.distanthorizons.common.wrappers.worldGeneration.step.StepSurface; -#if POST_MC_1_19 +#if POST_MC_1_19_4 import net.minecraft.core.registries.Registries; #endif @@ -309,7 +309,7 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv private static ProtoChunk EmptyChunk(ServerLevel level, ChunkPos chunkPos) { return new ProtoChunk(chunkPos, UpgradeData.EMPTY #if POST_MC_1_17_1, level #endif - #if POST_MC_1_18_1, level.registryAccess().registryOrThrow( + #if POST_MC_1_18_2, level.registryAccess().registryOrThrow( #if PRE_MC_1_19_4 Registry.BIOME_REGISTRY #else @@ -394,7 +394,7 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv { target = new ProtoChunk(chunkPos, UpgradeData.EMPTY #if POST_MC_1_17_1 , params.level #endif - #if POST_MC_1_18_1 , params.biomes, null #endif + #if POST_MC_1_18_2 , params.biomes, null #endif ); } return target; @@ -433,7 +433,7 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv } boolean isFull = target.getStatus() == ChunkStatus.FULL || target instanceof LevelChunk; - #if POST_MC_1_18_1 + #if POST_MC_1_18_2 boolean isPartial = target.isOldNoiseGeneration(); #endif if (isFull) @@ -441,7 +441,7 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv LOAD_LOGGER.info("Detected full existing chunk at {}", target.getPos()); genEvent.resultConsumer.accept(wrappedChunk); } - #if POST_MC_1_18_1 + #if POST_MC_1_18_2 else if (isPartial) { LOAD_LOGGER.info("Detected old existing chunk at {}", target.getPos()); @@ -582,7 +582,7 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv // that though is no longer needed... } - #if POST_MC_1_18_1 + #if POST_MC_1_18_2 if (chunk instanceof LevelChunk) { LevelChunk levelChunk = (LevelChunk) chunk; diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/GlobalParameters.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/GlobalParameters.java index 1e585a64c..aabf8c6ff 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/GlobalParameters.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/GlobalParameters.java @@ -31,16 +31,16 @@ import net.minecraft.server.level.ThreadedLevelLightEngine; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.BiomeManager; import net.minecraft.world.level.chunk.ChunkGenerator; -#if POST_MC_1_18_1 +#if POST_MC_1_18_2 import net.minecraft.world.level.chunk.storage.ChunkScanAccess; #endif import net.minecraft.world.level.levelgen.WorldGenSettings; -#if PRE_MC_1_19 +#if PRE_MC_1_19_2 import net.minecraft.world.level.levelgen.structure.templatesystem.StructureManager; #else import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager; import net.minecraft.world.level.levelgen.RandomState; -#if POST_MC_1_19 +#if POST_MC_1_19_4 import net.minecraft.world.level.levelgen.WorldOptions; import net.minecraft.core.registries.Registries; #endif @@ -50,7 +50,7 @@ import net.minecraft.world.level.storage.WorldData; public final class GlobalParameters { public final ChunkGenerator generator; - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 public final StructureManager structures; #else public final StructureTemplateManager structures; @@ -68,7 +68,7 @@ public final class GlobalParameters public final RegistryAccess registry; public final long worldSeed; public final DataFixer fixerUpper; - #if POST_MC_1_18_1 + #if POST_MC_1_18_2 public final BiomeManager biomeManager; public final ChunkScanAccess chunkScanner; // FIXME: Figure out if this is actually needed #endif @@ -92,14 +92,14 @@ public final class GlobalParameters biomes = registry.registryOrThrow(Registries.BIOME); worldSeed = worldOptions.seed(); #endif - #if POST_MC_1_18_1 + #if POST_MC_1_18_2 biomeManager = new BiomeManager(level, BiomeManager.obfuscateSeed(worldSeed)); chunkScanner = level.getChunkSource().chunkScanner(); #endif structures = server.getStructureManager(); generator = level.getChunkSource().getGenerator(); fixerUpper = server.getFixerUpper(); - #if POST_MC_1_19 + #if POST_MC_1_19_2 randomState = level.getChunkSource().randomState(); #endif } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/ThreadedParameters.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/ThreadedParameters.java index 7df0e1f2c..2c20b551d 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/ThreadedParameters.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/ThreadedParameters.java @@ -25,7 +25,7 @@ import com.seibel.distanthorizons.common.wrappers.worldGeneration.mimicObject.Wo import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.WorldGenLevel; -#if POST_MC_1_18_1 +#if POST_MC_1_18_2 import net.minecraft.world.level.levelgen.structure.StructureCheck; #endif @@ -35,7 +35,7 @@ public final class ThreadedParameters final ServerLevel level; public WorldGenStructFeatManager structFeat = null; - #if POST_MC_1_18_1 + #if POST_MC_1_18_2 public StructureCheck structCheck; #endif boolean isValid = true; @@ -63,7 +63,7 @@ public final class ThreadedParameters previousGlobalParameters = param; this.level = param.level; - #if PRE_MC_1_18_1 + #if PRE_MC_1_18_2 this.structFeat = new WorldGenStructFeatManager(param.worldGenSettings, level); #elif PRE_MC_1_19 this.structCheck = this.createStructureCheck(param); @@ -81,14 +81,14 @@ public final class ThreadedParameters public void makeStructFeat(WorldGenLevel genLevel, GlobalParameters param) { #if PRE_MC_1_19_4 - structFeat = new WorldGenStructFeatManager(param.worldGenSettings, genLevel #if POST_MC_1_18_1, structCheck #endif); + structFeat = new WorldGenStructFeatManager(param.worldGenSettings, genLevel #if POST_MC_1_18_2, structCheck #endif); #else structFeat = new WorldGenStructFeatManager(param.worldOptions, genLevel, structCheck); #endif } - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 public void recreateStructureCheck() { if (previousGlobalParameters != null) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/ChunkLoader.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/ChunkLoader.java index 9ae23696c..8ffbb17d0 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/ChunkLoader.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/ChunkLoader.java @@ -54,9 +54,9 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.*; import net.minecraft.world.level.chunk.storage.ChunkSerializer; import net.minecraft.world.level.levelgen.Heightmap; -#if POST_MC_1_18_1 +#if POST_MC_1_18_2 import net.minecraft.world.level.levelgen.blending.BlendingData; -#if PRE_MC_1_19 +#if PRE_MC_1_19_2 import net.minecraft.world.level.levelgen.feature.StructureFeature; #endif import net.minecraft.world.level.levelgen.structure.StructureStart; @@ -66,7 +66,7 @@ import net.minecraft.world.ticks.LevelChunkTicks; #if POST_MC_1_18_2 import net.minecraft.core.Holder; import net.minecraft.core.RegistryAccess; -#if PRE_MC_1_19 +#if PRE_MC_1_19_2 import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature; #endif #endif @@ -78,9 +78,9 @@ import org.apache.logging.log4j.Logger; public class ChunkLoader { - #if POST_MC_1_19 + #if POST_MC_1_19_2 private static final Codec> BLOCK_STATE_CODEC = PalettedContainer.codecRW(Block.BLOCK_STATE_REGISTRY, BlockState.CODEC, PalettedContainer.Strategy.SECTION_STATES, Blocks.AIR.defaultBlockState()); - #elif POST_MC_1_18_1 + #elif POST_MC_1_18_2 private static final Codec> BLOCK_STATE_CODEC = PalettedContainer.codec(Block.BLOCK_STATE_REGISTRY, BlockState.CODEC, PalettedContainer.Strategy.SECTION_STATES, Blocks.AIR.defaultBlockState()); #endif private static final String TAG_UPGRADE_DATA = "UpgradeData"; @@ -90,7 +90,7 @@ public class ChunkLoader private static final String FLUID_TICKS_TAG_PRE18 = "LiquidTicks"; private static final ConfigBasedLogger LOGGER = BatchGenerationEnvironment.LOAD_LOGGER; - #if POST_MC_1_18_1 + #if POST_MC_1_18_2 private static BlendingData readBlendingData(CompoundTag chunkData) { BlendingData blendingData = null; @@ -106,7 +106,7 @@ public class ChunkLoader private static LevelChunkSection[] readSections(LevelAccessor level, LevelLightEngine lightEngine, ChunkPos chunkPos, CompoundTag chunkData) { - #if POST_MC_1_18_1 + #if POST_MC_1_18_2 #if PRE_MC_1_19_4 Registry biomes = level.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY); #else @@ -136,7 +136,7 @@ public class ChunkLoader CompoundTag tagSection = tagSections.getCompound(j); int sectionYPos = tagSection.getByte("Y"); - #if PRE_MC_1_18_1 + #if PRE_MC_1_18_2 if (tagSection.contains("Palette", 9) && tagSection.contains("BlockStates", 12)) { LevelChunkSection levelChunkSection = new LevelChunkSection(sectionYPos << 4); levelChunkSection.getStates().read(tagSection.getList("Palette", 10), @@ -225,7 +225,7 @@ public class ChunkLoader public static LevelChunk read(WorldGenLevel level, LevelLightEngine lightEngine, ChunkPos chunkPos, CompoundTag chunkData) { - #if PRE_MC_1_18_1 + #if PRE_MC_1_18_2 CompoundTag tagLevel = chunkData.getCompound("Level"); #else CompoundTag tagLevel = chunkData; @@ -238,12 +238,12 @@ public class ChunkLoader } ChunkStatus.ChunkType chunkType = readChunkType(tagLevel); - #if PRE_MC_1_18_1 + #if PRE_MC_1_18_2 if (chunkType != ChunkStatus.ChunkType.LEVELCHUNK) return null; #else BlendingData blendingData = readBlendingData(tagLevel); - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 if (chunkType == ChunkStatus.ChunkType.PROTOCHUNK && (blendingData == null || !blendingData.oldNoise())) return null; #else @@ -261,7 +261,7 @@ public class ChunkLoader boolean isLightOn = tagLevel.getBoolean("isLightOn"); if (isLightOn) lightEngine.retainData(chunkPos, true); - #if PRE_MC_1_18_1 + #if PRE_MC_1_18_2 ChunkBiomeContainer chunkBiomeContainer = new ChunkBiomeContainer( level.getLevel().registryAccess().registryOrThrow(Registry.BIOME_REGISTRY)#if POST_MC_1_17_1, level #endif, chunkPos, level.getLevel().getChunkSource().getGenerator().getBiomeSource(), @@ -293,7 +293,7 @@ public class ChunkLoader LevelChunkSection[] levelChunkSections = readSections(level, lightEngine, chunkPos, tagLevel); // ====================== Make the chunk ========================= - #if PRE_MC_1_18_1 + #if PRE_MC_1_18_2 LevelChunk chunk = new LevelChunk((Level) level.getLevel(), chunkPos, chunkBiomeContainer, upgradeData, blockTicks, fluidTicks, inhabitedTime, levelChunkSections, null); #else diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/LightedWorldGenRegion.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/LightedWorldGenRegion.java index 9d7a306cd..315ac4e42 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/LightedWorldGenRegion.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/LightedWorldGenRegion.java @@ -66,7 +66,7 @@ public class LightedWorldGenRegion extends WorldGenRegion private final List cache; Long2ObjectOpenHashMap chunkMap = new Long2ObjectOpenHashMap(); - #if PRE_MC_1_18_1 + #if PRE_MC_1_18_2 private ChunkPos overrideCenterPos = null; public void setOverrideCenter(ChunkPos pos) {overrideCenterPos = pos;} @@ -114,7 +114,7 @@ public class LightedWorldGenRegion extends WorldGenRegion if (k > this.writeRadius || l > this.writeRadius) { return false; } - #if POST_MC_1_18_1 + #if POST_MC_1_18_2 if (center.isUpgrading()) { LevelHeightAccessor levelHeightAccessor = center.getHeightAccessorForGeneration(); if (blockPos.getY() < levelHeightAccessor.getMinBuildHeight() || blockPos.getY() >= levelHeightAccessor.getMaxBuildHeight()) { @@ -220,7 +220,7 @@ public class LightedWorldGenRegion extends WorldGenRegion public ChunkAccess getChunk(int i, int j, ChunkStatus chunkStatus, boolean bl) { ChunkAccess chunk = getChunkAccess(i, j, chunkStatus, bl); if (chunk instanceof LevelChunk) { - chunk = new ImposterProtoChunk((LevelChunk) chunk #if POST_MC_1_18_1, true #endif); + chunk = new ImposterProtoChunk((LevelChunk) chunk #if POST_MC_1_18_2, true #endif); } return chunk; } @@ -284,7 +284,7 @@ public class LightedWorldGenRegion extends WorldGenRegion public int calculateBlockTint(BlockPos blockPos, ColorResolver colorResolver) { - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 int i = (Minecraft.getInstance()).options.biomeBlendRadius; #else int i = (Minecraft.getInstance()).options.biomeBlendRadius().get(); diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/WorldGenLevelLightEngine.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/WorldGenLevelLightEngine.java index 420bb78ad..f28ab6451 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/WorldGenLevelLightEngine.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/WorldGenLevelLightEngine.java @@ -221,7 +221,7 @@ public class WorldGenLevelLightEngine extends LevelLightEngine { if (!LevelChunkSection.isEmpty(levelChunkSection)) { updateSectionStatus(SectionPos.of(chunkPos, i), false); } - #elif PRE_MC_1_18_1 + #elif PRE_MC_1_18_2 if (!LevelChunkSection.isEmpty(levelChunkSection)) { int j = this.levelHeightAccessor.getSectionYFromSectionIndex(i); updateSectionStatus(SectionPos.of(chunkPos, j), false); diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/WorldGenStructFeatManager.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/WorldGenStructFeatManager.java index 6dfab19f9..dbf5a0a86 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/WorldGenStructFeatManager.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/WorldGenStructFeatManager.java @@ -37,41 +37,43 @@ import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkStatus; import net.minecraft.world.level.levelgen.WorldGenSettings; -#if PRE_MC_1_19 +#if PRE_MC_1_19_2 import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature; import net.minecraft.world.level.StructureFeatureManager; #else +#if POST_MC_1_19_4 import net.minecraft.world.level.levelgen.WorldOptions; +#endif import net.minecraft.world.level.levelgen.structure.Structure; import net.minecraft.world.level.StructureManager; #endif -#if POST_MC_1_18_1 +#if POST_MC_1_18_2 import net.minecraft.world.level.levelgen.structure.StructureCheck; #endif import net.minecraft.world.level.levelgen.structure.StructureStart; -#if PRE_MC_1_19 +#if PRE_MC_1_19_2 public class WorldGenStructFeatManager extends StructureFeatureManager { #else public class WorldGenStructFeatManager extends StructureManager { #endif final WorldGenLevel genLevel; - #if PRE_MC_1_19 + #if PRE_MC_1_19_4 WorldGenSettings worldGenSettings; #else WorldOptions worldOptions; #endif - #if POST_MC_1_18_1 + #if POST_MC_1_18_2 StructureCheck structureCheck; #endif - #if PRE_MC_1_19 + #if PRE_MC_1_19_4 public WorldGenStructFeatManager(WorldGenSettings worldGenSettings, - WorldGenLevel genLevel #if POST_MC_1_18_1 , StructureCheck structureCheck #endif ) { + WorldGenLevel genLevel #if POST_MC_1_18_2 , StructureCheck structureCheck #endif ) { - super(genLevel, worldGenSettings #if POST_MC_1_18_1 , structureCheck #endif ); + super(genLevel, worldGenSettings #if POST_MC_1_18_2 , structureCheck #endif ); this.genLevel = genLevel; this.worldGenSettings = worldGenSettings; } @@ -89,8 +91,8 @@ public class WorldGenStructFeatManager extends StructureManager { public WorldGenStructFeatManager forWorldGenRegion(WorldGenRegion worldGenRegion) { if (worldGenRegion == genLevel) return this; - #if PRE_MC_1_19 - return new WorldGenStructFeatManager(worldGenSettings, worldGenRegion #if POST_MC_1_18_1 , structureCheck #endif ); + #if PRE_MC_1_19_4 + return new WorldGenStructFeatManager(worldGenSettings, worldGenRegion #if POST_MC_1_18_2 , structureCheck #endif ); #else return new WorldGenStructFeatManager(worldOptions, worldGenRegion, structureCheck); #endif @@ -101,7 +103,7 @@ public class WorldGenStructFeatManager extends StructureManager { return genLevel.getChunk(x, z, status, false); } - #if PRE_MC_1_18_1 + #if PRE_MC_1_18_2 @Override public Stream> startsForFeature(SectionPos sectionPos2, StructureFeature structureFeature) { @@ -149,7 +151,7 @@ public class WorldGenStructFeatManager extends StructureManager { return builder.build(); } #else - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 @Override public List startsForFeature(SectionPos sectionPos, Predicate> predicate) { ChunkAccess chunk = _getChunk(sectionPos.x(), sectionPos.z(), ChunkStatus.STRUCTURE_REFERENCES); diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepBiomes.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepBiomes.java index a2d4592fc..274d23bc4 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepBiomes.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepBiomes.java @@ -26,12 +26,12 @@ import com.seibel.distanthorizons.common.wrappers.worldGeneration.BatchGeneratio import com.seibel.distanthorizons.common.wrappers.worldGeneration.ThreadedParameters; import net.minecraft.server.level.WorldGenRegion; -#if PRE_MC_1_19 +#if PRE_MC_1_19_2 #endif import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkStatus; import net.minecraft.world.level.chunk.ProtoChunk; -#if POST_MC_1_18_1 +#if POST_MC_1_18_2 import net.minecraft.world.level.levelgen.blending.Blender; #endif @@ -64,12 +64,12 @@ public final class StepBiomes { for (ChunkAccess chunk : chunksToDo) { // System.out.println("StepBiomes: "+chunk.getPos()); - #if PRE_MC_1_18_1 + #if PRE_MC_1_18_2 environment.params.generator.createBiomes(environment.params.biomes, chunk); #elif PRE_MC_1_19 chunk = environment.joinSync(environment.params.generator.createBiomes(environment.params.biomes, Runnable::run, Blender.of(worldGenRegion), tParams.structFeat.forWorldGenRegion(worldGenRegion), chunk)); - #elif PRE_MC_1_19_3 + #elif PRE_MC_1_19_4 chunk = environment.joinSync(environment.params.generator.createBiomes(environment.params.biomes, Runnable::run, environment.params.randomState, Blender.of(worldGenRegion), tParams.structFeat.forWorldGenRegion(worldGenRegion), chunk)); #else diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepFeatures.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepFeatures.java index d543c36ea..7c1dd8857 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepFeatures.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepFeatures.java @@ -31,7 +31,7 @@ import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkStatus; import net.minecraft.world.level.chunk.ProtoChunk; import net.minecraft.world.level.levelgen.Heightmap; -#if POST_MC_1_18_1 +#if POST_MC_1_18_2 #endif public final class StepFeatures { @@ -62,7 +62,7 @@ public final class StepFeatures { for (ChunkAccess chunk : chunksToDo) { try { - #if PRE_MC_1_18_1 + #if PRE_MC_1_18_2 worldGenRegion.setOverrideCenter(chunk.getPos()); environment.params.generator.applyBiomeDecoration(worldGenRegion, tParams.structFeat); Heightmap.primeHeightmaps(chunk, STATUS.heightmapsAfter()); diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepLight.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepLight.java index 0a0e6feff..5b232cf4c 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepLight.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepLight.java @@ -72,7 +72,7 @@ public final class StepLight { } catch (Exception e) { e.printStackTrace(); } - #if POST_MC_1_18_1 && PRE_MC_1_20_1 + #if POST_MC_1_18_2 && PRE_MC_1_20_1 if (chunk instanceof LevelChunk) ((LevelChunk)chunk).setClientLightReady(true); #elif POST_MC_1_20_1 lightEngine.setLightEnabled(chunk.getPos(), true); diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepNoise.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepNoise.java index 708e2df1e..a10d3aaa7 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepNoise.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepNoise.java @@ -29,12 +29,12 @@ import com.seibel.distanthorizons.core.util.objects.UncheckedInterruptedExceptio import net.minecraft.server.level.WorldGenRegion; #if POST_MC_1_17_1 #endif -#if PRE_MC_1_19 +#if PRE_MC_1_19_2 #endif import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkStatus; import net.minecraft.world.level.chunk.ProtoChunk; -#if POST_MC_1_18_1 +#if POST_MC_1_18_2 import net.minecraft.world.level.levelgen.blending.Blender; #endif @@ -69,7 +69,7 @@ public final class StepNoise { // System.out.println("StepNoise: "+chunk.getPos()); #if PRE_MC_1_17_1 environment.params.generator.fillFromNoise(worldGenRegion, tParams.structFeat, chunk); - #elif PRE_MC_1_18_1 + #elif PRE_MC_1_18_2 chunk = environment.joinSync(environment.params.generator.fillFromNoise(Runnable::run, tParams.structFeat.forWorldGenRegion(worldGenRegion), chunk)); #elif PRE_MC_1_19 diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepStructureReference.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepStructureReference.java index 398a3a2e0..3d44e6e86 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepStructureReference.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepStructureReference.java @@ -26,7 +26,7 @@ import com.seibel.distanthorizons.common.wrappers.worldGeneration.BatchGeneratio import com.seibel.distanthorizons.common.wrappers.worldGeneration.ThreadedParameters; import net.minecraft.server.level.WorldGenRegion; -#if PRE_MC_1_19 +#if PRE_MC_1_19_2 #endif import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkStatus; diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepStructureStart.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepStructureStart.java index ec54401e3..ec22126a9 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepStructureStart.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepStructureStart.java @@ -72,18 +72,20 @@ public final class StepStructureStart } } - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 if (environment.params.worldGenSettings.generateFeatures()) { - #elif POST_MC_1_19 + #elif PRE_MC_1_19_4 + if (environment.params.worldGenSettings.generateStructures()) { + #else if (environment.params.worldOptions.generateStructures()) { #endif for (ChunkAccess chunk : chunksToDo) { // System.out.println("StepStructureStart: "+chunk.getPos()); - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 environment.params.generator.createStructures(environment.params.registry, tParams.structFeat, chunk, environment.params.structures, environment.params.worldSeed); - #elif PRE_MC_1_19_3 + #elif PRE_MC_1_19_4 environment.params.generator.createStructures(environment.params.registry, environment.params.randomState, tParams.structFeat, chunk, environment.params.structures, environment.params.worldSeed); #else @@ -91,7 +93,7 @@ public final class StepStructureStart environment.params.level.getChunkSource().getGeneratorState(), tParams.structFeat, chunk, environment.params.structures); #endif - #if POST_MC_1_18_1 + #if POST_MC_1_18_2 try { tParams.structCheck.onStructureLoad(chunk.getPos(), chunk.getAllStarts()); diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepSurface.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepSurface.java index 8ad23bad3..112969c5e 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepSurface.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepSurface.java @@ -58,7 +58,7 @@ public final class StepSurface { for (ChunkAccess chunk : chunksToDo) { // System.out.println("StepSurface: "+chunk.getPos()); - #if PRE_MC_1_18_1 + #if PRE_MC_1_18_2 environment.params.generator.buildSurfaceAndBedrock(worldGenRegion, chunk); #elif PRE_MC_1_19 environment.params.generator.buildSurface(worldGenRegion, tParams.structFeat.forWorldGenRegion(worldGenRegion), chunk); diff --git a/common/src/main/resources/1_19_2.distanthorizons.accesswidener b/common/src/main/resources/1_19_2.distanthorizons.accesswidener new file mode 100644 index 000000000..bd847717b --- /dev/null +++ b/common/src/main/resources/1_19_2.distanthorizons.accesswidener @@ -0,0 +1,39 @@ +accessWidener v1 named + +# used when determining where to save files to +accessible field net/minecraft/world/level/storage/DimensionDataStorage dataFolder Ljava/io/File; + +# used when rendering +accessible method net/minecraft/client/renderer/GameRenderer getFov (Lnet/minecraft/client/Camera;FZ)D + +# used for grabbing vanilla rendered chunks +accessible field net/minecraft/client/renderer/LevelRenderer renderChunkStorage Ljava/util/concurrent/atomic/AtomicReference; +accessible class net/minecraft/client/renderer/LevelRenderer$RenderChunkStorage +accessible class net/minecraft/client/renderer/LevelRenderer$RenderChunkInfo +accessible field net/minecraft/client/renderer/LevelRenderer$RenderChunkInfo chunk Lnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher$RenderChunk; + +# world generation +accessible method net/minecraft/world/level/lighting/LayerLightEngine queueSectionData (JLnet/minecraft/world/level/chunk/DataLayer;Z)V +accessible field net/minecraft/world/level/chunk/LevelChunk loaded Z + +# lod generation from save file +accessible field net/minecraft/world/level/chunk/storage/ChunkStorage worker Lnet/minecraft/world/level/chunk/storage/IOWorker; +accessible field net/minecraft/world/level/chunk/storage/IOWorker storage Lnet/minecraft/world/level/chunk/storage/RegionFileStorage; +accessible field net/minecraft/world/level/chunk/storage/RegionFileStorage regionCache Lit/unimi/dsi/fastutil/longs/Long2ObjectLinkedOpenHashMap; +accessible field net/minecraft/world/level/chunk/storage/RegionFileStorage folder Ljava/nio/file/Path; + +# grabbing textures +accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite animatedTexture Lnet/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture; +accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite width I +accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite height I +accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite mainImage [Lcom/mojang/blaze3d/platform/NativeImage; +accessible class net/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture +accessible method net/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture getFrameX (I)I +accessible method net/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture getFrameY (I)I +extendable class com/mojang/math/Matrix4f + + +# hacky stuff +accessible field net/minecraft/util/ThreadingDetector lock Ljava/util/concurrent/Semaphore; +mutable field net/minecraft/util/ThreadingDetector lock Ljava/util/concurrent/Semaphore; +accessible field net/minecraft/client/gui/components/AbstractSelectionList scrollAmount D # Hack to bypass vanilla's setScrollAmount's clamp diff --git a/common/src/main/resources/1_19.distanthorizons.accesswidener b/common/src/main/resources/1_19_4.distanthorizons.accesswidener similarity index 100% rename from common/src/main/resources/1_19.distanthorizons.accesswidener rename to common/src/main/resources/1_19_4.distanthorizons.accesswidener diff --git a/coreSubProjects b/coreSubProjects index 98634e2a0..e2a3f23e9 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 98634e2a0b3f965f57b7fc886c38e895554be06d +Subproject commit e2a3f23e9172cf947e12ba0df82b91861f2b7280 diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java index 17818f2c3..4e67240bb 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java @@ -97,7 +97,7 @@ public class FabricClientProxy // ClientChunkLoadEvent // TODO: Is using setClientLightReady one still better? - //#if PRE_MC_1_18_1 // in 1.18+, we use mixin hook in setClientLightReady(true) + //#if PRE_MC_1_18_2 // in 1.18+, we use mixin hook in setClientLightReady(true) ClientChunkEvents.CHUNK_LOAD.register((level, chunk) -> { ClientLevelWrapper wrappedLevel = ClientLevelWrapper.getWrapper(level); diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientLevel.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientLevel.java index 0ff222d21..cee606b3f 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientLevel.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientLevel.java @@ -44,13 +44,13 @@ public class MixinClientLevel // @Inject(method = "", at = @At("TAIL")) // private void loadWorldEvent(ClientPacketListener clientPacketListener, ClientLevel.ClientLevelData clientLevelData, ResourceKey resourceKey, // #if POST_MC_1_18_2 Holder holder, #else DimensionType dimensionType, #endif int i, -// #if POST_MC_1_18_1 int j, #endif Supplier supplier, LevelRenderer levelRenderer, boolean bl, long l, CallbackInfo ci) +// #if POST_MC_1_18_2 int j, #endif Supplier supplier, LevelRenderer levelRenderer, boolean bl, long l, CallbackInfo ci) // { // ClientApi.INSTANCE.clientLevelLoadEvent(WorldWrapper.getWorldWrapper((ClientLevel)(Object)this)); // } // Moved to overriding the enableChunkLight(...) method over at ClientPacketListener for 1.20+ - #if POST_MC_1_18_1 && PRE_MC_1_20_1 // Only the setLightReady is only available after 1.18. This ensures the light data is ready. + #if POST_MC_1_18_2 && PRE_MC_1_20_1 // Only the setLightReady is only available after 1.18. This ensures the light data is ready. @Inject(method = "setLightReady", at = @At("HEAD")) private void onChunkLightReady(int x, int z, CallbackInfo ci) { diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientPacketListener.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientPacketListener.java index 240029c97..7a282532b 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientPacketListener.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientPacketListener.java @@ -40,7 +40,7 @@ public class MixinClientPacketListener @Inject(method = "handleRespawn", at = @At("RETURN")) void onHandleRespawnEnd(CallbackInfo ci) { ClientApi.INSTANCE.clientLevelLoadEvent(ClientLevelWrapper.getWrapper(level)); } - #if PRE_MC_1_19 + #if PRE_MC_1_19_4 @Inject(method = "cleanup", at = @At("HEAD")) #else @Inject(method = "close", at = @At("HEAD")) diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinFogRenderer.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinFogRenderer.java index a9f0d2b72..e38c60e89 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinFogRenderer.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinFogRenderer.java @@ -47,7 +47,7 @@ public class MixinFogRenderer { private static final float A_EVEN_LARGER_VALUE = 42069420694206942069.F; @Inject(at = @At("RETURN"), method = "setupFog") - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 private static void disableSetupFog(Camera camera, FogMode fogMode, float f, boolean bl, CallbackInfo callback) { #else private static void disableSetupFog(Camera camera, FogMode fogMode, float f, boolean bl, float g, CallbackInfo callback) { diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinOptionsScreen.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinOptionsScreen.java index 3391a5547..acd8f5d81 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinOptionsScreen.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinOptionsScreen.java @@ -26,7 +26,7 @@ import com.seibel.distanthorizons.core.config.Config; import net.minecraft.client.gui.screens.OptionsScreen; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; -#if PRE_MC_1_19 +#if PRE_MC_1_19_2 import net.minecraft.network.chat.TranslatableComponent; #endif import net.minecraft.resources.ResourceLocation; @@ -68,7 +68,7 @@ public class MixinOptionsScreen extends Screen { // For now it goes to the client option by default (buttonWidget) -> Objects.requireNonNull(minecraft).setScreen(GetConfigScreen.getScreen(this)), // Add a title to the utton - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 new TranslatableComponent(ModInfo.ID + ".title"))); #else Component.translatable(ModInfo.ID + ".title"))); diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/server/MixinChunkGenerator.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/server/MixinChunkGenerator.java index 6d7e961d9..5d70059d7 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/server/MixinChunkGenerator.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/server/MixinChunkGenerator.java @@ -22,7 +22,7 @@ package com.seibel.distanthorizons.fabric.mixins.server; import org.spongepowered.asm.mixin.Mixin; import net.minecraft.world.level.chunk.ChunkGenerator; -#if PRE_MC_1_18_1 +#if PRE_MC_1_18_2 import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/server/MixinUtilBackgroundThread.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/server/MixinUtilBackgroundThread.java index eb1d2e055..0d11a7f9d 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/server/MixinUtilBackgroundThread.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/server/MixinUtilBackgroundThread.java @@ -61,7 +61,7 @@ public class MixinUtilBackgroundThread } } #endif - #if POST_MC_1_18_1 + #if POST_MC_1_18_2 @Inject(method = "wrapThreadWithTaskName(Ljava/lang/String;Ljava/util/function/Supplier;)Ljava/util/function/Supplier;", at = @At("HEAD"), cancellable = true) private static void overrideUtil$wrapThreadWithTaskNameForSupplier(String string, Supplier r, CallbackInfoReturnable> ci) diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/server/unsafe/MixinThreadingDetector.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/server/unsafe/MixinThreadingDetector.java index 22f0ad6c7..dd05d29f4 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/server/unsafe/MixinThreadingDetector.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/server/unsafe/MixinThreadingDetector.java @@ -22,7 +22,7 @@ package com.seibel.distanthorizons.fabric.mixins.server.unsafe; import org.spongepowered.asm.mixin.Mixin; //FIXME: Is this still needed? -#if POST_MC_1_18_1 +#if POST_MC_1_18_2 import net.minecraft.util.ThreadingDetector; import org.spongepowered.asm.mixin.Mutable; diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/wrappers/modAccessor/SodiumAccessor.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/wrappers/modAccessor/SodiumAccessor.java index 33c13c956..f3b4c1e55 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/wrappers/modAccessor/SodiumAccessor.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/wrappers/modAccessor/SodiumAccessor.java @@ -64,7 +64,7 @@ public class SodiumAccessor implements ISodiumAccessor { SodiumWorldRenderer renderer = SodiumWorldRenderer.instance(); LevelHeightAccessor height = Minecraft.getInstance().level; - #if POST_MC_1_18_1 + #if POST_MC_1_18_2 // 0b11 = Lighted chunk & loaded chunk return renderer.getChunkTracker().getChunks(0b00).filter( (long l) -> { diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeClientProxy.java b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeClientProxy.java index 1ba0a8356..d1e184feb 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeClientProxy.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeClientProxy.java @@ -27,7 +27,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.chunk.IChunkWrapper; import net.minecraft.world.level.LevelAccessor; import net.minecraft.client.multiplayer.ClientLevel; -#if PRE_MC_1_19 +#if PRE_MC_1_19_2 import net.minecraftforge.event.world.ChunkEvent; import net.minecraftforge.event.world.WorldEvent; #else @@ -54,7 +54,7 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; */ public class ForgeClientProxy { - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 private static LevelAccessor GetLevel(WorldEvent e) { return e.getWorld(); } #else private static LevelAccessor GetLevel(LevelEvent e) { return e.getLevel(); } @@ -117,7 +117,7 @@ public class ForgeClientProxy // Register KeyBindings @SubscribeEvent - public void registerKeyBindings(#if PRE_MC_1_19 InputEvent.KeyInputEvent #else InputEvent.Key #endif event) + public void registerKeyBindings(#if PRE_MC_1_19_2 InputEvent.KeyInputEvent #else InputEvent.Key #endif event) { if (Minecraft.getInstance().player == null) return; if (event.getAction() != GLFW.GLFW_PRESS) return; diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeMain.java b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeMain.java index 44934ff0b..de7048ba1 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeMain.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeMain.java @@ -38,7 +38,7 @@ import com.seibel.distanthorizons.forge.wrappers.modAccessor.OptifineAccessor; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.core.Direction; -#if POST_MC_1_19 +#if POST_MC_1_19_2 import net.minecraft.util.RandomSource; #endif import net.minecraft.world.level.ColorResolver; @@ -63,7 +63,7 @@ import net.minecraftforge.client.ConfigScreenHandler; import org.apache.logging.log4j.Logger; // these imports change due to forge refactoring classes in 1.19 -#if PRE_MC_1_19 +#if PRE_MC_1_19_2 import net.minecraftforge.client.model.data.ModelDataMap; import java.util.Random; #else @@ -168,13 +168,13 @@ public class ForgeMain implements LodForgeMethodCaller #endif @Override - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 public List getQuads(MinecraftClientWrapper mc, Block block, BlockState blockState, Direction direction, Random random) { return mc.getModelManager().getBlockModelShaper().getBlockModel(block.defaultBlockState()).getQuads(blockState, direction, random, modelData); } #else public List getQuads(MinecraftClientWrapper mc, Block block, BlockState blockState, Direction direction, RandomSource random) { - return mc.getModelManager().getBlockModelShaper().getBlockModel(block.defaultBlockState()).getQuads(blockState, direction, random, modelData #if POST_MC_1_19, RenderType.solid() #endif); + return mc.getModelManager().getBlockModelShaper().getBlockModel(block.defaultBlockState()).getQuads(blockState, direction, random, modelData #if POST_MC_1_19_2, RenderType.solid() #endif); } #endif diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeServerProxy.java b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeServerProxy.java index cd93deb36..05011d444 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeServerProxy.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeServerProxy.java @@ -17,7 +17,7 @@ import net.minecraft.world.level.LevelAccessor; import net.minecraftforge.event.TickEvent; import net.minecraftforge.event.server.ServerAboutToStartEvent; import net.minecraftforge.event.server.ServerStoppingEvent; -#if PRE_MC_1_19 +#if PRE_MC_1_19_2 import net.minecraftforge.event.world.ChunkEvent; import net.minecraftforge.event.world.WorldEvent; #else @@ -31,7 +31,7 @@ import java.util.function.Supplier; public class ForgeServerProxy { - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 private static LevelAccessor GetLevel(WorldEvent e) { return e.getWorld(); } #else private static LevelAccessor GetLevel(LevelEvent e) { return e.getLevel(); } diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinClientPacketListener.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinClientPacketListener.java index f52d5e66d..c3e956bf3 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinClientPacketListener.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinClientPacketListener.java @@ -38,7 +38,7 @@ public class MixinClientPacketListener @Inject(method = "handleRespawn", at = @At("RETURN")) void onHandleRespawnEnd(CallbackInfo ci) { ClientApi.INSTANCE.clientLevelLoadEvent(ClientLevelWrapper.getWrapper(level)); } - #if PRE_MC_1_19 + #if PRE_MC_1_19_4 @Inject(method = "cleanup", at = @At("HEAD")) #else @Inject(method = "close", at = @At("HEAD")) diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinOptionsScreen.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinOptionsScreen.java index 58a2ffa13..0116bf190 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinOptionsScreen.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinOptionsScreen.java @@ -26,7 +26,7 @@ import com.seibel.distanthorizons.core.config.Config; import net.minecraft.client.gui.screens.OptionsScreen; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; -#if PRE_MC_1_19 +#if PRE_MC_1_19_2 import net.minecraft.network.chat.TranslatableComponent; #endif import net.minecraft.resources.ResourceLocation; @@ -68,7 +68,7 @@ public class MixinOptionsScreen extends Screen { // For now it goes to the client option by default (buttonWidget) -> Objects.requireNonNull(minecraft).setScreen(GetConfigScreen.getScreen(this)), // Add a title to the button - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 new TranslatableComponent(ModInfo.ID + ".title"))); #else Component.translatable(ModInfo.ID + ".title"))); diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/server/MixinChunkGenerator.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/server/MixinChunkGenerator.java index 5c6b295a9..86229a7b0 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/server/MixinChunkGenerator.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/server/MixinChunkGenerator.java @@ -22,7 +22,7 @@ package com.seibel.distanthorizons.forge.mixins.server; import org.spongepowered.asm.mixin.Mixin; import net.minecraft.world.level.chunk.ChunkGenerator; -#if PRE_MC_1_18_1 +#if PRE_MC_1_18_2 import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/server/MixinUtilBackgroundThread.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/server/MixinUtilBackgroundThread.java index 59606495d..fc3ae6dee 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/server/MixinUtilBackgroundThread.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/server/MixinUtilBackgroundThread.java @@ -61,7 +61,7 @@ public class MixinUtilBackgroundThread } } #endif - #if POST_MC_1_18_1 + #if POST_MC_1_18_2 @Inject(method = "wrapThreadWithTaskName(Ljava/lang/String;Ljava/util/function/Supplier;)Ljava/util/function/Supplier;", at = @At("HEAD"), cancellable = true) private static void overrideUtil$wrapThreadWithTaskNameForSupplier(String string, Supplier r, CallbackInfoReturnable> ci) diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/server/unsafe/MixinThreadingDetector.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/server/unsafe/MixinThreadingDetector.java index 09115940a..4f25ddfb1 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/server/unsafe/MixinThreadingDetector.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/server/unsafe/MixinThreadingDetector.java @@ -19,7 +19,7 @@ package com.seibel.distanthorizons.forge.mixins.server.unsafe; import org.spongepowered.asm.mixin.Mixin; -#if POST_MC_1_18_1 +#if POST_MC_1_18_2 import net.minecraft.util.ThreadingDetector; import org.spongepowered.asm.mixin.Mutable; diff --git a/gradle.properties b/gradle.properties index b9a94aac6..ee05a65ce 100644 --- a/gradle.properties +++ b/gradle.properties @@ -33,4 +33,4 @@ versionStr= # This defines what MC version Intellij will use for the preprocessor # and what version is used automatically by build and run commands -mcVer=1.18.2 +mcVer=1.19.2 diff --git a/versionProperties/1.18.1.properties b/versionProperties/1.18.1.properties deleted file mode 100644 index ad70e49b4..000000000 --- a/versionProperties/1.18.1.properties +++ /dev/null @@ -1,50 +0,0 @@ -# @Depricated -# Support will be removed soon - -# 1.18.1 version - - - -#java_version = 17 -#minecraft_version=1.18.1 -#parchment_version=2022.03.06 -#compatible_minecraft_versions=["1.18", "1.18.1"] -#accessWidenerVersion=1_18 -#builds_for=fabric,forge -# -## Fabric loader -#fabric_loader_version=0.13.3 -#fabric_api_version=0.46.6+1.18 -# # Fabric mod versions -# modmenu_version=3.0.1 -# starlight_version_fabric=3554912 -# phosphor_version_fabric=3573395 -# lithium_version=mc1.18.1-0.7.7 -# sodium_version=mc1.18.1-0.4.0-alpha6 -# iris_version=1.18.x-v1.2.5 -# bclib_version=1.2.5 -# immersive_portals_version=v1.0.4-1.18 -# -# # Fabric mod run -# # 0 = Don't enable and don't run -# # 1 = Can be referenced in code but doesn't run -# # 2 = Can be referenced in code and runs in client -# enable_starlight=0 -# enable_phosphor=0 -# enable_sodium=1 -# enable_lithium=0 -# enable_iris=0 -# enable_bclib=0 -# -## Forge loader -#forge_version=39.1.2 -# # Forge mod versions -# starlight_version_forge=3559934 -# terraforged_version= -# -# # Forge mod run -# # 0 = Don't enable and don't run -# # 1 = Can be referenced in code but doesn't run -# # 2 = Can be referenced in code and runs in client -# enable_starlight_forge=0 -# enable_terraforged=0 diff --git a/versionProperties/1.19.2.properties b/versionProperties/1.19.2.properties index 4a5b258fd..136714073 100644 --- a/versionProperties/1.19.2.properties +++ b/versionProperties/1.19.2.properties @@ -3,7 +3,7 @@ java_version = 17 minecraft_version=1.19.2 parchment_version=1.19.2:2022.11.27 compatible_minecraft_versions=["1.19.2"] -accessWidenerVersion=1_19 +accessWidenerVersion=1_19_2 builds_for=fabric,forge # Fabric loader diff --git a/versionProperties/1.19.4.properties b/versionProperties/1.19.4.properties index 33bcf8e31..0b9afab72 100644 --- a/versionProperties/1.19.4.properties +++ b/versionProperties/1.19.4.properties @@ -3,7 +3,7 @@ java_version = 17 minecraft_version=1.19.4 parchment_version=1.19.3:2023.03.12 compatible_minecraft_versions=["1.19.4"] -accessWidenerVersion=1_19 +accessWidenerVersion=1_19_4 builds_for=fabric,forge # Fabric loader diff --git a/versionProperties/1.19.properties b/versionProperties/1.19.properties deleted file mode 100644 index 94a8eed32..000000000 --- a/versionProperties/1.19.properties +++ /dev/null @@ -1,47 +0,0 @@ -# 1.19 version -java_version = 17 -minecraft_version=1.19 -parchment_version=1.19.2:2022.11.27 -compatible_minecraft_versions=["1.19"] -accessWidenerVersion=1_19 -builds_for=fabric,forge - -# Fabric loader -fabric_loader_version=0.14.21 -fabric_api_version=0.58.0+1.19 - # Fabric mod versions - modmenu_version=4.0.4 - starlight_version_fabric= - phosphor_version_fabric= - lithium_version= - sodium_version=mc1.19.2-0.4.4 - iris_version=1.6.4+1.19.2 - bclib_version=2.1.6 - immersive_portals_version= - canvas_version=mc119-1.0.2453 - - # Fabric mod run - # 0 = Don't enable and don't run - # 1 = Can be referenced in code but doesn't run - # 2 = Can be referenced in code and runs in client - enable_starlight=0 - enable_phosphor=0 - enable_sodium=1 - enable_lithium=0 - enable_iris=0 - enable_bclib=1 - enable_immersive_portals=0 - enable_canvas=0 - -# Forge loader -forge_version=41.1.0 - # Forge mod versions - starlight_version_forge= - terraforged_version= - - # Forge mod run - # 0 = Don't enable and don't run - # 1 = Can be referenced in code but doesn't run - # 2 = Can be referenced in code and runs in client - enable_starlight_forge=0 - enable_terraforged=0 From 6477408858cf7618d51c62e4bdc79cd41d5ab513 Mon Sep 17 00:00:00 2001 From: TomTheFurry Date: Thu, 29 Jun 2023 16:27:42 +0800 Subject: [PATCH 14/28] Prob fix the gl error? (might add mem leak tho.) & fix 1.18.2 build --- .../common/wrappers/gui/TexturedButtonWidget.java | 2 +- .../common/wrappers/worldGeneration/ThreadedParameters.java | 2 +- .../wrappers/worldGeneration/mimicObject/ChunkLoader.java | 2 +- .../common/wrappers/worldGeneration/step/StepBiomes.java | 2 +- .../common/wrappers/worldGeneration/step/StepNoise.java | 2 +- .../common/wrappers/worldGeneration/step/StepSurface.java | 2 +- coreSubProjects | 2 +- .../main/java/com/seibel/distanthorizons/forge/ForgeMain.java | 4 ++-- gradle.properties | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java index 715dd29ff..57a82f468 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java @@ -44,7 +44,7 @@ public class TexturedButtonWidget extends ImageButton { super(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction, text); } - #if PRE_MC_1_19 + #if PRE_MC_1_19_2 public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, int hoveredVOffset, ResourceLocation texture, int textureWidth, int textureHeight, OnPress pressAction, OnTooltip tooltipSupplier, Component text) { super(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction, tooltipSupplier, text); } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/ThreadedParameters.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/ThreadedParameters.java index 2c20b551d..73e087202 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/ThreadedParameters.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/ThreadedParameters.java @@ -65,7 +65,7 @@ public final class ThreadedParameters this.level = param.level; #if PRE_MC_1_18_2 this.structFeat = new WorldGenStructFeatManager(param.worldGenSettings, level); - #elif PRE_MC_1_19 + #elif PRE_MC_1_19_2 this.structCheck = this.createStructureCheck(param); #else this.structCheck = new StructureCheck(param.chunkScanner, param.registry, param.structures, diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/ChunkLoader.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/ChunkLoader.java index 8ffbb17d0..0ba7c462e 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/ChunkLoader.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/ChunkLoader.java @@ -115,7 +115,7 @@ public class ChunkLoader #if PRE_MC_1_18_2 Codec> biomeCodec = PalettedContainer.codec( biomes, biomes.byNameCodec(), PalettedContainer.Strategy.SECTION_BIOMES, biomes.getOrThrow(Biomes.PLAINS)); - #elif PRE_MC_1_19 + #elif PRE_MC_1_19_2 Codec>> biomeCodec = PalettedContainer.codec( biomes.asHolderIdMap(), biomes.holderByNameCodec(), PalettedContainer.Strategy.SECTION_BIOMES, biomes.getHolderOrThrow(Biomes.PLAINS)); #else diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepBiomes.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepBiomes.java index 274d23bc4..7963bd858 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepBiomes.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepBiomes.java @@ -66,7 +66,7 @@ public final class StepBiomes { // System.out.println("StepBiomes: "+chunk.getPos()); #if PRE_MC_1_18_2 environment.params.generator.createBiomes(environment.params.biomes, chunk); - #elif PRE_MC_1_19 + #elif PRE_MC_1_19_2 chunk = environment.joinSync(environment.params.generator.createBiomes(environment.params.biomes, Runnable::run, Blender.of(worldGenRegion), tParams.structFeat.forWorldGenRegion(worldGenRegion), chunk)); #elif PRE_MC_1_19_4 diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepNoise.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepNoise.java index a10d3aaa7..444e1b7f8 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepNoise.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepNoise.java @@ -72,7 +72,7 @@ public final class StepNoise { #elif PRE_MC_1_18_2 chunk = environment.joinSync(environment.params.generator.fillFromNoise(Runnable::run, tParams.structFeat.forWorldGenRegion(worldGenRegion), chunk)); - #elif PRE_MC_1_19 + #elif PRE_MC_1_19_2 chunk = environment.joinSync(environment.params.generator.fillFromNoise(Runnable::run, Blender.of(worldGenRegion), tParams.structFeat.forWorldGenRegion(worldGenRegion), chunk)); #else diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepSurface.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepSurface.java index 112969c5e..041518bbf 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepSurface.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepSurface.java @@ -60,7 +60,7 @@ public final class StepSurface { // System.out.println("StepSurface: "+chunk.getPos()); #if PRE_MC_1_18_2 environment.params.generator.buildSurfaceAndBedrock(worldGenRegion, chunk); - #elif PRE_MC_1_19 + #elif PRE_MC_1_19_2 environment.params.generator.buildSurface(worldGenRegion, tParams.structFeat.forWorldGenRegion(worldGenRegion), chunk); #else environment.params.generator.buildSurface(worldGenRegion, tParams.structFeat.forWorldGenRegion(worldGenRegion), environment.params.randomState, chunk); diff --git a/coreSubProjects b/coreSubProjects index e2a3f23e9..114d3210f 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit e2a3f23e9172cf947e12ba0df82b91861f2b7280 +Subproject commit 114d3210fb3feb427573e42dd464b7323e8a11b1 diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeMain.java b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeMain.java index de7048ba1..0cf2e3c04 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeMain.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeMain.java @@ -54,7 +54,7 @@ import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.ExtensionPoint; #elif MC_1_17_1 import net.minecraftforge.fmlclient.ConfigGuiHandler; -#elif POST_MC_1_18_2 && PRE_MC_1_19 +#elif POST_MC_1_18_2 && PRE_MC_1_19_2 import net.minecraftforge.client.ConfigGuiHandler; #else import net.minecraftforge.client.ConfigScreenHandler; @@ -124,7 +124,7 @@ public class ForgeMain implements LodForgeMethodCaller #if PRE_MC_1_17_1 ModLoadingContext.get().registerExtensionPoint(ExtensionPoint.CONFIGGUIFACTORY, () -> (client, parent) -> GetConfigScreen.getScreen(parent)); - #elif POST_MC_1_18_2 && PRE_MC_1_19 + #elif POST_MC_1_18_2 && PRE_MC_1_19_2 ModLoadingContext.get().registerExtensionPoint(ConfigGuiHandler.ConfigGuiFactory.class, () -> new ConfigGuiHandler.ConfigGuiFactory((client, parent) -> GetConfigScreen.getScreen(parent))); #else diff --git a/gradle.properties b/gradle.properties index ee05a65ce..b9a94aac6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -33,4 +33,4 @@ versionStr= # This defines what MC version Intellij will use for the preprocessor # and what version is used automatically by build and run commands -mcVer=1.19.2 +mcVer=1.18.2 From c1c4a91bbf2e655ba5fdd044feea061d26184526 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Thu, 29 Jun 2023 20:56:40 -0500 Subject: [PATCH 15/28] add api version and CI building --- .gitlab-ci.yml | 30 ++++++++++++++++++++++++++++++ coreSubProjects | 2 +- gradle.properties | 1 + 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 86d3b9ffd..7d5b71271 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,6 +9,7 @@ stages: - build_1_18_2 - build_1_19_4 - build_1_20_1 + - api - pages variables: @@ -121,6 +122,35 @@ build_1_20_1: allow_failure: true +api: + stage: api + script: + # this should only run for the API + - ./gradlew api:clean --gradle-user-home cache/; + # this also runs unit tests + - ./gradlew api:build --gradle-user-home cache/; + - ./gradlew api:addSourcesToCompiledJar --gradle-user-home cache/; + image: eclipse-temurin:17 + artifacts: + name: "Api_NightlyBuild-${CI_COMMIT_SHORT_SHA}-${CI_COMMIT_TIMESTAMP}" + paths: + - coreSubProjects/api/build/libs/merged/*.jar + # can be uncommented if we don't want a jar with the source code + # - coreSubProjects/api/build/libs/*.jar + exclude: + - coreSubProjects/api/build/libs/merged/*-all.jar + - coreSubProjects/api/build/libs/merged/*-sources.jar + expire_in: 1 day + when: always + cache: + key: "gradleCache" + policy: pull-push + paths: + - .gradle + - cache/ + allow_failure: true + + # generate and publish API javadocs pages: stage: pages diff --git a/coreSubProjects b/coreSubProjects index 98634e2a0..77bc3bd3c 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 98634e2a0b3f965f57b7fc886c38e895554be06d +Subproject commit 77bc3bd3c2e02cd2f3b89e394551de800d66ce65 diff --git a/gradle.properties b/gradle.properties index b9a94aac6..b70b1011b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,6 +6,7 @@ org.gradle.caching=true # Mod Info mod_name=DistantHorizons mod_version=2.0.0-a-dev +api_version=1.0.0 maven_group=com.seibel.distanthorizons mod_readable_name=Distant Horizons mod_description=This mod generates and renders simplified terrain beyond the normal view distance at a low performance cost. Allowing you to see much farther without turning your game into a slideshow. From cd95405c6aa700f191c8d9014f076dc73a154063 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Fri, 30 Jun 2023 07:32:53 -0500 Subject: [PATCH 16/28] update chunk wrapper docs --- .../common/wrappers/WrapperFactory.java | 10 +++++++--- coreSubProjects | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/WrapperFactory.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/WrapperFactory.java index ea931d8bf..a049f4392 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/WrapperFactory.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/WrapperFactory.java @@ -94,7 +94,7 @@ public class WrapperFactory implements IWrapperFactory } } - // MC 1.18 + // MC 1.18, 1.19, 1.20 #if POST_MC_1_17_1 else if (objectArray.length == 2) { @@ -123,7 +123,11 @@ public class WrapperFactory implements IWrapperFactory #else // Intentional compiler error to bring attention to the missing wrapper function. // If you need to work on an unimplemented version but don't have the ability to implement this yet - // you can comment it out, but please don't commit it. Someone will have to implement it + // you can comment it out, but please don't commit it. Someone will have to implement it . + + // After implementing the new version please read this method's javadocs for instructions + // on what other locations also need to be updated, the DhAPI specifically needs to + // be updated to state which objects this method accepts. not implemented for this version of Minecraft! #endif } @@ -137,7 +141,7 @@ public class WrapperFactory implements IWrapperFactory "Chunk wrapper creation failed. \n" + "Expected parameters: \n"); - // MC 1.18 + // MC 1.18, 1.19, 1.20 #if POST_MC_1_17_1 message.append("["+ChunkAccess.class.getName()+"], \n"); message.append("["+LevelReader.class.getName()+"]. \n"); diff --git a/coreSubProjects b/coreSubProjects index b9cfe535d..10b916118 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit b9cfe535d1073d624782d794c0d1f569b8103437 +Subproject commit 10b9161188deb2e676d611d6d38bbbbfad79990e From 6fca33e4963fe8ffd7015d76a426c6bfa11086cf Mon Sep 17 00:00:00 2001 From: TomTheFurry Date: Sun, 2 Jul 2023 18:32:15 +0800 Subject: [PATCH 17/28] Fix a crash on game startup, and fix world gen compat with TFC (TerraFirmaCraft) --- .../BatchGenerationEnvironment.java | 110 +++++++++++++----- .../mimicObject/LightedWorldGenRegion.java | 2 +- .../worldGeneration/step/StepFeatures.java | 2 + coreSubProjects | 2 +- .../mixins/client/MixinGameRenderer.java | 15 ++- forge/build.gradle | 2 + .../mixins/client/MixinGameRenderer.java | 15 ++- versionProperties/1.18.2.properties | 1 + 8 files changed, 113 insertions(+), 36 deletions(-) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/BatchGenerationEnvironment.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/BatchGenerationEnvironment.java index 228ef9e64..924d059df 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/BatchGenerationEnvironment.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/BatchGenerationEnvironment.java @@ -20,6 +20,8 @@ package com.seibel.distanthorizons.common.wrappers.worldGeneration; +import com.google.common.collect.ImmutableMap; +import com.seibel.distanthorizons.api.enums.worldGeneration.EDhApiDistantGeneratorMode; import com.seibel.distanthorizons.api.enums.worldGeneration.EDhApiWorldGenerationStep; import com.seibel.distanthorizons.common.wrappers.world.ServerLevelWrapper; import com.seibel.distanthorizons.common.wrappers.worldGeneration.mimicObject.*; @@ -191,7 +193,21 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv } public static ThreadLocal isDistantGeneratorThread = new ThreadLocal<>(); + public static ThreadLocal onDistantGenerationMixinData = new ThreadLocal<>(); public static boolean isCurrentThreadDistantGeneratorThread() { return (isDistantGeneratorThread.get() != null); } + public static void putDistantGenerationMixinData(Object data) { + LodUtil.assertTrue(isCurrentThreadDistantGeneratorThread()); + onDistantGenerationMixinData.set(data); + } + public static Object getDistantGenerationMixinData() { + LodUtil.assertTrue(isCurrentThreadDistantGeneratorThread()); + return onDistantGenerationMixinData.get(); + } + + public static void clearDistantGenerationMixinData() { + LodUtil.assertTrue(isCurrentThreadDistantGeneratorThread()); + onDistantGenerationMixinData.remove(); + } public static final DhThreadFactory threadFactory = new DhThreadFactory("DH-Gen-Worker-Thread", Thread.MIN_PRIORITY); @@ -200,10 +216,35 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv //==============// // constructors // //==============// - + + public static ImmutableMap BorderNeeded; + public static int MaxBorderNeeded; + static { DependencySetupDoneCheck.getIsCurrentThreadDistantGeneratorThread = BatchGenerationEnvironment::isCurrentThreadDistantGeneratorThread; + + boolean isTerraFirmaCraft = false; + try { + Class.forName("net.dries007.tfc.world.TFCChunkGenerator"); + isTerraFirmaCraft = true; + } catch (ClassNotFoundException e) { + //Ignore + } + EVENT_LOGGER.info("DH TerraFirmaCraft detection: " + isTerraFirmaCraft); + ImmutableMap.Builder builder = ImmutableMap.builder(); + builder.put(EDhApiWorldGenerationStep.EMPTY, 1); + builder.put(EDhApiWorldGenerationStep.STRUCTURE_START, 0); + builder.put(EDhApiWorldGenerationStep.STRUCTURE_REFERENCE, 0); + builder.put(EDhApiWorldGenerationStep.BIOMES, isTerraFirmaCraft ? 1 : 0); + builder.put(EDhApiWorldGenerationStep.NOISE, isTerraFirmaCraft ? 1 : 0); + builder.put(EDhApiWorldGenerationStep.SURFACE, 0); + builder.put(EDhApiWorldGenerationStep.CARVERS, 0); + builder.put(EDhApiWorldGenerationStep.LIQUID_CARVERS, 0); + builder.put(EDhApiWorldGenerationStep.FEATURES, 0); + builder.put(EDhApiWorldGenerationStep.LIGHT, 0); + BorderNeeded = builder.build(); + MaxBorderNeeded = BorderNeeded.values().stream().mapToInt(Integer::intValue).max().getAsInt(); } public BatchGenerationEnvironment(IDhServerLevel serverlevel) @@ -219,12 +260,17 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv if (generator.getClass().toString().equals("class com.terraforged.mod.chunk.TFChunkGenerator")) { EVENT_LOGGER.info("TerraForge Chunk Generator detected: ["+generator.getClass()+"], Distant Generation will try its best to support it."); - EVENT_LOGGER.info("If it does crash, turn Distant Generation off or set it to to ["+EDhApiWorldGenerationStep.EMPTY+"]."); + EVENT_LOGGER.info("If it does crash, turn Distant Generation off or set it to to ["+EDhApiDistantGeneratorMode.PRE_EXISTING_ONLY+"]."); + } + else if (generator.getClass().toString().equals("class net.dries007.tfc.world.TFCChunkGenerator")) + { + EVENT_LOGGER.info("TerraFirmaCraft Chunk Generator detected: ["+generator.getClass()+"], Distant Generation will try its best to support it."); + EVENT_LOGGER.info("If it does crash, turn Distant Generation off or set it to to ["+ EDhApiDistantGeneratorMode.PRE_EXISTING_ONLY +"]."); } else { EVENT_LOGGER.warn("Unknown Chunk Generator detected: ["+generator.getClass()+"], Distant Generation May Fail!"); - EVENT_LOGGER.warn("If it does crash, disable Distant Generation or set the Generation Mode to ["+EDhApiWorldGenerationStep.EMPTY+"]."); + EVENT_LOGGER.warn("If it does crash, disable Distant Generation or set the Generation Mode to ["+EDhApiDistantGeneratorMode.PRE_EXISTING_ONLY+"]."); } } @@ -357,20 +403,29 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv } } } - + + private static ArrayGridList GetCutoutFrom(ArrayGridList total, int border) { + return new ArrayGridList<>(total, border, total.gridSize - border); + } + + private static ArrayGridList GetCutoutFrom(ArrayGridList total, EDhApiWorldGenerationStep step) { + return GetCutoutFrom(total, MaxBorderNeeded - BorderNeeded.get(step)); + } + public void generateLodFromList(GenerationEvent genEvent) throws InterruptedException { EVENT_LOGGER.debug("Lod Generate Event: "+genEvent.minPos); - ArrayGridList referencedChunks; - ArrayGridList genChunks; + ArrayGridList totalChunks; + ArrayGridList finalGenChunks; LightedWorldGenRegion region; WorldGenLevelLightEngine lightEngine; LightGetterAdaptor adaptor; - - int refSize = genEvent.size+2; // +2 for the border referenced chunks - int refPosX = genEvent.minPos.x - 1; // -1 for the border referenced chunks - int refPosZ = genEvent.minPos.z - 1; // -1 for the border referenced chunks + + int borderSize = MaxBorderNeeded; + int refSize = genEvent.size + borderSize * 2; + int refPosX = genEvent.minPos.x - borderSize; + int refPosZ = genEvent.minPos.z - borderSize; try { @@ -399,17 +454,15 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv } return target; }; - - referencedChunks = new ArrayGridList<>(refSize, (x,z) -> generator.generate(x + refPosX,z + refPosZ)); + + totalChunks = new ArrayGridList<>(refSize, (x,z) -> generator.generate(x + refPosX,z + refPosZ)); genEvent.refreshTimeout(); - region = new LightedWorldGenRegion(params.level, lightEngine, referencedChunks, + region = new LightedWorldGenRegion(params.level, lightEngine, totalChunks, ChunkStatus.STRUCTURE_STARTS, refSize/2, generator); adaptor.setRegion(region); genEvent.threadedParam.makeStructFeat(region, params); - genChunks = new ArrayGridList<>(referencedChunks, RANGE_TO_RANGE_EMPTY_EXTENSION, - referencedChunks.gridSize - RANGE_TO_RANGE_EMPTY_EXTENSION); - this.generateDirect(genEvent, genChunks, genEvent.targetGenerationStep, region); + this.generateDirect(genEvent, totalChunks, borderSize, genEvent.targetGenerationStep, region); genEvent.timer.nextEvent("cleanup"); } catch (StepStructureStart.StructStartCorruptedException f) @@ -417,12 +470,13 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv genEvent.threadedParam.markAsInvalid(); throw (RuntimeException)f.getCause(); } - - for (int offsetY = 0; offsetY < genChunks.gridSize; offsetY++) + + finalGenChunks = GetCutoutFrom(totalChunks, borderSize); + for (int offsetY = 0; offsetY < finalGenChunks.gridSize; offsetY++) { - for (int offsetX = 0; offsetX < genChunks.gridSize; offsetX++) + for (int offsetX = 0; offsetX < finalGenChunks.gridSize; offsetX++) { - ChunkAccess target = genChunks.get(offsetX, offsetY); + ChunkAccess target = finalGenChunks.get(offsetX, offsetY); ChunkWrapper wrappedChunk = new ChunkWrapper(target, region, null); if (target instanceof LevelChunk) { ((LevelChunk) target).loaded = true; @@ -472,7 +526,7 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv } } - public void generateDirect(GenerationEvent genEvent, ArrayGridList chunksToGenerate, + public void generateDirect(GenerationEvent genEvent, ArrayGridList chunksToGenerate, int border, EDhApiWorldGenerationStep step, LightedWorldGenRegion region) throws InterruptedException { if (Thread.interrupted()) @@ -500,7 +554,7 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv genEvent.timer.nextEvent("structStart"); throwIfThreadInterrupted(); - stepStructureStart.generateGroup(genEvent.threadedParam, region, chunksToGenerate); + stepStructureStart.generateGroup(genEvent.threadedParam, region, GetCutoutFrom(chunksToGenerate, EDhApiWorldGenerationStep.STRUCTURE_START)); genEvent.refreshTimeout(); if (step == EDhApiWorldGenerationStep.STRUCTURE_START) { @@ -509,7 +563,7 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv genEvent.timer.nextEvent("structRef"); throwIfThreadInterrupted(); - stepStructureReference.generateGroup(genEvent.threadedParam, region, chunksToGenerate); + stepStructureReference.generateGroup(genEvent.threadedParam, region, GetCutoutFrom(chunksToGenerate, EDhApiWorldGenerationStep.STRUCTURE_REFERENCE)); genEvent.refreshTimeout(); if (step == EDhApiWorldGenerationStep.STRUCTURE_REFERENCE) { @@ -518,7 +572,7 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv genEvent.timer.nextEvent("biome"); throwIfThreadInterrupted(); - stepBiomes.generateGroup(genEvent.threadedParam, region, chunksToGenerate); + stepBiomes.generateGroup(genEvent.threadedParam, region, GetCutoutFrom(chunksToGenerate, EDhApiWorldGenerationStep.BIOMES)); genEvent.refreshTimeout(); if (step == EDhApiWorldGenerationStep.BIOMES) { @@ -527,7 +581,7 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv genEvent.timer.nextEvent("noise"); throwIfThreadInterrupted(); - stepNoise.generateGroup(genEvent.threadedParam, region, chunksToGenerate); + stepNoise.generateGroup(genEvent.threadedParam, region, GetCutoutFrom(chunksToGenerate, EDhApiWorldGenerationStep.NOISE)); genEvent.refreshTimeout(); if (step == EDhApiWorldGenerationStep.NOISE) { @@ -536,7 +590,7 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv genEvent.timer.nextEvent("surface"); throwIfThreadInterrupted(); - stepSurface.generateGroup(genEvent.threadedParam, region, chunksToGenerate); + stepSurface.generateGroup(genEvent.threadedParam, region, GetCutoutFrom(chunksToGenerate, EDhApiWorldGenerationStep.SURFACE)); genEvent.refreshTimeout(); if (step == EDhApiWorldGenerationStep.SURFACE) { @@ -552,7 +606,7 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv genEvent.timer.nextEvent("feature"); throwIfThreadInterrupted(); - stepFeatures.generateGroup(genEvent.threadedParam, region, chunksToGenerate); + stepFeatures.generateGroup(genEvent.threadedParam, region, GetCutoutFrom(chunksToGenerate, EDhApiWorldGenerationStep.FEATURES)); genEvent.refreshTimeout(); } finally @@ -566,7 +620,7 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv if (!Thread.interrupted()) { - this.stepLight.generateGroup(region.getLightEngine(), chunksToGenerate); + this.stepLight.generateGroup(region.getLightEngine(), GetCutoutFrom(chunksToGenerate, EDhApiWorldGenerationStep.LIGHT)); } } else diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/LightedWorldGenRegion.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/LightedWorldGenRegion.java index 315ac4e42..9e8bcf453 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/LightedWorldGenRegion.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/LightedWorldGenRegion.java @@ -208,7 +208,7 @@ public class LightedWorldGenRegion extends WorldGenRegion } // Use this instead of super.hasChunk() to bypass C2ME concurrency checks - private boolean superHasChunk(int x, int z) { + public boolean superHasChunk(int x, int z) { int k = x - firstPos.x; int l = z - firstPos.z; return l >= 0 && l < size && k >= 0 && k < size; diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepFeatures.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepFeatures.java index 7c1dd8857..fc5566c84 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepFeatures.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/step/StepFeatures.java @@ -66,10 +66,12 @@ public final class StepFeatures { worldGenRegion.setOverrideCenter(chunk.getPos()); environment.params.generator.applyBiomeDecoration(worldGenRegion, tParams.structFeat); Heightmap.primeHeightmaps(chunk, STATUS.heightmapsAfter()); + BatchGenerationEnvironment.clearDistantGenerationMixinData(); #else environment.params.generator.applyBiomeDecoration(worldGenRegion, chunk, tParams.structFeat.forWorldGenRegion(worldGenRegion)); Heightmap.primeHeightmaps(chunk, STATUS.heightmapsAfter()); + BatchGenerationEnvironment.clearDistantGenerationMixinData(); #endif } catch (ReportedException e) { e.printStackTrace(); diff --git a/coreSubProjects b/coreSubProjects index 10b916118..ea4000602 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 10b9161188deb2e676d611d6d38bbbbfad79990e +Subproject commit ea400060236c06ef8d878abd7535ad871c855058 diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinGameRenderer.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinGameRenderer.java index 54356697f..c2bc8da9d 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinGameRenderer.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinGameRenderer.java @@ -1,5 +1,6 @@ package com.seibel.distanthorizons.fabric.mixins.client; +import com.seibel.distanthorizons.common.wrappers.DependencySetupDoneCheck; import com.seibel.distanthorizons.core.api.internal.ClientApi; import net.minecraft.client.renderer.GameRenderer; import org.apache.logging.log4j.LogManager; @@ -18,14 +19,22 @@ public class MixinGameRenderer #if POST_MC_1_17_1 @Inject(method = "shutdownShaders", at = @At("HEAD")) public void onShutdownShaders(CallbackInfo ci) { - LOGGER.info("Shutting down renderer"); + LOGGER.info("Shutting down renderer (fabric)"); + if (!DependencySetupDoneCheck.isDone) { + LOGGER.warn("Dependency setup is not done yet, skipping renderer this shutdown event!"); + return; + } ClientApi.INSTANCE.rendererShutdownEvent(); } // FIXME: This I think will dup multiple renderStartupEvent calls... - @Inject(method = {"reloadShaders", "preloadUiShader", "preloadShader"}, at = @At("TAIL")) + @Inject(method = {"reloadShaders", "preloadUiShader"}, at = @At("TAIL")) public void onStartupShaders(CallbackInfo ci) { - LOGGER.info("Starting up renderer"); + LOGGER.info("Starting up renderer (fabric)"); + if (!DependencySetupDoneCheck.isDone) { + LOGGER.warn("Dependency setup is not done yet, skipping renderer this startup event!"); + return; + } ClientApi.INSTANCE.rendererStartupEvent(); } #else diff --git a/forge/build.gradle b/forge/build.gradle index e7bf2df9b..4bd1293e4 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -85,6 +85,8 @@ dependencies { addMod("curse.maven:TerraForged-363820:${rootProject.terraforged_version}", rootProject.enable_terraforged) + addMod("curse.maven:TerraFirmaCraft-302973:4616004", rootProject.enable_terrafirmacraft) + // if (System.getProperty("idea.sync.active") != "true") { // annotationProcessor "org.spongepowered:mixin:0.8.4:processor" // } diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinGameRenderer.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinGameRenderer.java index 98e1ac33e..1c39a9204 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinGameRenderer.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinGameRenderer.java @@ -1,5 +1,6 @@ package com.seibel.distanthorizons.forge.mixins.client; +import com.seibel.distanthorizons.common.wrappers.DependencySetupDoneCheck; import com.seibel.distanthorizons.core.api.internal.ClientApi; import net.minecraft.client.renderer.GameRenderer; import org.apache.logging.log4j.LogManager; @@ -18,14 +19,22 @@ public class MixinGameRenderer #if POST_MC_1_17_1 @Inject(method = "shutdownShaders", at = @At("HEAD")) public void onShutdownShaders(CallbackInfo ci) { - LOGGER.info("Shutting down renderer"); + LOGGER.info("Shutting down renderer (forge)"); + if (!DependencySetupDoneCheck.isDone) { + LOGGER.warn("Dependency setup is not done yet, skipping renderer this shutdown event!"); + return; + } ClientApi.INSTANCE.rendererShutdownEvent(); } // FIXME: This I think will dup multiple renderStartupEvent calls... - @Inject(method = {"reloadShaders", "preloadUiShader", "preloadShader"}, at = @At("TAIL")) + @Inject(method = {"reloadShaders", "preloadUiShader"}, at = @At("TAIL")) public void onStartupShaders(CallbackInfo ci) { - LOGGER.info("Starting up renderer"); + LOGGER.info("Starting up renderer (forge)"); + if (!DependencySetupDoneCheck.isDone) { + LOGGER.warn("Dependency setup is not done yet, skipping renderer this startup event!"); + return; + } ClientApi.INSTANCE.rendererStartupEvent(); } #else diff --git a/versionProperties/1.18.2.properties b/versionProperties/1.18.2.properties index 38daea648..86f293243 100644 --- a/versionProperties/1.18.2.properties +++ b/versionProperties/1.18.2.properties @@ -54,3 +54,4 @@ forge_version=40.2.9 # 2 = Can be referenced in code and runs in client enable_starlight_forge=0 enable_terraforged=0 + enable_terrafirmacraft=0 \ No newline at end of file From 79513b6c525f47b4522bd22ad35c052f064ed527 Mon Sep 17 00:00:00 2001 From: TomTheFurry Date: Sun, 2 Jul 2023 18:33:28 +0800 Subject: [PATCH 18/28] Fix build issues --- versionProperties/1.16.5.properties | 1 + versionProperties/1.17.1.properties | 1 + versionProperties/1.19.2.properties | 1 + versionProperties/1.19.4.properties | 1 + versionProperties/1.20.1.properties | 1 + 5 files changed, 5 insertions(+) diff --git a/versionProperties/1.16.5.properties b/versionProperties/1.16.5.properties index 946897212..159d07d0a 100644 --- a/versionProperties/1.16.5.properties +++ b/versionProperties/1.16.5.properties @@ -45,3 +45,4 @@ forge_version=36.2.39 # 2 = Can be referenced in code and runs in client enable_starlight_forge=0 enable_terraforged=2 + enable_terrafirmacraft=0 diff --git a/versionProperties/1.17.1.properties b/versionProperties/1.17.1.properties index ddc76d7b7..42f12deae 100644 --- a/versionProperties/1.17.1.properties +++ b/versionProperties/1.17.1.properties @@ -45,3 +45,4 @@ forge_version=37.1.1 # 2 = Can be referenced in code and runs in client enable_starlight_forge=0 enable_terraforged=0 + enable_terrafirmacraft=0 diff --git a/versionProperties/1.19.2.properties b/versionProperties/1.19.2.properties index 136714073..103e1129a 100644 --- a/versionProperties/1.19.2.properties +++ b/versionProperties/1.19.2.properties @@ -45,3 +45,4 @@ forge_version=43.2.14 # 2 = Can be referenced in code and runs in client enable_starlight_forge=0 enable_terraforged=0 + enable_terrafirmacraft=0 diff --git a/versionProperties/1.19.4.properties b/versionProperties/1.19.4.properties index 0b9afab72..349c47c62 100644 --- a/versionProperties/1.19.4.properties +++ b/versionProperties/1.19.4.properties @@ -45,3 +45,4 @@ forge_version=45.1.0 # 2 = Can be referenced in code and runs in client enable_starlight_forge=0 enable_terraforged=0 + enable_terrafirmacraft=0 diff --git a/versionProperties/1.20.1.properties b/versionProperties/1.20.1.properties index 1d0955bd9..c55c542a0 100644 --- a/versionProperties/1.20.1.properties +++ b/versionProperties/1.20.1.properties @@ -45,3 +45,4 @@ forge_version=47.0.1 # 2 = Can be referenced in code and runs in client enable_starlight_forge=0 enable_terraforged=0 + enable_terrafirmacraft=0 From d96c96fc6e45fde48a300b85f3a9f9edc6f995c1 Mon Sep 17 00:00:00 2001 From: Cailin Smith Date: Sun, 2 Jul 2023 19:44:55 +0200 Subject: [PATCH 19/28] Add ability for servers to communicate with the client to set the world. This prevents the client from accidentally selected the wrong world folder to load LODs from, since levels of the same dimension can't naturally be distinguished from each other. With level similarity detection, this can sometimes work, but in general is not reliable. This mechanism instead allows servers to send a packet to the client on load, enabling the override system, and then a second packet on world change, which specifically sets the world key, based on knowledge that only the server has, leading to a reliable way of detecting the correct world. --- .../common/wrappers/DependencySetup.java | 3 + .../level/ServerEnhancedClientLevel.java | 20 ++++++ .../wrappers/level/ServerEnhancedManager.java | 34 ++++++++++ .../minecraft/FriendlyByteBufWrapper.java | 26 ++++++++ .../minecraft/MinecraftClientWrapper.java | 7 ++- .../wrappers/world/ClientLevelWrapper.java | 36 ++++++++++- coreSubProjects | 2 +- fabric/build.gradle | 1 + .../fabric/FabricClientProxy.java | 9 +-- .../fabric/FabricServerProxy.java | 63 ++++++++++++------- 10 files changed, 169 insertions(+), 32 deletions(-) create mode 100644 common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerEnhancedClientLevel.java create mode 100644 common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerEnhancedManager.java create mode 100644 common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/FriendlyByteBufWrapper.java diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/DependencySetup.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/DependencySetup.java index ec01f988b..c6bd30a8c 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/DependencySetup.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/DependencySetup.java @@ -20,7 +20,9 @@ package com.seibel.distanthorizons.common.wrappers; import com.seibel.distanthorizons.common.wrappers.gui.LangWrapper; +import com.seibel.distanthorizons.common.wrappers.level.ServerEnhancedManager; import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftDedicatedServerWrapper; +import com.seibel.distanthorizons.core.level.IServerEnhancedManager; import com.seibel.distanthorizons.core.wrapperInterfaces.config.ILangWrapper; import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftClientWrapper; import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftRenderWrapper; @@ -49,6 +51,7 @@ public class DependencySetup { SingletonInjector.INSTANCE.bind(ILangWrapper.class, LangWrapper.INSTANCE); SingletonInjector.INSTANCE.bind(IVersionConstants.class, VersionConstants.INSTANCE); SingletonInjector.INSTANCE.bind(IWrapperFactory.class, WrapperFactory.INSTANCE); + SingletonInjector.INSTANCE.bind(IServerEnhancedManager.class, ServerEnhancedManager.INSTANCE); DependencySetupDoneCheck.isDone = true; } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerEnhancedClientLevel.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerEnhancedClientLevel.java new file mode 100644 index 000000000..024e0603d --- /dev/null +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerEnhancedClientLevel.java @@ -0,0 +1,20 @@ +package com.seibel.distanthorizons.common.wrappers.level; + +import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; +import com.seibel.distanthorizons.core.level.IServerEnhancedClientLevel; +import net.minecraft.client.multiplayer.ClientLevel; + +public class ServerEnhancedClientLevel extends ClientLevelWrapper implements IServerEnhancedClientLevel { + + private final String serverKey; + + public ServerEnhancedClientLevel(ClientLevel level, String serverKey) { + super(level); + this.serverKey = serverKey; + } + + @Override + public String getServerWorldKey() { + return this.serverKey; + } +} diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerEnhancedManager.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerEnhancedManager.java new file mode 100644 index 000000000..62f96d9ae --- /dev/null +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerEnhancedManager.java @@ -0,0 +1,34 @@ +package com.seibel.distanthorizons.common.wrappers.level; + +import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; +import com.seibel.distanthorizons.core.level.IServerEnhancedClientLevel; +import com.seibel.distanthorizons.core.level.IServerEnhancedManager; +import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper; +import net.minecraft.client.multiplayer.ClientLevel; +import org.apache.logging.log4j.core.jmx.Server; + +import java.util.Objects; + +public class ServerEnhancedManager implements IServerEnhancedManager { + + public static ServerEnhancedManager INSTANCE = new ServerEnhancedManager(); + + @Override + public void registerServerEnhancedLevel(IServerEnhancedClientLevel clientLevel) { + ClientLevelWrapper.setWrappedLevel(clientLevel); + } + + + + @Override + public IServerEnhancedClientLevel getServerEnhancedLevel(ILevelWrapper level, String worldKey) { + Objects.requireNonNull(level); + Objects.requireNonNull(worldKey); + return new ServerEnhancedClientLevel((ClientLevel) level.getWrappedMcObject(), worldKey); + } + + @Override + public void setUseOverrideWrapper(boolean useOverrideWrapper) { + ClientLevelWrapper.setUseOverrideWrapper(useOverrideWrapper); + } +} diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/FriendlyByteBufWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/FriendlyByteBufWrapper.java new file mode 100644 index 000000000..e9a9a7623 --- /dev/null +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/FriendlyByteBufWrapper.java @@ -0,0 +1,26 @@ +package com.seibel.distanthorizons.common.wrappers.minecraft; + +import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IFriendlyByteBuf; +import net.minecraft.network.FriendlyByteBuf; + +import java.nio.charset.Charset; + +public class FriendlyByteBufWrapper implements IFriendlyByteBuf +{ + private final FriendlyByteBuf buf; + + public FriendlyByteBufWrapper(FriendlyByteBuf buf) { + this.buf = buf; + } + + @Override + public short readShort() + { + return buf.readShort(); + } + + public CharSequence readCharSequence(int length, Charset charset) + { + return buf.readCharSequence(length, charset); + } +} diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftClientWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftClientWrapper.java index a892f1be1..881ebdeb7 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftClientWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftClientWrapper.java @@ -180,7 +180,7 @@ public class MinecraftClientWrapper implements IMinecraftClientWrapper, IMinecra return null; } - return ClientLevelWrapper.getWrapper(mc.level); + return ClientLevelWrapper.getOriginalWrapper(mc.level); } /** Please move over to getInstallationDirectory() */ @@ -261,4 +261,9 @@ public class MinecraftClientWrapper implements IMinecraftClientWrapper, IMinecra public File getInstallationDirectory() { return mc.gameDirectory; } + + @Override + public void execute(Runnable runnable) { + mc.execute(runnable); + } } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java index 89d05d57c..4eca3012f 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java @@ -38,7 +38,34 @@ public class ClientLevelWrapper implements IClientLevelWrapper private static final ConcurrentHashMap levelWrapperMap = new ConcurrentHashMap<>(); - public static ClientLevelWrapper getWrapper(ClientLevel level) { + /** + * This is set and managed by the ClientApi for servers with support for DH. + */ + private static IClientLevelWrapper overrideWrapper = null; + private static boolean useOverrideWrapper = false; + + public static void setWrappedLevel(IClientLevelWrapper wrapper) { + overrideWrapper = wrapper; + } + + public static void setUseOverrideWrapper(boolean useOverrideWrapper) { + ClientLevelWrapper.useOverrideWrapper = useOverrideWrapper; + } + + public static IClientLevelWrapper getWrapper(ClientLevel level) { + if(useOverrideWrapper) { + return overrideWrapper; + } + return getOriginalWrapper(level); + } + + /** + * Gets the original level wrapper, regardless of whether or not the server is overriding the + * level wrapper. + * @param level + * @return + */ + public static IClientLevelWrapper getOriginalWrapper(ClientLevel level) { return levelWrapperMap.computeIfAbsent(level, ClientLevelWrapper::new); } public static void closeWrapper(ClientLevel level) @@ -46,9 +73,11 @@ public class ClientLevelWrapper implements IClientLevelWrapper levelWrapperMap.remove(level); } - private ClientLevelWrapper(ClientLevel level) { + protected ClientLevelWrapper(ClientLevel level) { this.level = level; } + + final ClientLevel level; ClientBlockDetailMap blockMap = new ClientBlockDetailMap(this); @Nullable @@ -184,6 +213,9 @@ public class ClientLevelWrapper implements IClientLevelWrapper @Override public String toString() { + if(level == null) { + return "Wrapped{null}"; + } return "Wrapped{" + level.toString() + "@" + getDimensionType().getDimensionName() + "}"; } diff --git a/coreSubProjects b/coreSubProjects index d04b4c0d5..368541b09 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit d04b4c0d55b56e015cd150b2050f468aff9e1048 +Subproject commit 368541b09c72c8e9d6c95fbe0f4d471b12ced5cd diff --git a/fabric/build.gradle b/fabric/build.gradle index ae5cb6a04..c3fc3acef 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -60,6 +60,7 @@ dependencies { addModJar(fabricApi.module("fabric-resource-loader-v0", rootProject.fabric_api_version)) addModJar(fabricApi.module("fabric-rendering-v1", rootProject.fabric_api_version)) // TODO: Remove this as it is only needed in 1 line (FabricClientProxy) addModJar(fabricApi.module("fabric-api-base", rootProject.fabric_api_version)) + addModJar(fabricApi.module("fabric-networking-api-v1", rootProject.fabric_api_version)) // Mod Menu modImplementation("com.terraformersmc:modmenu:${rootProject.modmenu_version}") diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java index 17818f2c3..89fcabe5c 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java @@ -31,6 +31,7 @@ import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.IImmersivePortalsAccessor; import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.ISodiumAccessor; +import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper; import com.seibel.distanthorizons.fabric.wrappers.modAccessor.ImmersivePortalsAccessor; import com.seibel.distanthorizons.fabric.wrappers.modAccessor.SodiumAccessor; import net.fabricmc.api.EnvType; @@ -100,7 +101,7 @@ public class FabricClientProxy //#if PRE_MC_1_18_1 // in 1.18+, we use mixin hook in setClientLightReady(true) ClientChunkEvents.CHUNK_LOAD.register((level, chunk) -> { - ClientLevelWrapper wrappedLevel = ClientLevelWrapper.getWrapper(level); + IClientLevelWrapper wrappedLevel = ClientLevelWrapper.getWrapper(level); ClientApi.INSTANCE.clientChunkLoadEvent( new ChunkWrapper(chunk, level, wrappedLevel), wrappedLevel @@ -119,7 +120,7 @@ public class FabricClientProxy { // LOGGER.info("attack block at blockpos: " + blockPos); - ClientLevelWrapper wrappedLevel = ClientLevelWrapper.getWrapper((ClientLevel) level); + IClientLevelWrapper wrappedLevel = ClientLevelWrapper.getWrapper((ClientLevel) level); ClientApi.INSTANCE.clientChunkLoadEvent( new ChunkWrapper(chunk, level, wrappedLevel), wrappedLevel @@ -146,7 +147,7 @@ public class FabricClientProxy { // LOGGER.info("use block at blockpos: " + hitResult.getBlockPos()); - ClientLevelWrapper wrappedLevel = ClientLevelWrapper.getWrapper((ClientLevel) level); + IClientLevelWrapper wrappedLevel = ClientLevelWrapper.getWrapper((ClientLevel) level); ClientApi.INSTANCE.clientChunkLoadEvent( new ChunkWrapper(chunk, level, wrappedLevel), wrappedLevel @@ -163,7 +164,7 @@ public class FabricClientProxy // ClientChunkSaveEvent ClientChunkEvents.CHUNK_UNLOAD.register((level, chunk) -> { - ClientLevelWrapper wrappedLevel = ClientLevelWrapper.getWrapper(level); + IClientLevelWrapper wrappedLevel = ClientLevelWrapper.getWrapper(level); ClientApi.INSTANCE.clientChunkSaveEvent( new ChunkWrapper(chunk, level, wrappedLevel), wrappedLevel diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java index 71e006f31..819dc2db2 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java @@ -2,20 +2,29 @@ package com.seibel.distanthorizons.fabric; import com.seibel.distanthorizons.common.networking.Networking; import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper; +import com.seibel.distanthorizons.common.wrappers.minecraft.FriendlyByteBufWrapper; import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; import com.seibel.distanthorizons.common.wrappers.world.ServerLevelWrapper; import com.seibel.distanthorizons.common.wrappers.worldGeneration.BatchGenerationEnvironment; +import com.seibel.distanthorizons.core.api.internal.ClientApi; import com.seibel.distanthorizons.core.api.internal.ServerApi; +import com.seibel.distanthorizons.core.level.IServerEnhancedManager; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; +import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper; +import com.seibel.distanthorizons.common.wrappers.level.ServerEnhancedClientLevel; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerChunkEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerWorldEvents; +import net.fabricmc.fabric.api.networking.v1.PacketSender; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.TitleScreen; import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.multiplayer.ClientPacketListener; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -35,50 +44,50 @@ public class FabricServerProxy { private static final ServerApi SERVER_API = ServerApi.INSTANCE; private static final Logger LOGGER = DhLoggerBuilder.getLogger(); - + private final boolean isDedicated; public static Supplier isGenerationThreadChecker = null; - - - + + + public FabricServerProxy(boolean isDedicated) { this.isDedicated = isDedicated; } - - - + + + private boolean isValidTime() { if (isDedicated) { return true; } - + //FIXME: This may cause init issue... return !(Minecraft.getInstance().screen instanceof TitleScreen); } - - private ClientLevelWrapper getClientLevelWrapper(ClientLevel level) { return ClientLevelWrapper.getWrapper(level); } + + private IClientLevelWrapper getClientLevelWrapper(ClientLevel level) { return ClientLevelWrapper.getWrapper(level); } private ServerLevelWrapper getServerLevelWrapper(ServerLevel level) { return ServerLevelWrapper.getWrapper(level); } - + /** Registers Fabric Events */ public void registerEvents() { LOGGER.info("Registering Fabric Server Events"); isGenerationThreadChecker = BatchGenerationEnvironment::isCurrentThreadDistantGeneratorThread; - + /* Register the mod needed event callbacks */ - + // TEST EVENT //ServerTickEvents.END_SERVER_TICK.register(this::tester); - + // ServerTickEvent ServerTickEvents.END_SERVER_TICK.register((server) -> SERVER_API.serverTickEvent()); - + // ServerWorldLoadEvent //TODO: Check if both of these use the correct timed events. (i.e. is it 'ed' or 'ing' one?) - ServerLifecycleEvents.SERVER_STARTING.register((server) -> + ServerLifecycleEvents.SERVER_STARTING.register((server) -> { if (isValidTime()) { @@ -86,16 +95,16 @@ public class FabricServerProxy } }); // ServerWorldUnloadEvent - ServerLifecycleEvents.SERVER_STOPPED.register((server) -> + ServerLifecycleEvents.SERVER_STOPPED.register((server) -> { if (isValidTime()) { ServerApi.INSTANCE.serverUnloadEvent(); } }); - + // ServerLevelLoadEvent - ServerWorldEvents.LOAD.register((server, level) -> + ServerWorldEvents.LOAD.register((server, level) -> { if (isValidTime()) { @@ -103,16 +112,16 @@ public class FabricServerProxy } }); // ServerLevelUnloadEvent - ServerWorldEvents.UNLOAD.register((server, level) -> + ServerWorldEvents.UNLOAD.register((server, level) -> { if (isValidTime()) { ServerApi.INSTANCE.serverLevelUnloadEvent(getServerLevelWrapper(level)); } }); - + // ServerChunkLoadEvent - ServerChunkEvents.CHUNK_LOAD.register((server, chunk) -> + ServerChunkEvents.CHUNK_LOAD.register((server, chunk) -> { ILevelWrapper level = getServerLevelWrapper((ServerLevel) chunk.getLevel()); if (isValidTime()) @@ -123,8 +132,14 @@ public class FabricServerProxy } }); // ServerChunkSaveEvent - Done in MixinChunkMap + + ClientPlayNetworking.registerGlobalReceiver(new ResourceLocation("distant_horizons", "world_control"), + (Minecraft client, ClientPacketListener handler, FriendlyByteBuf buf, PacketSender responseSender) -> + { + ClientApi.INSTANCE.serverMessageReceived(new FriendlyByteBufWrapper(buf)); + }); } - + // This just exists here for testing purposes, it'll be removed in the future public void tester(MinecraftServer server) { // I disabled the Networking functions for now so this will not work atm - coolGi @@ -136,5 +151,5 @@ public class FabricServerProxy Networking.send(player, payload); } } - + } From b3c4c790dc740e94d7ad5ab70381a7a89e020d3a Mon Sep 17 00:00:00 2001 From: Cailin Smith Date: Sun, 2 Jul 2023 21:46:34 +0200 Subject: [PATCH 20/28] Add ability for servers to communicate with the client to set the world. This prevents the client from accidentally selected the wrong world folder to load LODs from, since levels of the same dimension can't naturally be distinguished from each other. With level similarity detection, this can sometimes work, but in general is not reliable. This mechanism instead allows servers to send a packet to the client on load, enabling the override system, and then a second packet on world change, which specifically sets the world key, based on knowledge that only the server has, leading to a reliable way of detecting the correct world. --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index 368541b09..44a66a3d9 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 368541b09c72c8e9d6c95fbe0f4d471b12ced5cd +Subproject commit 44a66a3d93b1716984ae674d07f921aa909ff770 From 213d7a30b486da108df03579ec2cf2ca805d5761 Mon Sep 17 00:00:00 2001 From: Cailin Smith Date: Sun, 2 Jul 2023 22:35:02 +0200 Subject: [PATCH 21/28] Rename class --- .../distanthorizons/common/wrappers/DependencySetup.java | 6 +++--- ...rverEnhancedManager.java => EnhancedServerManager.java} | 7 +++---- coreSubProjects | 2 +- .../seibel/distanthorizons/fabric/FabricServerProxy.java | 2 -- 4 files changed, 7 insertions(+), 10 deletions(-) rename common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/{ServerEnhancedManager.java => EnhancedServerManager.java} (79%) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/DependencySetup.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/DependencySetup.java index c6bd30a8c..4ba98ce9f 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/DependencySetup.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/DependencySetup.java @@ -20,9 +20,9 @@ package com.seibel.distanthorizons.common.wrappers; import com.seibel.distanthorizons.common.wrappers.gui.LangWrapper; -import com.seibel.distanthorizons.common.wrappers.level.ServerEnhancedManager; +import com.seibel.distanthorizons.common.wrappers.level.EnhancedServerManager; import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftDedicatedServerWrapper; -import com.seibel.distanthorizons.core.level.IServerEnhancedManager; +import com.seibel.distanthorizons.core.level.IEnhancedServerManager; import com.seibel.distanthorizons.core.wrapperInterfaces.config.ILangWrapper; import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftClientWrapper; import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftRenderWrapper; @@ -51,7 +51,7 @@ public class DependencySetup { SingletonInjector.INSTANCE.bind(ILangWrapper.class, LangWrapper.INSTANCE); SingletonInjector.INSTANCE.bind(IVersionConstants.class, VersionConstants.INSTANCE); SingletonInjector.INSTANCE.bind(IWrapperFactory.class, WrapperFactory.INSTANCE); - SingletonInjector.INSTANCE.bind(IServerEnhancedManager.class, ServerEnhancedManager.INSTANCE); + SingletonInjector.INSTANCE.bind(IEnhancedServerManager.class, EnhancedServerManager.INSTANCE); DependencySetupDoneCheck.isDone = true; } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerEnhancedManager.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/EnhancedServerManager.java similarity index 79% rename from common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerEnhancedManager.java rename to common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/EnhancedServerManager.java index 62f96d9ae..374fbfc0d 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerEnhancedManager.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/EnhancedServerManager.java @@ -2,16 +2,15 @@ package com.seibel.distanthorizons.common.wrappers.level; import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; import com.seibel.distanthorizons.core.level.IServerEnhancedClientLevel; -import com.seibel.distanthorizons.core.level.IServerEnhancedManager; +import com.seibel.distanthorizons.core.level.IEnhancedServerManager; import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper; import net.minecraft.client.multiplayer.ClientLevel; -import org.apache.logging.log4j.core.jmx.Server; import java.util.Objects; -public class ServerEnhancedManager implements IServerEnhancedManager { +public class EnhancedServerManager implements IEnhancedServerManager { - public static ServerEnhancedManager INSTANCE = new ServerEnhancedManager(); + public static EnhancedServerManager INSTANCE = new EnhancedServerManager(); @Override public void registerServerEnhancedLevel(IServerEnhancedClientLevel clientLevel) { diff --git a/coreSubProjects b/coreSubProjects index 44a66a3d9..55f39996c 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 44a66a3d93b1716984ae674d07f921aa909ff770 +Subproject commit 55f39996cbd2f0aa4e4b30166e445acff00c77ee diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java index 819dc2db2..3d92474e1 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java @@ -8,11 +8,9 @@ import com.seibel.distanthorizons.common.wrappers.world.ServerLevelWrapper; import com.seibel.distanthorizons.common.wrappers.worldGeneration.BatchGenerationEnvironment; import com.seibel.distanthorizons.core.api.internal.ClientApi; import com.seibel.distanthorizons.core.api.internal.ServerApi; -import com.seibel.distanthorizons.core.level.IServerEnhancedManager; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper; -import com.seibel.distanthorizons.common.wrappers.level.ServerEnhancedClientLevel; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerChunkEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; From e71727c6f99f7b5fa3ca1f29e7d7ae564010b574 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Mon, 3 Jul 2023 06:50:21 -0500 Subject: [PATCH 22/28] Update coreSubProjects --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index 10b916118..b50c2cf9a 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 10b9161188deb2e676d611d6d38bbbbfad79990e +Subproject commit b50c2cf9a9220db25f4864481ad33c8ed6244840 From 10de377081e4c082c789d3de876e79bb492dc3b6 Mon Sep 17 00:00:00 2001 From: Cailin Smith Date: Mon, 3 Jul 2023 23:27:46 +0200 Subject: [PATCH 23/28] Somehow missed this --- .../com/seibel/distanthorizons/forge/ForgeClientProxy.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeClientProxy.java b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeClientProxy.java index d1e184feb..be557912a 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeClientProxy.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeClientProxy.java @@ -24,6 +24,7 @@ import com.seibel.distanthorizons.core.api.internal.ClientApi; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.wrapperInterfaces.chunk.IChunkWrapper; +import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper; import net.minecraft.world.level.LevelAccessor; import net.minecraft.client.multiplayer.ClientLevel; @@ -95,7 +96,7 @@ public class ForgeClientProxy { if (GetLevel(event) instanceof ClientLevel) { - ClientLevelWrapper wrappedLevel = ClientLevelWrapper.getWrapper((ClientLevel) GetLevel(event)); + IClientLevelWrapper wrappedLevel = ClientLevelWrapper.getWrapper((ClientLevel) GetLevel(event)); IChunkWrapper chunk = new ChunkWrapper(event.getChunk(), GetLevel(event), wrappedLevel); ClientApi.INSTANCE.clientChunkLoadEvent(chunk, ClientLevelWrapper.getWrapper((ClientLevel) GetLevel(event))); } @@ -105,7 +106,7 @@ public class ForgeClientProxy { if (GetLevel(event) instanceof ClientLevel) { - ClientLevelWrapper wrappedLevel = ClientLevelWrapper.getWrapper((ClientLevel) GetLevel(event)); + IClientLevelWrapper wrappedLevel = ClientLevelWrapper.getWrapper((ClientLevel) GetLevel(event)); IChunkWrapper chunk = new ChunkWrapper(event.getChunk() , GetLevel(event), wrappedLevel); ClientApi.INSTANCE.clientChunkSaveEvent(chunk, ClientLevelWrapper.getWrapper((ClientLevel) GetLevel(event))); } From 889daecc86226664d3c2326fa356a6c38f9001bf Mon Sep 17 00:00:00 2001 From: James Seibel Date: Tue, 4 Jul 2023 10:29:43 -0500 Subject: [PATCH 24/28] refactor and rename --- build.gradle | 4 +- .../common/wrappers/DependencySetup.java | 6 +- .../wrappers/level/EnhancedServerManager.java | 33 ----- .../level/KeyedClientLevelManager.java | 54 ++++++++ .../level/ServerEnhancedClientLevel.java | 20 --- .../level/ServerKeyedClientLevel.java | 21 +++ .../minecraft/FriendlyByteBufWrapper.java | 26 ---- .../minecraft/MinecraftClientWrapper.java | 7 +- .../wrappers/world/ClientLevelWrapper.java | 120 +++++++++--------- coreSubProjects | 2 +- .../fabric/FabricServerProxy.java | 11 +- 11 files changed, 150 insertions(+), 154 deletions(-) delete mode 100644 common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/EnhancedServerManager.java create mode 100644 common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/KeyedClientLevelManager.java delete mode 100644 common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerEnhancedClientLevel.java create mode 100644 common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerKeyedClientLevel.java delete mode 100644 common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/FriendlyByteBufWrapper.java diff --git a/build.gradle b/build.gradle index 03e379fcf..8c8e47f19 100644 --- a/build.gradle +++ b/build.gradle @@ -203,7 +203,9 @@ subprojects { p -> // SVG shadowMe("com.formdev:svgSalamander:${rootProject.svgSalamander_version}") shadowMe("com.formdev:flatlaf-extras:${rootProject.flatlaf_version}") - + + // Netty + shadowMe("io.netty:netty-all:4.1.94.Final") // Remember, for lwjgl dependancies that arent included in Minecraft, you need to also need to add it to the ShadowJar thing shadowMe("org.lwjgl:lwjgl-jawt:3.2.2") { diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/DependencySetup.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/DependencySetup.java index 4ba98ce9f..a3d513e41 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/DependencySetup.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/DependencySetup.java @@ -20,9 +20,9 @@ package com.seibel.distanthorizons.common.wrappers; import com.seibel.distanthorizons.common.wrappers.gui.LangWrapper; -import com.seibel.distanthorizons.common.wrappers.level.EnhancedServerManager; +import com.seibel.distanthorizons.common.wrappers.level.KeyedClientLevelManager; import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftDedicatedServerWrapper; -import com.seibel.distanthorizons.core.level.IEnhancedServerManager; +import com.seibel.distanthorizons.core.level.IKeyedClientLevelManager; import com.seibel.distanthorizons.core.wrapperInterfaces.config.ILangWrapper; import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftClientWrapper; import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftRenderWrapper; @@ -51,7 +51,7 @@ public class DependencySetup { SingletonInjector.INSTANCE.bind(ILangWrapper.class, LangWrapper.INSTANCE); SingletonInjector.INSTANCE.bind(IVersionConstants.class, VersionConstants.INSTANCE); SingletonInjector.INSTANCE.bind(IWrapperFactory.class, WrapperFactory.INSTANCE); - SingletonInjector.INSTANCE.bind(IEnhancedServerManager.class, EnhancedServerManager.INSTANCE); + SingletonInjector.INSTANCE.bind(IKeyedClientLevelManager.class, KeyedClientLevelManager.INSTANCE); DependencySetupDoneCheck.isDone = true; } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/EnhancedServerManager.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/EnhancedServerManager.java deleted file mode 100644 index 374fbfc0d..000000000 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/EnhancedServerManager.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.seibel.distanthorizons.common.wrappers.level; - -import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; -import com.seibel.distanthorizons.core.level.IServerEnhancedClientLevel; -import com.seibel.distanthorizons.core.level.IEnhancedServerManager; -import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper; -import net.minecraft.client.multiplayer.ClientLevel; - -import java.util.Objects; - -public class EnhancedServerManager implements IEnhancedServerManager { - - public static EnhancedServerManager INSTANCE = new EnhancedServerManager(); - - @Override - public void registerServerEnhancedLevel(IServerEnhancedClientLevel clientLevel) { - ClientLevelWrapper.setWrappedLevel(clientLevel); - } - - - - @Override - public IServerEnhancedClientLevel getServerEnhancedLevel(ILevelWrapper level, String worldKey) { - Objects.requireNonNull(level); - Objects.requireNonNull(worldKey); - return new ServerEnhancedClientLevel((ClientLevel) level.getWrappedMcObject(), worldKey); - } - - @Override - public void setUseOverrideWrapper(boolean useOverrideWrapper) { - ClientLevelWrapper.setUseOverrideWrapper(useOverrideWrapper); - } -} diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/KeyedClientLevelManager.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/KeyedClientLevelManager.java new file mode 100644 index 000000000..b0de02033 --- /dev/null +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/KeyedClientLevelManager.java @@ -0,0 +1,54 @@ +package com.seibel.distanthorizons.common.wrappers.level; + +import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; +import com.seibel.distanthorizons.core.level.IServerKeyedClientLevel; +import com.seibel.distanthorizons.core.level.IKeyedClientLevelManager; +import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper; +import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper; +import net.minecraft.client.multiplayer.ClientLevel; + +import java.util.Objects; + +public class KeyedClientLevelManager implements IKeyedClientLevelManager +{ + public static final KeyedClientLevelManager INSTANCE = new KeyedClientLevelManager(); + + /** This is set and managed by the ClientApi for servers with support for DH. */ + private IServerKeyedClientLevel overrideWrapper = null; + private boolean useOverrideWrapper = false; + + + //=============// + // constructor // + //=============// + + private KeyedClientLevelManager() { } + + + + //======================// + // level override logic // + //======================// + + @Override + public void setServerKeyedLevel(IServerKeyedClientLevel clientLevel) { this.overrideWrapper = clientLevel; } + @Override + public IServerKeyedClientLevel getOverrideWrapper() { return this.overrideWrapper; } + + @Override + public IServerKeyedClientLevel getServerKeyedLevel(ILevelWrapper level, String serverLevelKey) + { + Objects.requireNonNull(level); + Objects.requireNonNull(serverLevelKey); + return new ServerKeyedClientLevel((ClientLevel) level.getWrappedMcObject(), serverLevelKey); + } + + + @Override + public void setUseOverrideWrapper(boolean useOverrideWrapper) { this.useOverrideWrapper = useOverrideWrapper; } + @Override + public boolean getUseOverrideWrapper() { return this.useOverrideWrapper; } + + + +} diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerEnhancedClientLevel.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerEnhancedClientLevel.java deleted file mode 100644 index 024e0603d..000000000 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerEnhancedClientLevel.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.seibel.distanthorizons.common.wrappers.level; - -import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; -import com.seibel.distanthorizons.core.level.IServerEnhancedClientLevel; -import net.minecraft.client.multiplayer.ClientLevel; - -public class ServerEnhancedClientLevel extends ClientLevelWrapper implements IServerEnhancedClientLevel { - - private final String serverKey; - - public ServerEnhancedClientLevel(ClientLevel level, String serverKey) { - super(level); - this.serverKey = serverKey; - } - - @Override - public String getServerWorldKey() { - return this.serverKey; - } -} diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerKeyedClientLevel.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerKeyedClientLevel.java new file mode 100644 index 000000000..86048c145 --- /dev/null +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerKeyedClientLevel.java @@ -0,0 +1,21 @@ +package com.seibel.distanthorizons.common.wrappers.level; + +import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; +import com.seibel.distanthorizons.core.level.IServerKeyedClientLevel; +import net.minecraft.client.multiplayer.ClientLevel; + +public class ServerKeyedClientLevel extends ClientLevelWrapper implements IServerKeyedClientLevel +{ + /** A unique identifier (generally the level's name) for differentiating multiverse levels */ + private final String serverLevelKey; + + public ServerKeyedClientLevel(ClientLevel level, String serverLevelKey) + { + super(level); + this.serverLevelKey = serverLevelKey; + } + + @Override + public String getServerLevelKey() { return this.serverLevelKey; } + +} diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/FriendlyByteBufWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/FriendlyByteBufWrapper.java deleted file mode 100644 index e9a9a7623..000000000 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/FriendlyByteBufWrapper.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.seibel.distanthorizons.common.wrappers.minecraft; - -import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IFriendlyByteBuf; -import net.minecraft.network.FriendlyByteBuf; - -import java.nio.charset.Charset; - -public class FriendlyByteBufWrapper implements IFriendlyByteBuf -{ - private final FriendlyByteBuf buf; - - public FriendlyByteBufWrapper(FriendlyByteBuf buf) { - this.buf = buf; - } - - @Override - public short readShort() - { - return buf.readShort(); - } - - public CharSequence readCharSequence(int length, Charset charset) - { - return buf.readCharSequence(length, charset); - } -} diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftClientWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftClientWrapper.java index 6b07425c5..bc9aa7930 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftClientWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftClientWrapper.java @@ -180,7 +180,7 @@ public class MinecraftClientWrapper implements IMinecraftClientWrapper, IMinecra return null; } - return ClientLevelWrapper.getOriginalWrapper(mc.level); + return ClientLevelWrapper.getWrapperIgnoringOverride(this.mc.level); } /** Please move over to getInstallationDirectory() */ @@ -263,7 +263,6 @@ public class MinecraftClientWrapper implements IMinecraftClientWrapper, IMinecra } @Override - public void execute(Runnable runnable) { - mc.execute(runnable); - } + public void executeOnRenderThread(Runnable runnable) { this.mc.execute(runnable); } + } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java index 4eca3012f..53158f0cd 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java @@ -8,6 +8,8 @@ import com.seibel.distanthorizons.common.wrappers.block.BlockStateWrapper; import com.seibel.distanthorizons.common.wrappers.block.cache.ClientBlockDetailMap; import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper; import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftClientWrapper; +import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; +import com.seibel.distanthorizons.core.level.IKeyedClientLevelManager; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.pos.DhBlockPos; import com.seibel.distanthorizons.core.pos.DhChunkPos; @@ -28,59 +30,48 @@ import org.jetbrains.annotations.Nullable; import java.util.concurrent.ConcurrentHashMap; -/** - * - * @version 2023-6-3 - */ public class ClientLevelWrapper implements IClientLevelWrapper { private static final Logger LOGGER = DhLoggerBuilder.getLogger(ClientLevelWrapper.class.getSimpleName()); - private static final ConcurrentHashMap - levelWrapperMap = new ConcurrentHashMap<>(); - - /** - * This is set and managed by the ClientApi for servers with support for DH. - */ - private static IClientLevelWrapper overrideWrapper = null; - private static boolean useOverrideWrapper = false; - - public static void setWrappedLevel(IClientLevelWrapper wrapper) { - overrideWrapper = wrapper; - } - - public static void setUseOverrideWrapper(boolean useOverrideWrapper) { - ClientLevelWrapper.useOverrideWrapper = useOverrideWrapper; - } - - public static IClientLevelWrapper getWrapper(ClientLevel level) { - if(useOverrideWrapper) { - return overrideWrapper; - } - return getOriginalWrapper(level); - } - - /** - * Gets the original level wrapper, regardless of whether or not the server is overriding the - * level wrapper. - * @param level - * @return - */ - public static IClientLevelWrapper getOriginalWrapper(ClientLevel level) { - return levelWrapperMap.computeIfAbsent(level, ClientLevelWrapper::new); - } - public static void closeWrapper(ClientLevel level) - { - levelWrapperMap.remove(level); - } - - protected ClientLevelWrapper(ClientLevel level) { - this.level = level; - } - - - final ClientLevel level; - ClientBlockDetailMap blockMap = new ClientBlockDetailMap(this); - @Nullable + private static final ConcurrentHashMap LEVEL_WRAPPER_BY_CLIENT_LEVEL = new ConcurrentHashMap<>(); + private static final IKeyedClientLevelManager KEYED_CLIENT_LEVEL_MANAGER = SingletonInjector.INSTANCE.get(IKeyedClientLevelManager.class); + + private final ClientLevel level; + private final ClientBlockDetailMap blockMap = new ClientBlockDetailMap(this); + + + + //=============// + // constructor // + //=============// + + protected ClientLevelWrapper(ClientLevel level) { this.level = level; } + + + + //===============// + // wrapper logic // + //===============// + + public static IClientLevelWrapper getWrapper(ClientLevel level) + { + // used if the client is connected to a server that defines the currently loaded level + if (KEYED_CLIENT_LEVEL_MANAGER.getUseOverrideWrapper()) + { + return KEYED_CLIENT_LEVEL_MANAGER.getOverrideWrapper(); + } + + return getWrapperIgnoringOverride(level); + } + public static IClientLevelWrapper getWrapperIgnoringOverride(ClientLevel level) + { + return LEVEL_WRAPPER_BY_CLIENT_LEVEL.computeIfAbsent(level, ClientLevelWrapper::new); + } + + public static void closeLevel(ClientLevel level) { LEVEL_WRAPPER_BY_CLIENT_LEVEL.remove(level); } + + + @Nullable @Override public IServerLevelWrapper tryGetServerSideWrapper() { @@ -118,12 +109,18 @@ public class ClientLevelWrapper implements IClientLevelWrapper } } public static void cleanCheck() { - if (!levelWrapperMap.isEmpty()) { - LOGGER.warn("{} client levels havn't been freed!", levelWrapperMap.size()); - levelWrapperMap.clear(); + if (!LEVEL_WRAPPER_BY_CLIENT_LEVEL.isEmpty()) { + LOGGER.warn("{} client levels havn't been freed!", LEVEL_WRAPPER_BY_CLIENT_LEVEL.size()); + LEVEL_WRAPPER_BY_CLIENT_LEVEL.clear(); } } - + + + + //====================// + // base level methods // + //====================// + @Override public int computeBaseColor(DhBlockPos pos, IBiomeWrapper biome, IBlockStateWrapper blockState) { return blockMap.getColor(((BlockStateWrapper)blockState).blockState, @@ -212,11 +209,14 @@ public class ClientLevelWrapper implements IClientLevelWrapper } @Override - public String toString() { - if(level == null) { - return "Wrapped{null}"; - } - return "Wrapped{" + level.toString() + "@" + getDimensionType().getDimensionName() + "}"; - } + public String toString() + { + if (this.level == null) + { + return "Wrapped{null}"; + } + + return "Wrapped{" + this.level.toString() + "@" + this.getDimensionType().getDimensionName() + "}"; + } } diff --git a/coreSubProjects b/coreSubProjects index 55f39996c..2b0ee29a8 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 55f39996cbd2f0aa4e4b30166e445acff00c77ee +Subproject commit 2b0ee29a8cc0aaa763eb9f8a2c68bc928271502c diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java index 3d92474e1..3bf1cd435 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricServerProxy.java @@ -2,7 +2,6 @@ package com.seibel.distanthorizons.fabric; import com.seibel.distanthorizons.common.networking.Networking; import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper; -import com.seibel.distanthorizons.common.wrappers.minecraft.FriendlyByteBufWrapper; import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; import com.seibel.distanthorizons.common.wrappers.world.ServerLevelWrapper; import com.seibel.distanthorizons.common.wrappers.worldGeneration.BatchGenerationEnvironment; @@ -131,11 +130,11 @@ public class FabricServerProxy }); // ServerChunkSaveEvent - Done in MixinChunkMap - ClientPlayNetworking.registerGlobalReceiver(new ResourceLocation("distant_horizons", "world_control"), - (Minecraft client, ClientPacketListener handler, FriendlyByteBuf buf, PacketSender responseSender) -> - { - ClientApi.INSTANCE.serverMessageReceived(new FriendlyByteBufWrapper(buf)); - }); + ClientPlayNetworking.registerGlobalReceiver(new ResourceLocation("distant_horizons", "world_control"), // TODO move these strings into a constant somewhere + (Minecraft client, ClientPacketListener handler, FriendlyByteBuf byteBuffer, PacketSender responseSender) -> + { + ClientApi.INSTANCE.serverMessageReceived(byteBuffer); + }); } // This just exists here for testing purposes, it'll be removed in the future From 87f3a718b4b7fa16c4e2f8b05adb0dbe5a511970 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Tue, 4 Jul 2023 15:41:22 -0500 Subject: [PATCH 25/28] Refactoring --- .../wrappers/world/ClientLevelWrapper.java | 80 ++++++++----------- .../wrappers/world/ServerLevelWrapper.java | 2 +- coreSubProjects | 2 +- 3 files changed, 36 insertions(+), 48 deletions(-) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java index 53158f0cd..665bf9d7c 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java @@ -122,51 +122,33 @@ public class ClientLevelWrapper implements IClientLevelWrapper //====================// @Override - public int computeBaseColor(DhBlockPos pos, IBiomeWrapper biome, IBlockStateWrapper blockState) { - return blockMap.getColor(((BlockStateWrapper)blockState).blockState, - (BiomeWrapper)biome, pos); + public int computeBaseColor(DhBlockPos pos, IBiomeWrapper biome, IBlockStateWrapper blockState) + { + return this.blockMap.getColor(((BlockStateWrapper)blockState).blockState, (BiomeWrapper)biome, pos); } @Override - public IDhApiDimensionTypeWrapper getDimensionType() - { - return DimensionTypeWrapper.getDimensionTypeWrapper(level.dimensionType()); - } + public IDhApiDimensionTypeWrapper getDimensionType() { return DimensionTypeWrapper.getDimensionTypeWrapper(this.level.dimensionType()); } @Override public EDhApiLevelType getLevelType() { return EDhApiLevelType.CLIENT_LEVEL; } @Override - public int getBlockLight(int x, int y, int z) - { - return level.getBrightness(LightLayer.BLOCK, new BlockPos(x,y,z)); - } + public int getBlockLight(int x, int y, int z) { return this.level.getBrightness(LightLayer.BLOCK, new BlockPos(x,y,z)); } @Override - public int getSkyLight(int x, int y, int z) - { - return level.getBrightness(LightLayer.SKY, new BlockPos(x,y,z)); - } + public int getSkyLight(int x, int y, int z) { return this.level.getBrightness(LightLayer.SKY, new BlockPos(x,y,z)); } - public ClientLevel getLevel() - { - return level; - } + public ClientLevel getLevel() { return this.level; } @Override - public boolean hasCeiling() { - return level.dimensionType().hasCeiling(); - } + public boolean hasCeiling() { return this.level.dimensionType().hasCeiling(); } @Override - public boolean hasSkyLight() { - return level.dimensionType().hasSkyLight(); - } + public boolean hasSkyLight() { return this.level.dimensionType().hasSkyLight(); } @Override - public int getHeight() { - return level.getHeight(); - } + public int getHeight() { return this.level.getHeight(); } @Override public int getMinHeight() @@ -174,39 +156,45 @@ public class ClientLevelWrapper implements IClientLevelWrapper #if PRE_MC_1_17_1 return 0; #else - return level.getMinBuildHeight(); + return this.level.getMinBuildHeight(); #endif } @Override - public IChunkWrapper tryGetChunk(DhChunkPos pos) { - if (!level.hasChunk(pos.x, pos.z)) return null; - ChunkAccess chunk = level.getChunk(pos.getX(), pos.getZ(), ChunkStatus.EMPTY, false); - if (chunk == null) return null; - return new ChunkWrapper(chunk, level, this); + public IChunkWrapper tryGetChunk(DhChunkPos pos) + { + if (!this.level.hasChunk(pos.x, pos.z)) + { + return null; + } + + ChunkAccess chunk = this.level.getChunk(pos.x, pos.z, ChunkStatus.EMPTY, false); + if (chunk == null) + { + return null; + } + + return new ChunkWrapper(chunk, this.level, this); } @Override - public boolean hasChunkLoaded(int chunkX, int chunkZ) { - ChunkSource source = level.getChunkSource(); + public boolean hasChunkLoaded(int chunkX, int chunkZ) + { + ChunkSource source = this.level.getChunkSource(); return source.hasChunk(chunkX, chunkZ); } @Override - public IBlockStateWrapper getBlockState(DhBlockPos pos) { - return BlockStateWrapper.fromBlockState(level.getBlockState(McObjectConverter.Convert(pos))); - } + public IBlockStateWrapper getBlockState(DhBlockPos pos) + { + return BlockStateWrapper.fromBlockState(this.level.getBlockState(McObjectConverter.Convert(pos))); + } @Override - public IBiomeWrapper getBiome(DhBlockPos pos) { - return BiomeWrapper.getBiomeWrapper(level.getBiome(McObjectConverter.Convert(pos))); - } + public IBiomeWrapper getBiome(DhBlockPos pos) { return BiomeWrapper.getBiomeWrapper(this.level.getBiome(McObjectConverter.Convert(pos))); } @Override - public ClientLevel getWrappedMcObject() - { - return level; - } + public ClientLevel getWrappedMcObject() { return this.level; } @Override public String toString() diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ServerLevelWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ServerLevelWrapper.java index 2aefbae8a..e5aa47076 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ServerLevelWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ServerLevelWrapper.java @@ -111,7 +111,7 @@ public class ServerLevelWrapper implements IServerLevelWrapper } @Override - public EDhApiLevelType getLevelType() { return EDhApiLevelType.CLIENT_LEVEL; } + public EDhApiLevelType getLevelType() { return EDhApiLevelType.SERVER_LEVEL; } @Override public int getBlockLight(int x, int y, int z) diff --git a/coreSubProjects b/coreSubProjects index 2fc74914b..f07973a1c 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 2fc74914b4707ce4f9d9a509ac8d43671f0fb123 +Subproject commit f07973a1ce2aef2ed39988cdebf9a2bdf4e2a6f0 From 447759304af40ae517521f61269dcd89566e1e5a Mon Sep 17 00:00:00 2001 From: James Seibel Date: Thu, 6 Jul 2023 22:17:05 -0500 Subject: [PATCH 26/28] Add experimental Seamless Overdraw option --- .../common/rendering/SeamlessOverdraw.java | 33 +++++++++++++++++++ coreSubProjects | 2 +- .../fabric/FabricClientProxy.java | 15 ++++++++- .../mixins/client/MixinLevelRenderer.java | 11 +++++++ 4 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 common/src/main/java/com/seibel/distanthorizons/common/rendering/SeamlessOverdraw.java diff --git a/common/src/main/java/com/seibel/distanthorizons/common/rendering/SeamlessOverdraw.java b/common/src/main/java/com/seibel/distanthorizons/common/rendering/SeamlessOverdraw.java new file mode 100644 index 000000000..4a0ab5aa3 --- /dev/null +++ b/common/src/main/java/com/seibel/distanthorizons/common/rendering/SeamlessOverdraw.java @@ -0,0 +1,33 @@ +package com.seibel.distanthorizons.common.rendering; + +import com.mojang.math.Matrix4f; +import com.seibel.distanthorizons.core.config.Config; +import com.seibel.distanthorizons.core.util.RenderUtil; + +import java.nio.FloatBuffer; + +public class SeamlessOverdraw +{ + /** + * Proof-of-concept experimental option, not intended for normal use.
+ * (Poorly) replaces Minecraft's far clip plane so it lines up with DH's near clip plane. + */ + public static FloatBuffer overwriteMinecraftNearFarClipPlanes(Matrix4f minecraftProjectionMatrix, float previousPartialTicks) + { + FloatBuffer matrixFloatBuffer = FloatBuffer.allocate(16); + minecraftProjectionMatrix.store(matrixFloatBuffer); + float[] matrixFloatArray = matrixFloatBuffer.array(); + + float dhFarClipPlane = RenderUtil.getNearClipPlaneDistanceInBlocks(previousPartialTicks); + float farClip = dhFarClipPlane * 5.1f; // magic number found via trial and error, James has no idea what it represents, except that it makes the seam between DH and vanilla rendering pretty close + float nearClip = 0.5f; // this causes issues with some vanilla rendering, specifically the wireframe around selected blocks is slightly off. Unfortunately the ratio between the near and far clip plane can't be easily modified without completely screwing up the rendering. + + // these may be the wrong index locations in any version of MC other than 1.18.2 + matrixFloatArray[10] = -((farClip + nearClip) / (farClip - nearClip)); // near clip plane + matrixFloatArray[11] = -((2 * farClip * nearClip) / (farClip - nearClip)); // far clip plane + + matrixFloatBuffer = FloatBuffer.wrap(matrixFloatArray); + return matrixFloatBuffer; + } + +} diff --git a/coreSubProjects b/coreSubProjects index f07973a1c..5a014f163 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit f07973a1ce2aef2ed39988cdebf9a2bdf4e2a6f0 +Subproject commit 5a014f163d84506825e074961ecbf97809c78b16 diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java index b987a5b20..59d08d97b 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java @@ -19,15 +19,19 @@ package com.seibel.distanthorizons.fabric; +import com.mojang.math.Matrix4f; +import com.seibel.distanthorizons.common.rendering.SeamlessOverdraw; import com.seibel.distanthorizons.common.wrappers.McObjectConverter; import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; import com.seibel.distanthorizons.core.api.internal.ClientApi; import com.mojang.blaze3d.platform.InputConstants; import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper; +import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.dependencyInjection.ModAccessorInjector; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; +import com.seibel.distanthorizons.core.util.RenderUtil; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.IImmersivePortalsAccessor; import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.ISodiumAccessor; @@ -44,6 +48,7 @@ import net.fabricmc.fabric.api.event.player.UseBlockCallback; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.TitleScreen; +import java.nio.FloatBuffer; import java.util.HashSet; import net.minecraft.client.multiplayer.ClientLevel; @@ -189,10 +194,18 @@ public class FabricClientProxy } else { - clientApi.renderLods(ClientLevelWrapper.getWrapper(renderContext.world()), + this.clientApi.renderLods(ClientLevelWrapper.getWrapper(renderContext.world()), McObjectConverter.Convert(renderContext.matrixStack().last().pose()), McObjectConverter.Convert(renderContext.projectionMatrix()), renderContext.tickDelta()); + + + // experimental proof-of-concept option + if (Config.Client.Advanced.Graphics.AdvancedGraphics.seamlessOverdraw.get()) + { + FloatBuffer modifiedMatrixBuffer = SeamlessOverdraw.overwriteMinecraftNearFarClipPlanes(renderContext.projectionMatrix(), renderContext.tickDelta()); + renderContext.projectionMatrix().load(modifiedMatrixBuffer); + } } if (immersiveAccessor != null) diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java index 35e869255..f38a64967 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java @@ -25,10 +25,12 @@ import com.mojang.math.Matrix4f; #else import org.joml.Matrix4f; #endif +import com.seibel.distanthorizons.common.rendering.SeamlessOverdraw; import com.seibel.distanthorizons.common.wrappers.McObjectConverter; import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.api.internal.ClientApi; +import com.seibel.distanthorizons.core.util.RenderUtil; import com.seibel.distanthorizons.coreapi.util.math.Mat4f; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.LevelRenderer; @@ -40,6 +42,8 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import java.nio.FloatBuffer; + /** * This class is used to mix in my rendering code * before Minecraft starts rendering blocks. @@ -130,6 +134,13 @@ public class MixinLevelRenderer Mat4f mcProjectionMatrix = McObjectConverter.Convert(projectionMatrix); ClientApi.INSTANCE.renderLods(ClientLevelWrapper.getWrapper(level), mcModelViewMatrix, mcProjectionMatrix, previousPartialTicks); + + // experimental proof-of-concept option + if (Config.Client.Advanced.Graphics.AdvancedGraphics.seamlessOverdraw.get()) + { + FloatBuffer modifiedMatrixBuffer = SeamlessOverdraw.overwriteMinecraftNearFarClipPlanes(projectionMatrix, previousPartialTicks); + projectionMatrix.load(modifiedMatrixBuffer); + } } if (Config.Client.Advanced.Debugging.lodOnlyMode.get()) From cb8e4231a57023ded66126592363d93e0c402ab4 Mon Sep 17 00:00:00 2001 From: Dominik Marcinowski Date: Fri, 7 Jul 2023 08:03:00 +0000 Subject: [PATCH 27/28] Update buildAll.bat --- buildAll.bat | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/buildAll.bat b/buildAll.bat index 75578f376..cd0d93415 100644 --- a/buildAll.bat +++ b/buildAll.bat @@ -1,23 +1,15 @@ -@echo off +@echo off & setlocal enabledelayedexpansion -echo Windows build all script needs to be rewritten -echo I dont use Windows so I cant really make this -echo So if someone does use Windows and knows how to script stuff then can you please port the "buildall" script I made for Unix +@rem Loop trough everything in the version properties folder +for %%f in (versionProperties\*) do ( + @rem Get the name of the version that is going to be compiled + set version=%%~nf + @rem Clean out the folders and build it + echo Cleaning workspace to build !version! + call .\gradlew.bat clean -PmcVer="!version!" --no-daemon + echo Building !version! + call .\gradlew.bat build -PmcVer="!version!" --no-daemon +) - - -@REM Old BAT script if you need some help with this task - -@REM SETLOCAL -@REM CALL :buildVersion "1.18.2" -@REM CALL :buildVersion "1.19.4" -@REM CALL :buildVersion "1.20.1" -@REM EXIT /B %ERRORLEVEL% -@REM -@REM :buildVersion -@REM @echo on -@REM call ./gradlew.bat clean -PmcVer="%~1" --no-daemon -@REM call ./gradlew.bat build -PmcVer="%~1" --no-daemon -@REM @echo off -@REM EXIT /B 0 +endlocal From cedb63a505e28eebfcaa64229117dd7d6735ffe4 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Fri, 7 Jul 2023 07:55:01 -0500 Subject: [PATCH 28/28] Fix 1.19 and 1.20 compiling --- .../common/rendering/SeamlessOverdraw.java | 10 ++++++++++ .../distanthorizons/fabric/FabricClientProxy.java | 6 +++++- .../mixins/client/MixinClientPacketListener.java | 3 ++- .../forge/mixins/client/MixinLevelRenderer.java | 5 +++++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/rendering/SeamlessOverdraw.java b/common/src/main/java/com/seibel/distanthorizons/common/rendering/SeamlessOverdraw.java index 4a0ab5aa3..d55b5bf89 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/rendering/SeamlessOverdraw.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/rendering/SeamlessOverdraw.java @@ -1,6 +1,10 @@ package com.seibel.distanthorizons.common.rendering; +#if PRE_MC_1_19_4 import com.mojang.math.Matrix4f; +#else +import org.joml.Matrix4f; +#endif import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.util.RenderUtil; @@ -15,7 +19,13 @@ public class SeamlessOverdraw public static FloatBuffer overwriteMinecraftNearFarClipPlanes(Matrix4f minecraftProjectionMatrix, float previousPartialTicks) { FloatBuffer matrixFloatBuffer = FloatBuffer.allocate(16); + + #if PRE_MC_1_19_4 minecraftProjectionMatrix.store(matrixFloatBuffer); + #else + minecraftProjectionMatrix.get(matrixFloatBuffer); + #endif + float[] matrixFloatArray = matrixFloatBuffer.array(); float dhFarClipPlane = RenderUtil.getNearClipPlaneDistanceInBlocks(previousPartialTicks); diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java index 59d08d97b..0cd367f53 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java @@ -19,7 +19,6 @@ package com.seibel.distanthorizons.fabric; -import com.mojang.math.Matrix4f; import com.seibel.distanthorizons.common.rendering.SeamlessOverdraw; import com.seibel.distanthorizons.common.wrappers.McObjectConverter; import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; @@ -204,7 +203,12 @@ public class FabricClientProxy if (Config.Client.Advanced.Graphics.AdvancedGraphics.seamlessOverdraw.get()) { FloatBuffer modifiedMatrixBuffer = SeamlessOverdraw.overwriteMinecraftNearFarClipPlanes(renderContext.projectionMatrix(), renderContext.tickDelta()); + + #if PRE_MC_1_19_4 renderContext.projectionMatrix().load(modifiedMatrixBuffer); + #else + renderContext.projectionMatrix().set(modifiedMatrixBuffer); + #endif } } diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientPacketListener.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientPacketListener.java index 7a282532b..aac5f7022 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientPacketListener.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinClientPacketListener.java @@ -3,6 +3,7 @@ package com.seibel.distanthorizons.fabric.mixins.client; import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper; import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; import com.seibel.distanthorizons.core.api.internal.ClientApi; +import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.multiplayer.ClientPacketListener; import net.minecraft.world.level.chunk.LevelChunk; @@ -58,7 +59,7 @@ public class MixinClientPacketListener @Inject(method = "enableChunkLight", at = @At("TAIL")) void onEnableChunkLight(LevelChunk chunk, int x, int z, CallbackInfo ci) { - ClientLevelWrapper clientLevel = ClientLevelWrapper.getWrapper((ClientLevel) chunk.getLevel()); + IClientLevelWrapper clientLevel = ClientLevelWrapper.getWrapper((ClientLevel) chunk.getLevel()); ClientApi.INSTANCE.clientChunkLoadEvent(new ChunkWrapper(chunk, chunk.getLevel(), clientLevel), clientLevel); } diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java index f38a64967..58ba5bcb3 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java @@ -139,7 +139,12 @@ public class MixinLevelRenderer if (Config.Client.Advanced.Graphics.AdvancedGraphics.seamlessOverdraw.get()) { FloatBuffer modifiedMatrixBuffer = SeamlessOverdraw.overwriteMinecraftNearFarClipPlanes(projectionMatrix, previousPartialTicks); + + #if PRE_MC_1_19_4 projectionMatrix.load(modifiedMatrixBuffer); + #else + projectionMatrix.set(modifiedMatrixBuffer); + #endif } }