refactor,fix: music stuff, and add music locking (servereval only)

This commit is contained in:
Chayapak 2024-11-12 16:40:46 +07:00
parent 357559ae6e
commit 4ba78b843b
Signed by: ChomeNS
SSH key fingerprint: SHA256:0YoxhdyXsgbc0nfeB2N6FYE60mxMU7DS4uCUMaw2mvA
2 changed files with 9 additions and 18 deletions

View file

@ -12,7 +12,6 @@ import me.chayapak1.chomens_bot.song.Loop;
import me.chayapak1.chomens_bot.song.Note; import me.chayapak1.chomens_bot.song.Note;
import me.chayapak1.chomens_bot.song.Song; import me.chayapak1.chomens_bot.song.Song;
import me.chayapak1.chomens_bot.util.*; import me.chayapak1.chomens_bot.util.*;
import me.chayapak1.chomens_bot.util.*;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.JoinConfiguration; import net.kyori.adventure.text.JoinConfiguration;
import net.kyori.adventure.text.TranslatableComponent; import net.kyori.adventure.text.TranslatableComponent;
@ -36,8 +35,6 @@ import static me.chayapak1.chomens_bot.util.StringUtilities.isNotNullAndNotBlank
public class MusicCommand extends Command { public class MusicCommand extends Command {
private Path root; private Path root;
private int ratelimit = 0;
public MusicCommand () { public MusicCommand () {
super( super(
"music", "music",
@ -63,15 +60,11 @@ public class MusicCommand extends Command {
TrustLevel.PUBLIC, TrustLevel.PUBLIC,
false false
); );
Main.executor.scheduleAtFixedRate(() -> ratelimit = 0, 0, 5, TimeUnit.SECONDS);
} }
@Override @Override
public Component execute(CommandContext context) throws CommandException { public Component execute(CommandContext context) throws CommandException {
ratelimit++; if (context.bot.music.locked) throw new CommandException(Component.text("Managing music is currently locked"));
if (ratelimit > 10) return null;
final String action = context.getString(false, true, true); final String action = context.getString(false, true, true);
@ -264,7 +257,7 @@ public class MusicCommand extends Command {
final CompletableFuture<Component> future = bot.core.runTracked( final CompletableFuture<Component> future = bot.core.runTracked(
"minecraft:data get entity " + "minecraft:data get entity " +
UUIDUtilities.selector(context.sender.profile.getId()) + UUIDUtilities.selector(context.sender.profile.getId()) +
" SelectedItem.tag.SongItemData.SongData" " SelectedItem.components.minecraft:custom_data.SongItemData.SongData"
); );
if (future == null) { if (future == null) {
@ -281,7 +274,7 @@ public class MusicCommand extends Command {
.key() .key()
.equals("arguments.nbtpath.nothing_found") .equals("arguments.nbtpath.nothing_found")
) { ) {
context.sendOutput(Component.text("Player has no SongItemData -> SongData NBT tag in the selected item").color(NamedTextColor.RED)); context.sendOutput(Component.text("Player has no SongItemData -> SongData NBT tag in their selected item's minecraft:custom_data").color(NamedTextColor.RED));
return output; return output;
} }

View file

@ -56,6 +56,8 @@ public class MusicPlayerPlugin extends Bot.Listener {
private int limit = 0; private int limit = 0;
public boolean locked = false; // this can be set through servereval
private final String bossbarName = "music"; private final String bossbarName = "music";
public BossBarColor bossBarColor; public BossBarColor bossBarColor;
@ -73,7 +75,7 @@ public class MusicPlayerPlugin extends Bot.Listener {
} }
public void loadSong (Path location, PlayerEntry sender) { public void loadSong (Path location, PlayerEntry sender) {
if (songQueue.size() > 100) return; if (songQueue.size() > 500) return;
loaderThread = new SongLoaderThread(location, bot, sender.profile.getName()); loaderThread = new SongLoaderThread(location, bot, sender.profile.getName());
@ -90,7 +92,7 @@ public class MusicPlayerPlugin extends Bot.Listener {
} }
public void loadSong (URL location, PlayerEntry sender) { public void loadSong (URL location, PlayerEntry sender) {
if (songQueue.size() > 100) return; if (songQueue.size() > 500) return;
limit++; limit++;
@ -114,7 +116,7 @@ public class MusicPlayerPlugin extends Bot.Listener {
} }
public void loadSong (byte[] data, PlayerEntry sender) { public void loadSong (byte[] data, PlayerEntry sender) {
if (songQueue.size() > 100) return; if (songQueue.size() > 500) return;
loaderThread = new SongLoaderThread(data, bot, sender.profile.getName()); loaderThread = new SongLoaderThread(data, bot, sender.profile.getName());
@ -194,13 +196,9 @@ public class MusicPlayerPlugin extends Bot.Listener {
if (songQueue.isEmpty()) { if (songQueue.isEmpty()) {
stopPlaying(); stopPlaying();
removeBossBar(); removeBossBar();
bot.chat.tellraw(
Component
.text("Finished playing every song in the queue")
.color(ColorUtilities.getColorByString(bot.config.colorPalette.defaultColor))
);
return; return;
} }
if (currentSong.size() > 0) { if (currentSong.size() > 0) {
currentSong = songQueue.get(0); currentSong = songQueue.get(0);
currentSong.setTime(0); currentSong.setTime(0);