add stuff fix stuff #69420

This commit is contained in:
Chayapak 2023-06-25 14:19:13 +07:00
parent e0265ef254
commit aa6a2125c0
6 changed files with 49 additions and 58 deletions

View file

@ -43,7 +43,7 @@ public class Configuration {
@Getter public Position start = new Position();
@Getter public Position end = new Position();
@Getter public int refillInterval = (60 * 5) * 1000; // 5 minutes
@Getter public String customName = "[{\"text\":\"ChomeNS \",\"color\":\"yellow\"},{\"text\":\"Core\",\"color\":\"green\"},{\"text\":\"\",\"color\":\"gold\"}]";
@Getter public String customName = "{\"text\":\"@\"}";
}
public static class Position {
@ -122,5 +122,11 @@ public class Configuration {
@Getter public int reconnectDelay = 2000;
@Getter public boolean removeNamespaces = false;
@Getter public int chatQueueDelay = 125;
@Getter public CoreRateLimit coreRateLimit = new CoreRateLimit();
public static class CoreRateLimit {
@Getter public int limit = 0;
@Getter public int reset = 0;
}
}
}

View file

@ -210,16 +210,7 @@ public class BossbarManagerPlugin extends Bot.Listener {
if (bossBar.id != null && bossBar.id.equals(bossBarPrefix + name)) return bossBars.get(bossBar.uuid);
}
return new BotBossBar(
Component.empty(),
"@a",
BossBarColor.WHITE,
BossBarDivision.NONE,
false,
0,
0,
bot
);
return null;
}
public BotBossBar get (UUID uuid) {
@ -227,15 +218,6 @@ public class BossbarManagerPlugin extends Bot.Listener {
if (bossBar.getValue().uuid == uuid) return bossBar.getValue();
}
return new BotBossBar(
Component.empty(),
"@a",
BossBarColor.WHITE,
BossBarDivision.NONE,
false,
0,
0,
bot
);
return null;
}
}

View file

@ -6,7 +6,6 @@ import com.github.steveice10.mc.protocol.data.game.entity.player.Hand;
import com.github.steveice10.mc.protocol.data.game.entity.player.PlayerAction;
import com.github.steveice10.mc.protocol.data.game.level.block.BlockChangeEntry;
import com.github.steveice10.mc.protocol.data.game.level.block.CommandBlockMode;
import com.github.steveice10.mc.protocol.packet.ingame.clientbound.ClientboundCommandsPacket;
import com.github.steveice10.mc.protocol.packet.ingame.clientbound.level.ClientboundBlockUpdatePacket;
import com.github.steveice10.mc.protocol.packet.ingame.clientbound.level.ClientboundLevelChunkWithLightPacket;
import com.github.steveice10.mc.protocol.packet.ingame.clientbound.level.ClientboundSectionBlocksUpdatePacket;
@ -56,7 +55,7 @@ public class CorePlugin extends PositionPlugin.Listener {
private final boolean kaboom;
@Getter private final List<String> queue = new ArrayList<>();
@Getter private int commandsPerSecond = 0;
public CorePlugin (Bot bot) {
this.bot = bot;
@ -77,14 +76,14 @@ public class CorePlugin extends PositionPlugin.Listener {
bot.position().addListener(this);
bot.tick().addListener(new TickPlugin.Listener() {
@Override
public void onTick() {
CorePlugin.this.onTick();
if (bot.options().coreRateLimit().limit() != 0 && bot.options().coreRateLimit().reset() != 0) {
bot.executor().scheduleAtFixedRate(
() -> commandsPerSecond = 0,
0,
bot.options().coreRateLimit().reset(),
TimeUnit.MILLISECONDS
);
}
});
bot.executor().scheduleAtFixedRate(() -> commandsPerSecond = 0, 0, 1, TimeUnit.SECONDS);
bot.addListener(new Bot.Listener() {
@Override
@ -106,16 +105,6 @@ public class CorePlugin extends PositionPlugin.Listener {
});
}
private int commandsPerSecond = 0;
private void onTick () {
if (queue.isEmpty()) return;
forceRun(queue.get(0));
queue.remove(0);
}
private void forceRun (String command) {
bot.session().send(new ServerboundSetCommandBlockPacket(
absoluteCorePosition(),
@ -133,8 +122,10 @@ public class CorePlugin extends PositionPlugin.Listener {
if (!ready) return;
if (bot.options().useCore()) {
if (commandsPerSecond >= 100) queue.add(command);
else forceRun(command);
if (bot.options().coreRateLimit().limit() != 0 && commandsPerSecond > bot.options().coreRateLimit().limit()) return;
forceRun(command);
commandsPerSecond++;
} else if (command.length() < 256) {
bot.chat().send("/" + command);
}

View file

@ -16,7 +16,6 @@ import net.kyori.adventure.text.format.NamedTextColor;
import java.io.File;
import java.net.URL;
import java.nio.file.Path;
import java.text.DecimalFormat;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
@ -114,16 +113,22 @@ public class MusicPlayerPlugin extends Bot.Listener {
currentSong.play();
}
if (
bot.options().coreRateLimit().limit() != 0 &&
bot.core().commandsPerSecond() > bot.options().coreRateLimit().limit()
) currentSong.pause();
else currentSong.play();
if (currentSong.paused && ticksUntilPausedBossbar-- < 0) return;
else ticksUntilPausedBossbar = 20 - (((int) bot.tps().getTickRate()) - 20);
BotBossBar bossBar = bot.bossbar().get(bossbarName);
if (bossBar == null) bossBar = addBossBar();
if (bossBar == null && bot.bossbar().enabled()) bossBar = addBossBar();
final long currentTime = Instant.now().toEpochMilli();
if (currentTime >= nextBossBarUpdate) {
if (currentTime >= nextBossBarUpdate && bossBar != null) {
bossBar.setTitle(generateBossbar());
bossBar.setColor(pitch > 0 ? BossBarColor.PURPLE : BossBarColor.YELLOW);
bossBar.setValue((int) Math.floor(currentSong.time * speed));
@ -214,20 +219,10 @@ public class MusicPlayerPlugin extends Bot.Listener {
}
public Component generateBossbar () {
final DecimalFormat formatter = new DecimalFormat("#,###");
Component component = Component.empty()
.append(Component.empty().append(currentSong.name).color(pitch > 0 ? NamedTextColor.LIGHT_PURPLE : NamedTextColor.GREEN))
.append(Component.text(" | ").color(NamedTextColor.DARK_GRAY))
.append(Component.translatable("%s / %s", formatTime((long) (currentSong.time * speed)).color(NamedTextColor.GRAY), formatTime(currentSong.length).color(NamedTextColor.GRAY)).color(NamedTextColor.DARK_GRAY))
.append(Component.text(" | ").color(NamedTextColor.DARK_GRAY))
.append(
Component.translatable(
"%s / %s",
Component.text(formatter.format(currentSong.position), NamedTextColor.GRAY),
Component.text(formatter.format(currentSong.size()), NamedTextColor.GRAY)
).color(NamedTextColor.DARK_GRAY)
);
.append(Component.translatable("%s / %s", formatTime((long) (currentSong.time * speed)).color(NamedTextColor.GRAY), formatTime(currentSong.length).color(NamedTextColor.GRAY)).color(NamedTextColor.DARK_GRAY));
if (currentSong.paused) {
return component

View file

@ -7,6 +7,7 @@ import land.chipmunk.chayapak.chomens_bot.Main;
import java.io.*;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
public class PersistentDataUtilities {
@ -18,6 +19,8 @@ public class PersistentDataUtilities {
private static final ScheduledExecutorService executor = Main.executor;
private static ScheduledFuture<?> future = null;
static {
init();
}
@ -41,11 +44,21 @@ public class PersistentDataUtilities {
e.printStackTrace();
}
executor.scheduleAtFixedRate(PersistentDataUtilities::write, 0, 100, TimeUnit.MILLISECONDS);
future = executor.scheduleAtFixedRate(PersistentDataUtilities::write, 0, 100, TimeUnit.MILLISECONDS);
Runtime.getRuntime().addShutdownHook(
new Thread(() -> {
future.cancel(true);
write();
})
);
}
private static void write () {
try {
writer.close();
writer = new FileWriter(file, false);
writer.write(jsonObject.toString());

View file

@ -90,6 +90,7 @@ bots:
# useChat - when the bot tellraws it will chat instead of using the core to run tellraw
# hasEssentials - if the server has essentials plugin just set it to true!! ! !!31
# removeNamespaces - when the bot sends a command it will remove like `minecraft:` for example if set to true
# coreRateLimit - will ignore commands if reached the ratelimit
- host: 'localhost'
port: 25565
@ -103,6 +104,9 @@ bots:
reconnectDelay: 2000
removeNamespaces: false
chatQueueDelay: 125
coreRateLimit:
limit: 10
reset: 1000 # in milliseconds
# or without the optional ones:
# - host: 'localhost'
# port: 25565