make music goto use timestamp + remove debug lines + some music speed thing

This commit is contained in:
Chayapak 2023-08-20 15:33:50 +07:00
parent 9ab596aa8f
commit e521c6b671
3 changed files with 43 additions and 12 deletions

View file

@ -9,6 +9,7 @@ import land.chipmunk.chayapak.chomens_bot.plugins.MusicPlayerPlugin;
import land.chipmunk.chayapak.chomens_bot.song.Loop;
import land.chipmunk.chayapak.chomens_bot.song.Song;
import land.chipmunk.chayapak.chomens_bot.util.ColorUtilities;
import land.chipmunk.chayapak.chomens_bot.util.TimestampUtilities;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.JoinConfiguration;
import net.kyori.adventure.text.event.ClickEvent;
@ -321,19 +322,20 @@ public class MusicCommand extends Command {
final Bot bot = context.bot;
final Song currentSong = bot.music.currentSong;
final long milliseconds;
try {
milliseconds = Long.parseLong(args[1]) * 1000;
} catch (NumberFormatException e) {
return Component.text("Invalid timestamp").color(NamedTextColor.RED);
}
final String input = String.join(" ", Arrays.copyOfRange(args, 1, args.length));
final long timestamp = TimestampUtilities.parseTimestamp(input);
if (currentSong == null) return Component.text("No song is currently playing").color(NamedTextColor.RED);
if (milliseconds < 0 || milliseconds > currentSong.length) return Component.text("Invalid timestamp").color(NamedTextColor.RED);
currentSong.setTime(milliseconds);
if (timestamp < 0 || timestamp > currentSong.length) return Component.text("Invalid timestamp").color(NamedTextColor.RED);
return null;
currentSong.setTime(timestamp);
return Component
.text("Set the time to ")
.append(Component.text(input).color(ColorUtilities.getColorByString(bot.config.colorPalette.number)))
.color(ColorUtilities.getColorByString(bot.config.colorPalette.defaultColor));
}
public Component pitch (CommandContext context, String[] args) {
@ -356,6 +358,7 @@ public class MusicCommand extends Command {
public Component speed (CommandContext context, String[] args) {
final Bot bot = context.bot;
final Song currentSong = bot.music.currentSong;
float speed;
try {
@ -364,8 +367,12 @@ public class MusicCommand extends Command {
return Component.text("Invalid speed").color(NamedTextColor.RED);
}
final long oldTime = currentSong.time;
bot.music.speed = speed;
currentSong.setTime(oldTime);
return Component.empty()
.append(Component.text("Set the speed to "))
.append(Component.text(speed).color(ColorUtilities.getColorByString(bot.config.colorPalette.number)))

View file

@ -309,9 +309,6 @@ public class CorePlugin extends PositionPlugin.Listener {
toSize.getZ() + bot.position.position.getZ()
);
System.out.println(from);
System.out.println(to);
reset();
refill();

View file

@ -0,0 +1,27 @@
package land.chipmunk.chayapak.chomens_bot.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TimestampUtilities {
// totallynotskidded from SongPlayer (modified a bit)
public static final Pattern TIMESTAMP_PATTERN = Pattern.compile("(?:(\\d+):)?(\\d+):(\\d+)");
public static long parseTimestamp (String timestamp) {
final Matcher matcher = TIMESTAMP_PATTERN.matcher(timestamp);
if (!matcher.matches()) return -1;
long time = 0;
final String hourString = matcher.group(1);
final String minuteString = matcher.group(2);
final String secondString = matcher.group(3);
if (hourString != null) time += (long) Integer.parseInt(hourString) * 60 * 60 * 1000;
time += (long) Integer.parseInt(minuteString) * 60 * 1000;
time += Double.parseDouble(secondString) * 1000.0;
return time;
}
}