From 87fec5276dbe049448e33c1b8e13ba87bbc32a55 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 20 Aug 2023 14:15:06 -0500 Subject: [PATCH 1/8] Add world gen task count to the F3 menu --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index 461302d29..311326301 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 461302d290c1941dbd76dc41ec438184c1766aae +Subproject commit 3113263012f1c82863b45ea49920698134449bee From 50e9a51f56422f39c6e249ae02b8c6304e0c2a9a Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 20 Aug 2023 14:47:36 -0500 Subject: [PATCH 2/8] Fix LevelWrappers not unloading correctly --- .../wrappers/world/ClientLevelWrapper.java | 27 ++-------- .../wrappers/world/ServerLevelWrapper.java | 52 +++++++------------ coreSubProjects | 2 +- 3 files changed, 23 insertions(+), 58 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 cc87ad645..377276816 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 @@ -68,22 +68,12 @@ public class ClientLevelWrapper implements IClientLevelWrapper 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() { try { - // commented out because this breaks when traveling between dimensions, - // serverPlayer.getLevel() will return the previously loaded level, which causes issues -// PlayerList serverPlayerList = MinecraftClientWrapper.INSTANCE.mc.getSingleplayerServer().getPlayerList(); -// ServerPlayer serverPlayer = serverPlayerList.getPlayer(MinecraftClientWrapper.INSTANCE.mc.player.getUUID()); -// return ServerLevelWrapper.getWrapper(serverPlayer.getLevel()); - - Iterable serverLevels = MinecraftClientWrapper.INSTANCE.mc.getSingleplayerServer().getAllLevels(); // attempt to find the server level with the same dimension type @@ -108,14 +98,6 @@ public class ClientLevelWrapper implements IClientLevelWrapper return null; } } - public static void cleanCheck() - { - 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(); - } - } @@ -135,12 +117,6 @@ public class ClientLevelWrapper implements IClientLevelWrapper @Override public EDhApiLevelType getLevelType() { return EDhApiLevelType.CLIENT_LEVEL; } - @Override - 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 this.level.getBrightness(LightLayer.SKY, new BlockPos(x, y, z)); } - public ClientLevel getLevel() { return this.level; } @Override @@ -198,6 +174,9 @@ public class ClientLevelWrapper implements IClientLevelWrapper @Override public ClientLevel getWrappedMcObject() { return this.level; } + @Override + public void onUnload() { LEVEL_WRAPPER_BY_CLIENT_LEVEL.remove(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 f018b531e..c8aa907cb 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 @@ -38,9 +38,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.world.IBiomeWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.IServerLevelWrapper; -import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.LightLayer; import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkSource; import net.minecraft.world.level.chunk.ChunkStatus; @@ -54,33 +52,30 @@ import org.jetbrains.annotations.Nullable; public class ServerLevelWrapper implements IServerLevelWrapper { private static final Logger LOGGER = DhLoggerBuilder.getLogger(); - private static final ConcurrentHashMap - levelWrapperMap = new ConcurrentHashMap<>(); - - public static ServerLevelWrapper getWrapper(ServerLevel level) - { - return levelWrapperMap.computeIfAbsent(level, ServerLevelWrapper::new); - } - public static void closeWrapper(ServerLevel level) - { - levelWrapperMap.remove(level); - } - public static void cleanCheck() - { - if (!levelWrapperMap.isEmpty()) - { - LOGGER.warn(levelWrapperMap.size() + " server levels haven't been freed!"); - levelWrapperMap.clear(); - } - } + private static final ConcurrentHashMap LEVEL_WRAPPER_BY_SERVER_LEVEL = new ConcurrentHashMap<>(); final ServerLevel level; ServerBlockDetailMap blockMap = new ServerBlockDetailMap(this); + + + //==============// + // constructors // + //==============// + + public static ServerLevelWrapper getWrapper(ServerLevel level) { return LEVEL_WRAPPER_BY_SERVER_LEVEL.computeIfAbsent(level, ServerLevelWrapper::new); } + public ServerLevelWrapper(ServerLevel level) { this.level = level; } + + + + //=========// + // methods // + //=========// + @Nullable @Override public IClientLevelWrapper tryGetClientLevelWrapper() @@ -109,18 +104,6 @@ public class ServerLevelWrapper implements IServerLevelWrapper @Override public EDhApiLevelType getLevelType() { return EDhApiLevelType.SERVER_LEVEL; } - @Override - public int getBlockLight(int x, int y, int z) - { - return 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 ServerLevel getLevel() { return level; @@ -188,6 +171,9 @@ public class ServerLevelWrapper implements IServerLevelWrapper return level; } + @Override + public void onUnload() { LEVEL_WRAPPER_BY_SERVER_LEVEL.remove(this.level); } + @Override public String toString() { diff --git a/coreSubProjects b/coreSubProjects index 311326301..f57c52b2d 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 3113263012f1c82863b45ea49920698134449bee +Subproject commit f57c52b2d08f430155f5619cb76472e8bf67d13b From 3bc0104268e847f4bed371ae5fbd80249cc2fa0b Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 20 Aug 2023 15:13:37 -0500 Subject: [PATCH 3/8] hide unused multiplayer configs --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index f57c52b2d..2964acfc8 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit f57c52b2d08f430155f5619cb76472e8bf67d13b +Subproject commit 2964acfc8cc0558435989c2dd4aa4b6c81e0c292 From e1147f3f6089208f9c31a21681506370f03ec8c2 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 20 Aug 2023 17:07:30 -0500 Subject: [PATCH 4/8] Replace ChunkWrapper LinkedList with ArrayList --- .../distanthorizons/common/wrappers/chunk/ChunkWrapper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 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 3e10d4272..f502b1d3d 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 @@ -71,7 +71,7 @@ public class ChunkWrapper implements IChunkWrapper private final byte[] blockLightArray; private final byte[] skyLightArray; - private LinkedList blockLightPosList = null; + private ArrayList blockLightPosList = null; private boolean useDhLighting; @@ -314,7 +314,7 @@ public class ChunkWrapper implements IChunkWrapper // only populate the list once if (this.blockLightPosList == null) { - this.blockLightPosList = new LinkedList<>(); + this.blockLightPosList = new ArrayList<>(); #if PRE_MC_1_20_1 From 246bd54b550b68afd01a947a1b5726a0b99d688e Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 20 Aug 2023 18:22:14 -0500 Subject: [PATCH 5/8] Update coreSubProjects --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index 2964acfc8..3b14bd655 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 2964acfc8cc0558435989c2dd4aa4b6c81e0c292 +Subproject commit 3b14bd655c743fc9a02c80b942accdbbcfc9d138 From ef72cdc0e657db399acad86da6c879cd9dc5ebfa Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 20 Aug 2023 18:38:27 -0500 Subject: [PATCH 6/8] Add a profiler section for debug wireframe rendering --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index 3b14bd655..786c445a9 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 3b14bd655c743fc9a02c80b942accdbbcfc9d138 +Subproject commit 786c445a915df45a7e58c0825747767202c7c0ce From e5ee46335d005bc6b76d726b5c91fde66b4d793d Mon Sep 17 00:00:00 2001 From: James Seibel Date: Mon, 21 Aug 2023 07:46:58 -0500 Subject: [PATCH 7/8] Fix potential null pointers in DhWorld shutdown --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index 786c445a9..1e05972e3 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 786c445a915df45a7e58c0825747767202c7c0ce +Subproject commit 1e05972e3cac8431cd5e54d9209bad800b552fc5 From 531a308b39058853a3aa969186e646cfef2399e4 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Tue, 22 Aug 2023 07:45:33 -0500 Subject: [PATCH 8/8] Fix file saving --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index 1e05972e3..794e9afc1 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 1e05972e3cac8431cd5e54d9209bad800b552fc5 +Subproject commit 794e9afc10e33e4f72849ff7a560ff596622789e