make music goto use timestamp + remove debug lines + some music speed thing
This commit is contained in:
parent
9ab596aa8f
commit
e521c6b671
3 changed files with 43 additions and 12 deletions
|
@ -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.Loop;
|
||||||
import land.chipmunk.chayapak.chomens_bot.song.Song;
|
import land.chipmunk.chayapak.chomens_bot.song.Song;
|
||||||
import land.chipmunk.chayapak.chomens_bot.util.ColorUtilities;
|
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.Component;
|
||||||
import net.kyori.adventure.text.JoinConfiguration;
|
import net.kyori.adventure.text.JoinConfiguration;
|
||||||
import net.kyori.adventure.text.event.ClickEvent;
|
import net.kyori.adventure.text.event.ClickEvent;
|
||||||
|
@ -321,19 +322,20 @@ public class MusicCommand extends Command {
|
||||||
final Bot bot = context.bot;
|
final Bot bot = context.bot;
|
||||||
final Song currentSong = bot.music.currentSong;
|
final Song currentSong = bot.music.currentSong;
|
||||||
|
|
||||||
final long milliseconds;
|
final String input = String.join(" ", Arrays.copyOfRange(args, 1, args.length));
|
||||||
try {
|
|
||||||
milliseconds = Long.parseLong(args[1]) * 1000;
|
final long timestamp = TimestampUtilities.parseTimestamp(input);
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
return Component.text("Invalid timestamp").color(NamedTextColor.RED);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentSong == null) return Component.text("No song is currently playing").color(NamedTextColor.RED);
|
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) {
|
public Component pitch (CommandContext context, String[] args) {
|
||||||
|
@ -356,6 +358,7 @@ public class MusicCommand extends Command {
|
||||||
|
|
||||||
public Component speed (CommandContext context, String[] args) {
|
public Component speed (CommandContext context, String[] args) {
|
||||||
final Bot bot = context.bot;
|
final Bot bot = context.bot;
|
||||||
|
final Song currentSong = bot.music.currentSong;
|
||||||
|
|
||||||
float speed;
|
float speed;
|
||||||
try {
|
try {
|
||||||
|
@ -364,8 +367,12 @@ public class MusicCommand extends Command {
|
||||||
return Component.text("Invalid speed").color(NamedTextColor.RED);
|
return Component.text("Invalid speed").color(NamedTextColor.RED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final long oldTime = currentSong.time;
|
||||||
|
|
||||||
bot.music.speed = speed;
|
bot.music.speed = speed;
|
||||||
|
|
||||||
|
currentSong.setTime(oldTime);
|
||||||
|
|
||||||
return Component.empty()
|
return Component.empty()
|
||||||
.append(Component.text("Set the speed to "))
|
.append(Component.text("Set the speed to "))
|
||||||
.append(Component.text(speed).color(ColorUtilities.getColorByString(bot.config.colorPalette.number)))
|
.append(Component.text(speed).color(ColorUtilities.getColorByString(bot.config.colorPalette.number)))
|
||||||
|
|
|
@ -309,9 +309,6 @@ public class CorePlugin extends PositionPlugin.Listener {
|
||||||
toSize.getZ() + bot.position.position.getZ()
|
toSize.getZ() + bot.position.position.getZ()
|
||||||
);
|
);
|
||||||
|
|
||||||
System.out.println(from);
|
|
||||||
System.out.println(to);
|
|
||||||
|
|
||||||
reset();
|
reset();
|
||||||
refill();
|
refill();
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue