fix and lazy fix #69420
This commit is contained in:
parent
95d193d11c
commit
662e016842
5 changed files with 52 additions and 20 deletions
|
@ -219,6 +219,13 @@ public class Bot {
|
|||
public void disconnected(DisconnectedEvent disconnectedEvent) {
|
||||
loggedIn = false;
|
||||
|
||||
final Throwable cause = disconnectedEvent.getCause();
|
||||
|
||||
if (cause != null) {
|
||||
// lazy fix (#69420)
|
||||
if (cause instanceof OutOfMemoryError) System.exit(1);
|
||||
}
|
||||
|
||||
int reconnectDelay = options.reconnectDelay;
|
||||
|
||||
final String stringMessage = ComponentUtilities.stringify(disconnectedEvent.getReason());
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package land.chipmunk.chayapak.chomens_bot.commands;
|
||||
|
||||
import land.chipmunk.chayapak.chomens_bot.Bot;
|
||||
import land.chipmunk.chayapak.chomens_bot.Main;
|
||||
import land.chipmunk.chayapak.chomens_bot.command.Command;
|
||||
import land.chipmunk.chayapak.chomens_bot.command.CommandContext;
|
||||
import land.chipmunk.chayapak.chomens_bot.command.TrustLevel;
|
||||
|
@ -21,10 +22,13 @@ import java.nio.file.*;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class MusicCommand extends Command {
|
||||
private Path root;
|
||||
|
||||
private int ratelimit = 0;
|
||||
|
||||
public MusicCommand () {
|
||||
super(
|
||||
"music",
|
||||
|
@ -48,12 +52,18 @@ public class MusicCommand extends Command {
|
|||
TrustLevel.PUBLIC,
|
||||
false
|
||||
);
|
||||
|
||||
Main.executor.scheduleAtFixedRate(() -> ratelimit = 0, 0, 5, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Component execute(CommandContext context, String[] args, String[] fullArgs) {
|
||||
if (args.length < 1) return Component.text("Not enough arguments").color(NamedTextColor.RED);
|
||||
|
||||
ratelimit++;
|
||||
|
||||
if (ratelimit > 15) return null;
|
||||
|
||||
root = MusicPlayerPlugin.SONG_DIR;
|
||||
return switch (args[0]) {
|
||||
case "play", "playurl", "playnbs", "playnbsurl" -> play(context, args);
|
||||
|
@ -87,7 +97,7 @@ public class MusicCommand extends Command {
|
|||
if (!path.normalize().startsWith(root.toString())) return Component.text("no").color(NamedTextColor.RED);
|
||||
|
||||
// ignore my ohio code for autocomplete
|
||||
final String separator = File.separator;
|
||||
final String separator = File.separator; // how do i do this with the new Files?
|
||||
|
||||
if (_path.contains(separator) && !_path.equals("")) {
|
||||
final String[] pathSplitted = _path.split(separator);
|
||||
|
@ -160,7 +170,7 @@ public class MusicCommand extends Command {
|
|||
context.sendOutput(
|
||||
Component.empty()
|
||||
.append(Component.text("Now looping "))
|
||||
.append(bot.music.currentSong.name.color(ColorUtilities.getColorByString(bot.config.colorPalette.secondary)))
|
||||
.append(Component.text(bot.music.currentSong.name).color(ColorUtilities.getColorByString(bot.config.colorPalette.secondary)))
|
||||
.color(ColorUtilities.getColorByString(bot.config.colorPalette.defaultColor))
|
||||
);
|
||||
}
|
||||
|
@ -264,7 +274,7 @@ public class MusicCommand extends Command {
|
|||
context.sendOutput(
|
||||
Component.empty()
|
||||
.append(Component.text("Skipping "))
|
||||
.append(music.currentSong.name.color(ColorUtilities.getColorByString(bot.config.colorPalette.secondary)))
|
||||
.append(Component.text(music.currentSong.name).color(ColorUtilities.getColorByString(bot.config.colorPalette.secondary)))
|
||||
.color(ColorUtilities.getColorByString(bot.config.colorPalette.defaultColor))
|
||||
);
|
||||
|
||||
|
@ -280,7 +290,7 @@ public class MusicCommand extends Command {
|
|||
|
||||
return Component.empty()
|
||||
.append(Component.text("Now playing "))
|
||||
.append(song.name.color(ColorUtilities.getColorByString(bot.config.colorPalette.secondary)))
|
||||
.append(Component.text(song.name).color(ColorUtilities.getColorByString(bot.config.colorPalette.secondary)))
|
||||
.color(ColorUtilities.getColorByString(bot.config.colorPalette.defaultColor));
|
||||
}
|
||||
|
||||
|
@ -292,7 +302,7 @@ public class MusicCommand extends Command {
|
|||
int i = 0;
|
||||
for (Song song : queue) {
|
||||
queueWithNames.add(
|
||||
song.name.color((i++ & 1) == 0 ? ColorUtilities.getColorByString(bot.config.colorPalette.primary) : ColorUtilities.getColorByString(bot.config.colorPalette.secondary))
|
||||
Component.text(song.name).color((i++ & 1) == 0 ? ColorUtilities.getColorByString(bot.config.colorPalette.primary) : ColorUtilities.getColorByString(bot.config.colorPalette.secondary))
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -379,7 +389,7 @@ public class MusicCommand extends Command {
|
|||
if (currentSong == null) return Component.text("No song is currently playing").color(NamedTextColor.RED);
|
||||
|
||||
// ig very code yup
|
||||
final Component title = currentSong.name;
|
||||
final String title = currentSong.name;
|
||||
final String songAuthor = currentSong.songAuthor == null || currentSong.songAuthor.equals("") ? "N/A" : currentSong.songAuthor;
|
||||
final String songOriginalAuthor = currentSong.songOriginalAuthor == null || currentSong.songOriginalAuthor.equals("") ? "N/A" : currentSong.songOriginalAuthor;
|
||||
final String songDescription = currentSong.songDescription == null || currentSong.songDescription.equals("") ? "N/A" : currentSong.songDescription;
|
||||
|
@ -390,7 +400,7 @@ public class MusicCommand extends Command {
|
|||
Author: %s
|
||||
Original author: %s
|
||||
Description: %s""",
|
||||
title.color(NamedTextColor.AQUA),
|
||||
Component.text(title).color(NamedTextColor.AQUA),
|
||||
Component.text(songAuthor).color(NamedTextColor.AQUA),
|
||||
Component.text(songOriginalAuthor).color(NamedTextColor.AQUA),
|
||||
Component.text(songDescription).color(NamedTextColor.AQUA)
|
||||
|
|
|
@ -21,6 +21,7 @@ import java.nio.file.Path;
|
|||
import java.text.DecimalFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
// Author: _ChipMC_ & chayapak <3
|
||||
public class MusicPlayerPlugin extends Bot.Listener {
|
||||
|
@ -36,6 +37,8 @@ public class MusicPlayerPlugin extends Bot.Listener {
|
|||
}
|
||||
}
|
||||
|
||||
public int loadings = 0;
|
||||
|
||||
public Song currentSong;
|
||||
public final List<Song> songQueue = new ArrayList<>();
|
||||
public SongLoaderRunnable loaderThread;
|
||||
|
@ -47,6 +50,8 @@ public class MusicPlayerPlugin extends Bot.Listener {
|
|||
|
||||
private int ticksUntilPausedBossbar = 20;
|
||||
|
||||
private int notesPerSecond = 0;
|
||||
|
||||
private final String bossbarName = "music";
|
||||
|
||||
public MusicPlayerPlugin (Bot bot) {
|
||||
|
@ -55,6 +60,7 @@ public class MusicPlayerPlugin extends Bot.Listener {
|
|||
bot.core.addListener(new CorePlugin.Listener() {
|
||||
public void ready () { coreReady(); }
|
||||
});
|
||||
bot.executor.scheduleAtFixedRate(() -> notesPerSecond = 0, 0, 1, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
public void loadSong (Path location) {
|
||||
|
@ -73,6 +79,13 @@ public class MusicPlayerPlugin extends Bot.Listener {
|
|||
}
|
||||
|
||||
public void loadSong (URL location) {
|
||||
if (loadings > 2) {
|
||||
bot.chat.tellraw(Component.text("Too many songs loading at once").color(NamedTextColor.RED));
|
||||
return;
|
||||
}
|
||||
|
||||
loadings++;
|
||||
|
||||
final SongLoaderRunnable runnable = new SongLoaderRunnable(location, bot);
|
||||
|
||||
bot.chat.tellraw(
|
||||
|
@ -101,7 +114,7 @@ public class MusicPlayerPlugin extends Bot.Listener {
|
|||
bot.chat.tellraw(
|
||||
Component.translatable(
|
||||
"Now playing %s",
|
||||
Component.empty().append(currentSong.name).color(ColorUtilities.getColorByString(bot.config.colorPalette.secondary))
|
||||
Component.empty().append(Component.text(currentSong.name)).color(ColorUtilities.getColorByString(bot.config.colorPalette.secondary))
|
||||
).color(ColorUtilities.getColorByString(bot.config.colorPalette.defaultColor))
|
||||
);
|
||||
currentSong.play();
|
||||
|
@ -134,7 +147,7 @@ public class MusicPlayerPlugin extends Bot.Listener {
|
|||
bot.chat.tellraw(
|
||||
Component.translatable(
|
||||
"Finished playing %s",
|
||||
Component.empty().append(currentSong.name).color(ColorUtilities.getColorByString(bot.config.colorPalette.secondary))
|
||||
Component.empty().append(Component.text(currentSong.name)).color(ColorUtilities.getColorByString(bot.config.colorPalette.secondary))
|
||||
).color(ColorUtilities.getColorByString(bot.config.colorPalette.defaultColor))
|
||||
);
|
||||
|
||||
|
@ -208,7 +221,7 @@ public class MusicPlayerPlugin extends Bot.Listener {
|
|||
|
||||
public Component generateBossbar () {
|
||||
Component component = Component.empty()
|
||||
.append(Component.empty().append(currentSong.name).color(pitch > 0 ? NamedTextColor.LIGHT_PURPLE : NamedTextColor.GREEN))
|
||||
.append(Component.empty().append(Component.text(currentSong.name)).color(pitch > 0 ? NamedTextColor.LIGHT_PURPLE : NamedTextColor.GREEN))
|
||||
.append(Component.text(" | ").color(NamedTextColor.DARK_GRAY))
|
||||
.append(
|
||||
Component
|
||||
|
@ -262,6 +275,7 @@ public class MusicPlayerPlugin extends Bot.Listener {
|
|||
public void stopPlaying () {
|
||||
removeBossBar();
|
||||
currentSong = null;
|
||||
notesPerSecond = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -274,6 +288,8 @@ public class MusicPlayerPlugin extends Bot.Listener {
|
|||
while (currentSong.reachedNextNote()) {
|
||||
final Note note = currentSong.getNextNote();
|
||||
|
||||
if (notesPerSecond > 1000) continue;
|
||||
|
||||
float key = note.pitch;
|
||||
|
||||
// totally didn't look at the minecraft code and found the note block pitch thingy so i totallydidnotskidded™ it
|
||||
|
@ -299,6 +315,8 @@ public class MusicPlayerPlugin extends Bot.Listener {
|
|||
" " +
|
||||
MathUtilities.clamp(floatingPitch, 0, 2)
|
||||
);
|
||||
|
||||
notesPerSecond++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
package land.chipmunk.chayapak.chomens_bot.song;
|
||||
|
||||
import land.chipmunk.chayapak.chomens_bot.Bot;
|
||||
import net.kyori.adventure.text.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
||||
// Author: hhhzzzsss & _ChipMC_ but i changed most of the stuff
|
||||
public class Song {
|
||||
public final ArrayList<Note> notes = new ArrayList<>();
|
||||
public final Component name;
|
||||
public final String name;
|
||||
public int position = 0; // Current note index
|
||||
public boolean paused = true;
|
||||
public long startTime = 0; // Start time in millis since unix epoch
|
||||
|
@ -28,9 +28,9 @@ public class Song {
|
|||
|
||||
private Bot bot;
|
||||
|
||||
public Song (Component name, Bot bot, String songName, String songAuthor, String songOriginalAuthor, String songDescription, boolean nbs) {
|
||||
this.bot = bot;
|
||||
public Song (String name, Bot bot, String songName, String songAuthor, String songOriginalAuthor, String songDescription, boolean nbs) {
|
||||
this.name = name;
|
||||
this.bot = bot;
|
||||
this.songName = songName;
|
||||
this.songAuthor = songAuthor;
|
||||
this.songOriginalAuthor = songOriginalAuthor;
|
||||
|
@ -38,11 +38,6 @@ public class Song {
|
|||
this.nbs = nbs;
|
||||
}
|
||||
|
||||
public Song (String name, Bot bot, String songName, String songAuthor, String songOriginalAuthor, String songDescription, boolean nbs) {
|
||||
this(Component.text(name), bot, songName, songAuthor, songOriginalAuthor, songDescription, nbs);
|
||||
this.bot = bot;
|
||||
}
|
||||
|
||||
public Note get (int i) {
|
||||
return notes.get(i);
|
||||
}
|
||||
|
|
|
@ -71,6 +71,8 @@ public class SongLoaderRunnable implements Runnable {
|
|||
if (isUrl) {
|
||||
bytes = DownloadUtilities.DownloadToByteArray(songUrl, 10*1024*1024);
|
||||
name = Paths.get(songUrl.toURI().getPath()).getFileName().toString();
|
||||
|
||||
bot.music.loadings--;
|
||||
} else {
|
||||
bytes = Files.readAllBytes(songPath);
|
||||
name = !isFolder ? fileName : songPath.getFileName().toString();
|
||||
|
@ -119,7 +121,7 @@ public class SongLoaderRunnable implements Runnable {
|
|||
bot.chat.tellraw(
|
||||
Component.translatable(
|
||||
"Added %s to the song queue",
|
||||
Component.empty().append(song.name).color(ColorUtilities.getColorByString(bot.config.colorPalette.secondary))
|
||||
Component.empty().append(Component.text(song.name)).color(ColorUtilities.getColorByString(bot.config.colorPalette.secondary))
|
||||
).color(ColorUtilities.getColorByString(bot.config.colorPalette.defaultColor))
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue