diff --git a/build-number.txt b/build-number.txt index 46ea074..19261c2 100644 --- a/build-number.txt +++ b/build-number.txt @@ -1 +1 @@ -2245 \ No newline at end of file +2248 \ No newline at end of file diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/ChatPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/ChatPlugin.java index a33820e..98ffad7 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/ChatPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/ChatPlugin.java @@ -53,7 +53,7 @@ public class ChatPlugin extends Bot.Listener { public final List<Component> chatTypes = new ArrayList<>(); - private final ConcurrentLinkedQueue<String> queue = new ConcurrentLinkedQueue<>(); + private final Queue<String> queue = new ConcurrentLinkedQueue<>(); public final int queueDelay; 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 2d22628..5a35550 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/CorePlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/CorePlugin.java @@ -27,14 +27,12 @@ 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.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; public class CorePlugin extends Bot.Listener @@ -46,7 +44,7 @@ public class CorePlugin private final List<Listener> listeners = new ArrayList<>(); - public boolean ready = false; + public volatile boolean ready = false; private ScheduledFuture<?> refillTask; @@ -56,12 +54,12 @@ public class CorePlugin public Vector3i from; public Vector3i to; - public Vector3i block = null; + public volatile Vector3i block = null; - public final ConcurrentLinkedQueue<String> placeBlockQueue = new ConcurrentLinkedQueue<>(); + public final Queue<String> placeBlockQueue = new ConcurrentLinkedQueue<>(); - private int commandsPerTick = 0; - private int commandsPerSecond = 0; + private final AtomicInteger commandsPerTick = new AtomicInteger(0); + private final AtomicInteger commandsPerSecond = new AtomicInteger(0); private boolean shouldRefill = false; @@ -83,7 +81,7 @@ public class CorePlugin if (hasRateLimit() && hasReset()) { bot.executor.scheduleAtFixedRate( - () -> commandsPerSecond = 0, + () -> commandsPerSecond.set(0), 0, bot.options.coreRateLimit.reset, TimeUnit.MILLISECONDS @@ -97,22 +95,18 @@ public class CorePlugin @Override public void onTick () { - if (commandsPerTick > 0) commandsPerTick--; + if (commandsPerTick.get() > 0) commandsPerTick.decrementAndGet(); - try { - if (placeBlockQueue.size() > 300) { - placeBlockQueue.clear(); - return; - } - - final String command = placeBlockQueue.poll(); - - if (command == null) return; - - forceRunPlaceBlock(command); - } catch (Exception e) { - bot.logger.error(e); + if (placeBlockQueue.size() > 300) { + placeBlockQueue.clear(); + return; } + + final String command = placeBlockQueue.poll(); + + if (command == null) return; + + forceRunPlaceBlock(command); } @Override @@ -136,7 +130,7 @@ public class CorePlugin } public boolean isRateLimited () { - return commandsPerSecond > bot.options.coreRateLimit.limit; + return commandsPerSecond.get() > bot.options.coreRateLimit.limit; } private void forceRun (String command) { @@ -144,7 +138,7 @@ public class CorePlugin // to still run the command, even if forced. if (!ready || command.length() > 32767) return; - commandsPerTick++; + commandsPerTick.incrementAndGet(); if (!bot.serverFeatures.hasNamespaces) command = StringUtilities.removeNamespace(command); @@ -193,7 +187,7 @@ public class CorePlugin forceRun(command); - if (hasRateLimit()) commandsPerSecond++; + if (hasRateLimit()) commandsPerSecond.incrementAndGet(); } else if (command.length() < 256) { bot.chat.send("/" + command); } @@ -324,9 +318,9 @@ public class CorePlugin int y = -64; int z = toSize.getZ(); - while (commandsPerTick > (16 * 16)) { + while (commandsPerTick.get() > 16 * 16) { y++; - commandsPerTick -= 16 * 16; + commandsPerTick.getAndAdd(-(16 * 16)); } toSize = Vector3i.from(x, y, z); @@ -388,7 +382,7 @@ public class CorePlugin position.getZ() >= from.getZ() && position.getZ() <= to.getZ(); } - private void incrementBlock () { + private synchronized void incrementBlock () { int x = block.getX() + 1; int y = block.getY(); int z = block.getZ(); @@ -451,7 +445,7 @@ public class CorePlugin reset(); } - public void recalculateRelativePositions() { + public void recalculateRelativePositions () { final int botChunkPosX = (int) Math.floor(bot.position.position.getX() / 16); final int botChunkPosZ = (int) Math.floor(bot.position.position.getZ() / 16); diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/MusicPlayerPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/MusicPlayerPlugin.java index 185fce4..5a0ca34 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/MusicPlayerPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/MusicPlayerPlugin.java @@ -23,11 +23,12 @@ import java.io.IOException; import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; -import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedList; import java.util.List; import java.util.concurrent.TimeUnit; -// Author: _ChipMC_ & chayapak <3 +// Author: _ChipMC_ & hhhzzzsss public class MusicPlayerPlugin extends Bot.Listener implements CorePlugin.Listener { public static final String SELECTOR = "@a[tag=!nomusic,tag=!chomens_bot_nomusic,tag=!custompitch]"; public static final String CUSTOM_PITCH_SELECTOR = "@a[tag=!nomusic,tag=!chomens_bot_nomusic,tag=custompitch]"; @@ -45,7 +46,7 @@ public class MusicPlayerPlugin extends Bot.Listener implements CorePlugin.Listen } public Song currentSong; - public final List<Song> songQueue = new ArrayList<>(); + public final List<Song> songQueue = Collections.synchronizedList(new LinkedList<>()); public SongLoaderThread loaderThread = null; public Loop loop = Loop.OFF;