From 3db1002af1ab2cabe33444a464094512d13800e5 Mon Sep 17 00:00:00 2001 From: ChomeNS <95471003+ChomeNS@users.noreply.github.com> Date: Sun, 4 May 2025 18:56:30 +0700 Subject: [PATCH] fix: denis check and use AtomicInteger on the thingy --- build-number.txt | 2 +- .../chomens_bot/commands/MusicCommand.java | 14 +++++++++++++- .../chomens_bot/commands/UrbanCommand.java | 9 +++++---- .../chomens_bot/plugins/CommandHandlerPlugin.java | 10 +++++----- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/build-number.txt b/build-number.txt index 260f13dd..0048d20a 100644 --- a/build-number.txt +++ b/build-number.txt @@ -1 +1 @@ -3076 \ No newline at end of file +3078 \ No newline at end of file diff --git a/src/main/java/me/chayapak1/chomens_bot/commands/MusicCommand.java b/src/main/java/me/chayapak1/chomens_bot/commands/MusicCommand.java index 6e6da826..aeb53747 100644 --- a/src/main/java/me/chayapak1/chomens_bot/commands/MusicCommand.java +++ b/src/main/java/me/chayapak1/chomens_bot/commands/MusicCommand.java @@ -2,12 +2,14 @@ package me.chayapak1.chomens_bot.commands; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import me.chayapak1.chomens_bot.Bot; +import me.chayapak1.chomens_bot.Main; import me.chayapak1.chomens_bot.command.Command; import me.chayapak1.chomens_bot.command.CommandContext; import me.chayapak1.chomens_bot.command.CommandException; import me.chayapak1.chomens_bot.command.TrustLevel; import me.chayapak1.chomens_bot.command.contexts.ConsoleCommandContext; import me.chayapak1.chomens_bot.data.chat.ChatPacketType; +import me.chayapak1.chomens_bot.data.listener.Listener; import me.chayapak1.chomens_bot.plugins.MusicPlayerPlugin; import me.chayapak1.chomens_bot.song.Instrument; import me.chayapak1.chomens_bot.song.Loop; @@ -31,12 +33,16 @@ import java.util.Arrays; import java.util.Base64; import java.util.List; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; import static me.chayapak1.chomens_bot.util.StringUtilities.isNotNullAndNotBlank; -public class MusicCommand extends Command { +public class MusicCommand extends Command implements Listener { private static final Path ROOT = MusicPlayerPlugin.SONG_DIR; + private static final AtomicInteger commandsPerSecond = new AtomicInteger(); + public MusicCommand () { super( "music", @@ -65,10 +71,16 @@ public class MusicCommand extends Command { false, new ChatPacketType[] { ChatPacketType.DISGUISED } ); + + Main.EXECUTOR.scheduleAtFixedRate(() -> commandsPerSecond.set(0), 0, 1, TimeUnit.SECONDS); } @Override public Component execute (final CommandContext context) throws CommandException { + // denis check + if (commandsPerSecond.get() > 3) return null; + else commandsPerSecond.getAndIncrement(); + if (context.bot.music.locked && !(context instanceof ConsoleCommandContext)) throw new CommandException(Component.text("Managing music is currently locked")); diff --git a/src/main/java/me/chayapak1/chomens_bot/commands/UrbanCommand.java b/src/main/java/me/chayapak1/chomens_bot/commands/UrbanCommand.java index dd9b9056..e865e9ad 100644 --- a/src/main/java/me/chayapak1/chomens_bot/commands/UrbanCommand.java +++ b/src/main/java/me/chayapak1/chomens_bot/commands/UrbanCommand.java @@ -26,9 +26,10 @@ import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.text.DecimalFormat; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; public class UrbanCommand extends Command { - public int requestsPerSecond = 0; + public final AtomicInteger requestsPerSecond = new AtomicInteger(); public UrbanCommand () { super( @@ -41,11 +42,11 @@ public class UrbanCommand extends Command { new ChatPacketType[]{ ChatPacketType.DISGUISED } ); - Main.EXECUTOR.scheduleAtFixedRate(() -> requestsPerSecond = 0, 0, 1, TimeUnit.SECONDS); + Main.EXECUTOR.scheduleAtFixedRate(() -> requestsPerSecond.set(0), 0, 1, TimeUnit.SECONDS); } public Component execute (final CommandContext context) throws CommandException { - if (requestsPerSecond > 3) throw new CommandException(Component.text("Too many requests")); + if (requestsPerSecond.get() > 3) throw new CommandException(Component.text("Too many requests")); final Bot bot = context.bot; @@ -186,7 +187,7 @@ public class UrbanCommand extends Command { } }); - requestsPerSecond++; + requestsPerSecond.getAndIncrement(); return null; } diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/CommandHandlerPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/CommandHandlerPlugin.java index f1a05af2..3928683d 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/CommandHandlerPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/CommandHandlerPlugin.java @@ -19,6 +19,7 @@ import net.kyori.adventure.text.format.NamedTextColor; import java.util.Arrays; import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; public class CommandHandlerPlugin implements Listener { public static final List COMMANDS = ObjectList.of( @@ -83,7 +84,7 @@ public class CommandHandlerPlugin implements Listener { private final Bot bot; - private int commandPerSecond = 0; + private static final AtomicInteger commandsPerSecond = new AtomicInteger(); public CommandHandlerPlugin (final Bot bot) { this.bot = bot; @@ -93,7 +94,7 @@ public class CommandHandlerPlugin implements Listener { @Override public void onLocalSecondTick () { - commandPerSecond = 0; + commandsPerSecond.set(0); } // BETTER QUALITY than the js version @@ -120,9 +121,8 @@ public class CommandHandlerPlugin implements Listener { final boolean bypass = context instanceof ConsoleCommandContext || context instanceof ChomeNSModCommandContext; - if (commandPerSecond > 100) return; - - commandPerSecond++; + if (commandsPerSecond.get() > 100) return; + else commandsPerSecond.getAndIncrement(); final String[] splitInput = input.trim().split("\\s+");