From f6a3cad40abee2fe6ba7003db90dc45ee85b4013 Mon Sep 17 00:00:00 2001 From: ChomeNS <95471003+ChomeNS@users.noreply.github.com> Date: Thu, 13 Mar 2025 09:02:18 +0700 Subject: [PATCH] fix: some core refilling issues when switching to dimensions with different minimum Y levels like `minecraft:the_end` --- build-number.txt | 2 +- .../java/me/chayapak1/chomens_bot/Bot.java | 4 +- .../chomens_bot/plugins/CorePlugin.java | 44 +++++++++++++------ .../chomens_bot/plugins/WorldPlugin.java | 2 + 4 files changed, 36 insertions(+), 16 deletions(-) diff --git a/build-number.txt b/build-number.txt index e5aa8385..8542cbbf 100644 --- a/build-number.txt +++ b/build-number.txt @@ -1 +1 @@ -1776 \ No newline at end of file +1779 \ No newline at end of file diff --git a/src/main/java/me/chayapak1/chomens_bot/Bot.java b/src/main/java/me/chayapak1/chomens_bot/Bot.java index dc64b4d5..3ebd1b5d 100644 --- a/src/main/java/me/chayapak1/chomens_bot/Bot.java +++ b/src/main/java/me/chayapak1/chomens_bot/Bot.java @@ -80,6 +80,7 @@ public class Bot extends SessionAdapter { public SelfCarePlugin selfCare; public QueryPlugin query; public ExtrasMessengerPlugin extrasMessenger; + public WorldPlugin world; public CorePlugin core; public TeamPlugin team; public PlayersPlugin players; @@ -103,7 +104,6 @@ public class Bot extends SessionAdapter { public PacketSnifferPlugin packetSniffer; public VoiceChatPlugin voiceChat; public TeamJoinerPlugin teamJoiner; - public WorldPlugin world; public AuthPlugin auth; public ScreensharePlugin screenshare; public FormatCheckerPlugin formatChecker; @@ -132,6 +132,7 @@ public class Bot extends SessionAdapter { this.selfCare = new SelfCarePlugin(this); this.query = new QueryPlugin(this); this.extrasMessenger = new ExtrasMessengerPlugin(this); + this.world = new WorldPlugin(this); this.core = new CorePlugin(this); this.team = new TeamPlugin(this); this.players = new PlayersPlugin(this); @@ -155,7 +156,6 @@ public class Bot extends SessionAdapter { this.packetSniffer = new PacketSnifferPlugin(this); this.voiceChat = new VoiceChatPlugin(this); this.teamJoiner = new TeamJoinerPlugin(this); - this.world = new WorldPlugin(this); this.auth = new AuthPlugin(this); // this.screenshare = new ScreensharePlugin(this); this.formatChecker = new FormatCheckerPlugin(this); diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/CorePlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/CorePlugin.java index 47dccf8c..8a7e44cc 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/CorePlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/CorePlugin.java @@ -26,7 +26,10 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.S import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerActionPacket; import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundUseItemOnPacket; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ScheduledFuture; @@ -103,6 +106,13 @@ public class CorePlugin extends PositionPlugin.Listener { } }); + bot.world.addListener(new WorldPlugin.Listener() { + @Override + public void worldChanged (String dimension) { + CorePlugin.this.worldChanged(); + } + }); + bot.tick.addListener(new TickPlugin.Listener() { @Override public void onTick() { @@ -392,18 +402,6 @@ public class CorePlugin extends PositionPlugin.Listener { Math.abs(botChunkPosX - coreChunkPosX) > bot.world.simulationDistance || Math.abs(botChunkPosZ - coreChunkPosZ) > bot.world.simulationDistance ) { - from = Vector3i.from( - fromSize.getX() + botChunkPosX * 16, - MathUtilities.clamp(fromSize.getY(), bot.world.minY, bot.world.maxY), - fromSize.getZ() + botChunkPosZ * 16 - ); - - to = Vector3i.from( - toSize.getX() + botChunkPosX * 16, - MathUtilities.clamp(toSize.getY(), bot.world.minY, bot.world.maxY), - toSize.getZ() + botChunkPosZ * 16 - ); - reset(); refill(); } @@ -416,7 +414,27 @@ public class CorePlugin extends PositionPlugin.Listener { } } + public void worldChanged () { + reset(); + refill(); + } + public void reset () { + final int botChunkPosX = (int) Math.floor(bot.position.position.getX() / 16); + final int botChunkPosZ = (int) Math.floor(bot.position.position.getZ() / 16); + + from = Vector3i.from( + fromSize.getX() + botChunkPosX * 16, + MathUtilities.clamp(fromSize.getY(), bot.world.minY, bot.world.maxY), + fromSize.getZ() + botChunkPosZ * 16 + ); + + to = Vector3i.from( + toSize.getX() + botChunkPosX * 16, + MathUtilities.clamp(toSize.getY(), bot.world.minY, bot.world.maxY), + toSize.getZ() + botChunkPosZ * 16 + ); + block = Vector3i.from(from); } diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/WorldPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/WorldPlugin.java index d2e25dd9..4a99ddfb 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/WorldPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/WorldPlugin.java @@ -131,6 +131,8 @@ public class WorldPlugin extends Bot.Listener { chunks.get(chunkPos).setBlock(x & 15, y, z & 15, id); } + public void addListener (Listener listener) { listeners.add(listener); } + public static class Listener { public void worldChanged (String dimension) {} }