From 867b875cf9d6bf9a0e1890c1d8800fe58ffe9327 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Tue, 27 Aug 2024 19:19:09 -0500 Subject: [PATCH 01/18] Fix Lithium breaking world gen for MC 1.20.1 and older --- .../mimicObject/DhLitWorldGenRegion.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/DhLitWorldGenRegion.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/DhLitWorldGenRegion.java index 1d9c76676..ac1fb2aed 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/DhLitWorldGenRegion.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/DhLitWorldGenRegion.java @@ -26,6 +26,7 @@ import java.util.concurrent.locks.ReentrantLock; import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper; import com.seibel.distanthorizons.common.wrappers.worldGeneration.BatchGenerationEnvironment; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; +import com.seibel.distanthorizons.core.pos.DhBlockPos; import com.seibel.distanthorizons.core.util.LodUtil; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.SpawnerBlock; @@ -235,6 +236,22 @@ public class DhLitWorldGenRegion extends WorldGenRegion #endif } + /** + * This needs to be manually overridden to make sure Lithium 0.11.2 and lower + * don't try to get null chunks.

+ * + * Problematic Lithium code was removed in 0.13.0 (MC 1.21.1) and higher:
+ * https://github.com/CaffeineMC/lithium-fabric/commit/b7cfd53a1ed0197e1d13dea2799b898eb52ecab3 + */ + @NotNull + @Override + public BlockState getBlockState(BlockPos blockPos) + { + int chunkX = SectionPos.blockToSectionCoord(blockPos.getX()); + int chunkZ = SectionPos.blockToSectionCoord(blockPos.getZ()); + return this.getChunk(chunkX, chunkZ).getBlockState(blockPos); + } + /** Skip BlockEntity stuff. They aren't needed for our use case. */ @Override public boolean addFreshEntity(@NotNull Entity entity) { return true; } From 9fb3b196d2c0d97fbad0685e5578eb662cb887d1 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Wed, 28 Aug 2024 07:16:33 -0500 Subject: [PATCH 02/18] Add a quick DH cloud UI config --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index 48d1005be..73c4f0ffc 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 48d1005be6b6c323bf1de6a2775f920423bf4ce8 +Subproject commit 73c4f0ffcda3c523ee10724bb2f4296f3d3803b0 From 61169f87c004627e16a43e392a5392c838af49d0 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Thu, 29 Aug 2024 07:33:21 -0500 Subject: [PATCH 03/18] Fix LODs not updating underground --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index 73c4f0ffc..1d6d71248 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 73c4f0ffcda3c523ee10724bb2f4296f3d3803b0 +Subproject commit 1d6d712483af18c7fb528faf8570753d7f1e757b From 731842e09c8142d7454325ef4b58184f81c62370 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Thu, 29 Aug 2024 19:54:44 -0500 Subject: [PATCH 04/18] Fix DH beacon detection logic breaking the lighting engine --- .../common/wrappers/chunk/ChunkWrapper.java | 10 ++++++++-- coreSubProjects | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) 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 26a4124c9..28b8a4db3 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 @@ -463,7 +463,7 @@ public class ChunkWrapper implements IChunkWrapper * before the list has finished populating. */ @Override - public synchronized ArrayList getBlockLightPosList() + public synchronized ArrayList getWorldBlockLightPosList() { // only populate the list once if (this.blockLightPosList == null) @@ -479,7 +479,13 @@ public class ChunkWrapper implements IChunkWrapper #else this.chunk.findBlockLightSources((blockPos, blockState) -> { - this.blockLightPosList.add(new DhBlockPos(blockPos.getX(), blockPos.getY(), blockPos.getZ())); + DhBlockPos pos = new DhBlockPos(blockPos.getX(), blockPos.getY(), blockPos.getZ()); + + // this can be uncommented if MC decides to return relative block positions in the future instead of world positions + //pos.mutateToChunkRelativePos(pos); + //pos.mutateOffset(this.chunkPos.getMinBlockX(), 0, this.chunkPos.getMinBlockZ(), pos); + + this.blockLightPosList.add(pos); }); #endif } diff --git a/coreSubProjects b/coreSubProjects index 1d6d71248..ed39b6181 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 1d6d712483af18c7fb528faf8570753d7f1e757b +Subproject commit ed39b6181f3e291f917c0b68ab20358c89db2b34 From 71d48411f1d6b1cdd064ddb181fa4582b066f207 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Fri, 30 Aug 2024 07:36:04 -0500 Subject: [PATCH 05/18] Add DhBlockPosMutable and make the original immutable --- .../common/wrappers/McObjectConverter.java | 39 ++----------------- coreSubProjects | 2 +- 2 files changed, 5 insertions(+), 36 deletions(-) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/McObjectConverter.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/McObjectConverter.java index e475dbc69..3066ddabf 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/McObjectConverter.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/McObjectConverter.java @@ -137,41 +137,10 @@ public class McObjectConverter } } - public static BlockPos Convert(DhBlockPos wrappedPos) - { - return new BlockPos(wrappedPos.x, wrappedPos.y, wrappedPos.z); - } - public static ChunkPos Convert(DhChunkPos wrappedPos) - { - return new ChunkPos(wrappedPos.x, wrappedPos.z); - } + public static BlockPos Convert(DhBlockPos wrappedPos) { return new BlockPos(wrappedPos.getX(), wrappedPos.getY(), wrappedPos.getZ()); } + public static ChunkPos Convert(DhChunkPos wrappedPos) { return new ChunkPos(wrappedPos.x, wrappedPos.z); } - public static Direction Convert(EDhDirection lodDirection) - { - return directions[lodDirection.ordinal()]; - } - public static EDhDirection Convert(Direction direction) - { - return lodDirections[direction.ordinal()]; - } - public static void DebugCheckAllPackers() - { - BiConsumer func = (x, z) -> DhChunkPos._DebugCheckPacker(x, z, ChunkPos.asLong(x, z)); - func.accept(0, 0); - func.accept(12345, 134); - func.accept(-12345, -134); - func.accept(-30000000 / 16, 30000000 / 16); - func.accept(30000000 / 16, -30000000 / 16); - func.accept(30000000 / 16, 30000000 / 16); - func.accept(-30000000 / 16, -30000000 / 16); - Consumer func2 = (p) -> DhBlockPos._DebugCheckPacker(p.getX(), p.getY(), p.getZ(), p.asLong()); - func2.accept(new BlockPos(0, 0, 0)); - func2.accept(new BlockPos(12345, 134, 123)); - func2.accept(new BlockPos(-12345, -134, -80)); - func2.accept(new BlockPos(-30000000, 2047, 30000000)); - func2.accept(new BlockPos(30000000, -2048, -30000000)); - func2.accept(new BlockPos(30000000, 2047, 30000000)); - func2.accept(new BlockPos(-30000000, -2048, -30000000)); - } + public static Direction Convert(EDhDirection lodDirection) { return directions[lodDirection.ordinal()]; } + public static EDhDirection Convert(Direction direction) { return lodDirections[direction.ordinal()]; } } diff --git a/coreSubProjects b/coreSubProjects index ed39b6181..b1f154a0e 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit ed39b6181f3e291f917c0b68ab20358c89db2b34 +Subproject commit b1f154a0ea9eed1706dbac6ea5e52cf32e5c2119 From d62161f529e4280201c766b323a585bbb438ecd0 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sat, 31 Aug 2024 21:56:32 -0500 Subject: [PATCH 06/18] Fix cloud color not matching MC --- .../wrappers/world/ClientLevelWrapper.java | 17 ++++++++++++----- coreSubProjects | 2 +- 2 files changed, 13 insertions(+), 6 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 cb3649519..0df902ae2 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 @@ -7,13 +7,11 @@ import com.seibel.distanthorizons.common.wrappers.block.BiomeWrapper; import com.seibel.distanthorizons.common.wrappers.block.BlockStateWrapper; import com.seibel.distanthorizons.common.wrappers.block.ClientBlockStateColorCache; import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper; -import com.seibel.distanthorizons.core.api.internal.ClientApi; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; import com.seibel.distanthorizons.core.level.*; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhBlockPos; +import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos; import com.seibel.distanthorizons.core.pos.DhChunkPos; -import com.seibel.distanthorizons.core.util.ColorUtil; import com.seibel.distanthorizons.core.wrapperInterfaces.block.IBlockStateWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.chunk.IChunkWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.IBiomeWrapper; @@ -26,10 +24,12 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkSource; +import net.minecraft.world.phys.Vec3; import org.apache.logging.log4j.Logger; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.awt.*; import java.io.IOException; import java.util.concurrent.ConcurrentHashMap; @@ -207,12 +207,12 @@ public class ClientLevelWrapper implements IClientLevelWrapper @Override public IChunkWrapper tryGetChunk(DhChunkPos pos) { - if (!this.level.hasChunk(pos.x, pos.z)) + if (!this.level.hasChunk(pos.getX(), pos.getZ())) { return null; } - ChunkAccess chunk = this.level.getChunk(pos.x, pos.z, ChunkStatus.EMPTY, false); + ChunkAccess chunk = this.level.getChunk(pos.getX(), pos.getZ(), ChunkStatus.EMPTY, false); if (chunk == null) { return null; @@ -267,6 +267,13 @@ public class ClientLevelWrapper implements IClientLevelWrapper return this.parentDhLevel.getGenericRenderer(); } + @Override + public Color getCloudColor(float tickDelta) + { + Vec3 colorVec3 = this.level.getCloudColor(tickDelta); + return new Color((float)colorVec3.x, (float)colorVec3.y, (float)colorVec3.z); + } + //================// diff --git a/coreSubProjects b/coreSubProjects index b1f154a0e..e1e42d1ca 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit b1f154a0ea9eed1706dbac6ea5e52cf32e5c2119 +Subproject commit e1e42d1caf4c65c4fb524429fe6dd794264330bf From 855e6b8180467243991695eaa9304a0dbf673e24 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sat, 31 Aug 2024 21:57:53 -0500 Subject: [PATCH 07/18] Update pos getters and remove (hopefully) unneeded imports --- .../common/wrappers/McObjectConverter.java | 6 ++---- .../block/ClientBlockStateColorCache.java | 6 +----- .../common/wrappers/chunk/ChunkWrapper.java | 2 +- .../minecraft/MinecraftClientWrapper.java | 3 +-- .../minecraft/MinecraftRenderWrapper.java | 15 --------------- .../common/wrappers/world/ServerLevelWrapper.java | 7 +++---- .../BatchGenerationEnvironment.java | 4 ++-- .../mimicObject/DhLitWorldGenRegion.java | 2 -- .../worldGeneration/step/StepFeatures.java | 2 +- 9 files changed, 11 insertions(+), 36 deletions(-) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/McObjectConverter.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/McObjectConverter.java index 3066ddabf..98dd01dd8 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/McObjectConverter.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/McObjectConverter.java @@ -20,11 +20,9 @@ package com.seibel.distanthorizons.common.wrappers; import java.nio.FloatBuffer; -import java.util.function.BiConsumer; -import java.util.function.Consumer; import com.seibel.distanthorizons.core.enums.EDhDirection; -import com.seibel.distanthorizons.core.pos.DhBlockPos; +import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos; import com.seibel.distanthorizons.core.pos.DhChunkPos; import com.seibel.distanthorizons.core.util.math.Mat4f; @@ -138,7 +136,7 @@ public class McObjectConverter } public static BlockPos Convert(DhBlockPos wrappedPos) { return new BlockPos(wrappedPos.getX(), wrappedPos.getY(), wrappedPos.getZ()); } - public static ChunkPos Convert(DhChunkPos wrappedPos) { return new ChunkPos(wrappedPos.x, wrappedPos.z); } + public static ChunkPos Convert(DhChunkPos wrappedPos) { return new ChunkPos(wrappedPos.getX(), wrappedPos.getZ()); } public static Direction Convert(EDhDirection lodDirection) { return directions[lodDirection.ordinal()]; } public static EDhDirection Convert(Direction direction) { return lodDirections[direction.ordinal()]; } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/ClientBlockStateColorCache.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/ClientBlockStateColorCache.java index ec9e211cc..3179b7522 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/ClientBlockStateColorCache.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/ClientBlockStateColorCache.java @@ -19,13 +19,9 @@ package com.seibel.distanthorizons.common.wrappers.block; -import com.seibel.distanthorizons.common.wrappers.block.BiomeWrapper; -import com.seibel.distanthorizons.common.wrappers.block.TextureAtlasSpriteWrapper; -import com.seibel.distanthorizons.common.wrappers.block.TintWithoutLevelOverrider; import com.seibel.distanthorizons.common.wrappers.McObjectConverter; -import com.seibel.distanthorizons.common.wrappers.block.*; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhBlockPos; +import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos; import com.seibel.distanthorizons.core.util.ColorUtil; import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper; import net.minecraft.client.Minecraft; 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 28b8a4db3..ed9f7e038 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 @@ -23,7 +23,7 @@ import com.seibel.distanthorizons.common.wrappers.block.BiomeWrapper; import com.seibel.distanthorizons.common.wrappers.block.BlockStateWrapper; import com.seibel.distanthorizons.common.wrappers.worldGeneration.mimicObject.DhLitWorldGenRegion; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhBlockPos; +import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos; import com.seibel.distanthorizons.core.pos.DhChunkPos; import com.seibel.distanthorizons.core.wrapperInterfaces.block.IBlockStateWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.chunk.ChunkLightStorage; 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 684240b85..dcf6ccf41 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 @@ -39,14 +39,13 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftCli import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftSharedWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IProfilerWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper; -import com.seibel.distanthorizons.core.pos.DhBlockPos; +import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos; import com.seibel.distanthorizons.core.pos.DhChunkPos; import net.minecraft.CrashReport; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ServerData; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.resources.model.ModelManager; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; #if MC_VER < MC_1_19_2 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 defdf0103..e620076d2 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 @@ -21,18 +21,12 @@ package com.seibel.distanthorizons.common.wrappers.minecraft; import java.awt.Color; import java.lang.invoke.MethodHandles; -import java.util.Collection; -import java.util.HashSet; import java.util.concurrent.ConcurrentHashMap; -import java.util.stream.Collectors; import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.platform.NativeImage; -import com.mojang.blaze3d.systems.RenderSystem; -import com.seibel.distanthorizons.common.wrappers.McObjectConverter; import com.seibel.distanthorizons.common.wrappers.WrapperFactory; import com.seibel.distanthorizons.common.wrappers.misc.LightMapWrapper; -import com.seibel.distanthorizons.core.pos.DhChunkPos; import com.seibel.distanthorizons.core.dependencyInjection.ModAccessorInjector; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; @@ -42,8 +36,6 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.misc.ILightMapWrapper; import org.joml.Matrix4f; import org.joml.Vector3f; #else -import org.joml.Matrix4f; -import org.joml.Vector3f; #endif #if MC_VER >= MC_1_20_2 import net.minecraft.client.renderer.chunk.SectionRenderDispatcher; @@ -53,20 +45,14 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.AbstractOpt import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.IDimensionTypeWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper; -import com.seibel.distanthorizons.core.util.math.Mat4f; import com.seibel.distanthorizons.core.util.math.Vec3d; import com.seibel.distanthorizons.core.util.math.Vec3f; import com.seibel.distanthorizons.core.wrapperInterfaces.IWrapperFactory; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.IOptifineAccessor; -import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.ISodiumAccessor; -import com.seibel.distanthorizons.core.pos.DhBlockPos; import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.FogRenderer; -import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.core.BlockPos; import net.minecraft.world.effect.MobEffects; #if MC_VER < MC_1_17_1 import net.minecraft.tags.FluidTags; @@ -76,7 +62,6 @@ import org.lwjgl.opengl.GL15; #else import net.minecraft.world.level.material.FogType; #endif -import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import org.apache.logging.log4j.Logger; 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 e38e25758..b0231d980 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 @@ -30,7 +30,7 @@ import com.seibel.distanthorizons.common.wrappers.block.BlockStateWrapper; import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper; import com.seibel.distanthorizons.core.level.IDhLevel; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhBlockPos; +import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos; import com.seibel.distanthorizons.core.pos.DhChunkPos; import com.seibel.distanthorizons.core.wrapperInterfaces.block.IBlockStateWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.chunk.IChunkWrapper; @@ -48,7 +48,6 @@ import net.minecraft.world.level.chunk.status.ChunkStatus; #endif import org.apache.logging.log4j.Logger; -import org.jetbrains.annotations.Nullable; /** * @version 2022-9-16 @@ -132,8 +131,8 @@ public class ServerLevelWrapper implements IServerLevelWrapper @Override public IChunkWrapper tryGetChunk(DhChunkPos pos) { - if (!level.hasChunk(pos.x, pos.z)) return null; - ChunkAccess chunk = level.getChunk(pos.x, pos.z, ChunkStatus.FULL, false); + if (!level.hasChunk(pos.getX(), pos.getZ())) return null; + ChunkAccess chunk = level.getChunk(pos.getX(), pos.getZ(), ChunkStatus.FULL, false); if (chunk == null) return null; return new ChunkWrapper(chunk, level, this); } 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 0b70d2309..6311dfa60 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 @@ -398,8 +398,8 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv int borderSize = MAX_WORLD_GEN_CHUNK_BORDER_NEEDED; // genEvent.size - 1 converts the even width size to an odd number for MC compatability int refSize = (genEvent.size - 1) + (borderSize * 2); - int refPosX = genEvent.minPos.x - borderSize; - int refPosZ = genEvent.minPos.z - borderSize; + int refPosX = genEvent.minPos.getX() - borderSize; + int refPosZ = genEvent.minPos.getZ() - borderSize; LightGetterAdaptor lightGetterAdaptor = new LightGetterAdaptor(this.params.level); DummyLightEngine dummyLightEngine = new DummyLightEngine(lightGetterAdaptor); diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/DhLitWorldGenRegion.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/DhLitWorldGenRegion.java index ac1fb2aed..4c2641aa4 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/DhLitWorldGenRegion.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/mimicObject/DhLitWorldGenRegion.java @@ -20,13 +20,11 @@ package com.seibel.distanthorizons.common.wrappers.worldGeneration.mimicObject; import java.lang.invoke.MethodHandles; -import java.util.EnumSet; import java.util.List; import java.util.concurrent.locks.ReentrantLock; import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper; import com.seibel.distanthorizons.common.wrappers.worldGeneration.BatchGenerationEnvironment; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhBlockPos; import com.seibel.distanthorizons.core.util.LodUtil; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.SpawnerBlock; 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 962dd8e15..382d777dc 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 @@ -80,7 +80,7 @@ public final class StepFeatures worldGenRegion.setOverrideCenter(chunk.getPos()); environment.params.generator.applyBiomeDecoration(worldGenRegion, tParams.structFeat); #else - if (worldGenRegion.hasChunk(chunkWrapper.getChunkPos().x, chunkWrapper.getChunkPos().z)) + if (worldGenRegion.hasChunk(chunkWrapper.getChunkPos().getX(), chunkWrapper.getChunkPos().getZ())) { this.environment.params.generator.applyBiomeDecoration(worldGenRegion, chunk, tParams.structFeat.forWorldGenRegion(worldGenRegion)); } From 28e33b4c365f3858321040decd29ed119041e693 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sat, 31 Aug 2024 22:11:14 -0500 Subject: [PATCH 08/18] Fix MC 1.16+ compiling --- .../common/wrappers/minecraft/MinecraftRenderWrapper.java | 5 +++++ 1 file changed, 5 insertions(+) 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 e620076d2..7ad08a4e9 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 @@ -32,6 +32,11 @@ import com.seibel.distanthorizons.core.dependencyInjection.ModAccessorInjector; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.wrapperInterfaces.misc.ILightMapWrapper; +#if MC_VER > MC_1_17_1 +import net.minecraft.client.renderer.FogRenderer; +import com.mojang.blaze3d.systems.RenderSystem; +#endif + #if MC_VER < MC_1_19_4 import org.joml.Matrix4f; import org.joml.Vector3f; From cb613cf7df79453ca8451b38f289749603fec787 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sat, 31 Aug 2024 22:11:29 -0500 Subject: [PATCH 09/18] add disableUnchangedChunkCheck config --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index e1e42d1ca..fc90cf337 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit e1e42d1caf4c65c4fb524429fe6dd794264330bf +Subproject commit fc90cf33777cab176770872440bcb0b244589a29 From 39b1ec61ba86a61c249d34a9223602f5f1f43cdc Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 1 Sep 2024 15:04:27 -0500 Subject: [PATCH 10/18] Fix glass panes not affecting beacon colors --- .../wrappers/block/BlockStateWrapper.java | 34 ++++++++++++++++--- coreSubProjects | 2 +- 2 files changed, 31 insertions(+), 5 deletions(-) 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 126818de9..67747d694 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 @@ -30,6 +30,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.block.IBlockStateWrappe import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; +import net.minecraft.world.level.block.BeaconBeamBlock; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.SoundType; @@ -102,8 +103,9 @@ public class BlockStateWrapper implements IBlockStateWrapper private byte blockMaterialId = 0; private final boolean isBeaconBlock; - private final boolean isBeaconBaseBlock; - private final boolean isGlassBlock; + private final boolean isBeaconBaseBlock; + /** null if this block can't tint beacons */ + private final Color beaconTintColor; private final Color mapColor; @@ -139,6 +141,7 @@ public class BlockStateWrapper implements IBlockStateWrapper this.hashCode = Objects.hash(this.serialString); this.blockMaterialId = this.calculateEDhApiBlockMaterialId().index; + // beacon blocks String lowercaseSerial = this.serialString.toLowerCase(); boolean isBeaconBaseBlock = false; for (int i = 0; i < LodUtil.BEACON_BASE_BLOCK_NAME_LIST.size(); i++) @@ -152,7 +155,28 @@ public class BlockStateWrapper implements IBlockStateWrapper } this.isBeaconBaseBlock = isBeaconBaseBlock; this.isBeaconBlock = lowercaseSerial.contains("minecraft:beacon"); - this.isGlassBlock = lowercaseSerial.contains("glass"); + + // beacon tint color + Color beaconTintColor = null; + if (this.blockState != null + // beacon blocks also show up here, but since they block the beacon beam we don't want their color + && !this.isBeaconBlock) + { + Block block = this.blockState.getBlock(); + if (block instanceof BeaconBeamBlock) + { + int colorInt; + #if MC_VER <= MC_1_19_4 + colorInt = ((BeaconBeamBlock) block).getColor().getMaterialColor().col; + #else + colorInt = ((BeaconBeamBlock) block).getColor().getMapColor().col; + #endif + + beaconTintColor = ColorUtil.toColorObjRGB(colorInt); + } + } + this.beaconTintColor = beaconTintColor; + int mcColor = 0; if (this.blockState != null) @@ -399,10 +423,12 @@ public class BlockStateWrapper implements IBlockStateWrapper @Override public boolean isBeaconBaseBlock() { return this.isBeaconBaseBlock; } @Override - public boolean isGlassBlock() { return this.isGlassBlock; } + public boolean isBeaconTintBlock() { return this.beaconTintColor != null; } @Override public Color getMapColor() { return this.mapColor; } + @Override + public Color getBeaconTintColor() { return this.beaconTintColor; } @Override public byte getMaterialId() { return this.blockMaterialId; } diff --git a/coreSubProjects b/coreSubProjects index fc90cf337..ec012d9fd 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit fc90cf33777cab176770872440bcb0b244589a29 +Subproject commit ec012d9fd61d59106cc2bdd1aa2e016cb4cc84c7 From d56af5c38fbc0f614587005e02daed99a46e0869 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 1 Sep 2024 16:36:41 -0500 Subject: [PATCH 11/18] Fix some beacon rendering/updating issues --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index ec012d9fd..f3ef6f25f 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit ec012d9fd61d59106cc2bdd1aa2e016cb4cc84c7 +Subproject commit f3ef6f25f474937babcb798a361e9fec93320d84 From 8c62a40da9929b6fedbe4b80a50f2d90cbfe3de3 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 1 Sep 2024 17:02:49 -0500 Subject: [PATCH 12/18] Disable instanced rendering on Mac when Sodium is present Closes !793 (Generic Rendering crashes with Sodium on M1 Mac) --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index f3ef6f25f..1daa06fff 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit f3ef6f25f474937babcb798a361e9fec93320d84 +Subproject commit 1daa06fff45dea1188408991161335429222ac29 From ebccb2516be4eb26c3adc85a4d1e53829851ab53 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 1 Sep 2024 17:28:13 -0500 Subject: [PATCH 13/18] Cull beacons based on X/Z distance instead of 3D distance --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index 1daa06fff..c26631db5 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 1daa06fff45dea1188408991161335429222ac29 +Subproject commit c26631db57bf191f9776131ec9601cccd2f3c709 From eefc765823190f6fd7a5dad82197476952e5e69d Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 1 Sep 2024 21:10:32 -0500 Subject: [PATCH 14/18] Fix LODs flashing while moving --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index c26631db5..18e075538 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit c26631db57bf191f9776131ec9601cccd2f3c709 +Subproject commit 18e075538db8e558a391df371c9b5ee8bcb1e6e4 From fd89f569d0e1fd9307fa253f9dfb52c34d15a83f Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 1 Sep 2024 21:16:14 -0500 Subject: [PATCH 15/18] Fix MC 1.17.1 not compiling --- .../common/wrappers/minecraft/MinecraftRenderWrapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7ad08a4e9..272a78976 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 @@ -32,7 +32,7 @@ import com.seibel.distanthorizons.core.dependencyInjection.ModAccessorInjector; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.wrapperInterfaces.misc.ILightMapWrapper; -#if MC_VER > MC_1_17_1 +#if MC_VER >= MC_1_17_1 import net.minecraft.client.renderer.FogRenderer; import com.mojang.blaze3d.systems.RenderSystem; #endif From 86473e022e566ceeafb5ce01bc220425f6b8f281 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Tue, 3 Sep 2024 07:03:30 -0500 Subject: [PATCH 16/18] Fix referencing unavailable GLFW methods for MC 1.18.2 and lower --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index 18e075538..50c570183 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 18e075538db8e558a391df371c9b5ee8bcb1e6e4 +Subproject commit 50c570183618ec09d98fa103309cf2db83ab37b8 From ab4ef429db197a1b8b77fb40b1f6cf9f3f0bf2ea Mon Sep 17 00:00:00 2001 From: James Seibel Date: Wed, 4 Sep 2024 06:58:28 -0500 Subject: [PATCH 17/18] Up version 2.2.1-dev -> 2.2.1 and API 3.0.0 -> 3.0.1 --- coreSubProjects | 2 +- gradle.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/coreSubProjects b/coreSubProjects index 50c570183..57c5b2d5f 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 50c570183618ec09d98fa103309cf2db83ab37b8 +Subproject commit 57c5b2d5fce5181a5e49da6b2f5f61387004b411 diff --git a/gradle.properties b/gradle.properties index d100253ec..0edbd8b8e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ org.gradle.caching=true # Mod Info mod_name=DistantHorizons -mod_version=2.2.1-a-dev +mod_version=2.2.1-a api_version=3.0.0 maven_group=com.seibel.distanthorizons mod_readable_name=Distant Horizons From d208b0ab191f947d18c939d5e94e0af63fc5f565 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Wed, 4 Sep 2024 06:59:07 -0500 Subject: [PATCH 18/18] Up version number 2.2.1 -> 2.2.2-dev --- coreSubProjects | 2 +- gradle.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/coreSubProjects b/coreSubProjects index 57c5b2d5f..4712a77d0 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 57c5b2d5fce5181a5e49da6b2f5f61387004b411 +Subproject commit 4712a77d00fcd803e6ee61eaca55ac34c85d0dce diff --git a/gradle.properties b/gradle.properties index 0edbd8b8e..c8dc74a39 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ org.gradle.caching=true # Mod Info mod_name=DistantHorizons -mod_version=2.2.1-a +mod_version=2.2.2-a-dev api_version=3.0.0 maven_group=com.seibel.distanthorizons mod_readable_name=Distant Horizons