refactor,fix: music stuff, and add music locking (servereval only)
This commit is contained in:
parent
357559ae6e
commit
4ba78b843b
2 changed files with 9 additions and 18 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue