remove stuff add stuff

This commit is contained in:
Chayapak 2023-03-31 14:51:52 +07:00
parent 91bae37d02
commit 2d3f61b987
4 changed files with 59 additions and 8 deletions

View file

@ -52,17 +52,40 @@ public class CloopCommand implements Command {
} catch (IllegalArgumentException ignored) { } catch (IllegalArgumentException ignored) {
return Component.text("Invalid index").color(NamedTextColor.RED); return Component.text("Invalid index").color(NamedTextColor.RED);
} }
bot.cloop().add(interval, String.join(" ", Arrays.copyOfRange(args, 2, args.length)));
final String command = String.join(" ", Arrays.copyOfRange(args, 2, args.length));
bot.cloop().add(interval, command);
context.sendOutput(
Component.translatable(
"Added %s with interval %s to the cloops",
Component.text(command).color(NamedTextColor.AQUA),
Component.text(interval).color(NamedTextColor.GOLD)
)
);
} }
case "remove" -> { case "remove" -> {
try { try {
final int index = Integer.parseInt(args[1]); final int index = Integer.parseInt(args[1]);
bot.cloop().remove(index); bot.cloop().remove(index);
context.sendOutput(
Component.translatable(
"Removed cloop %s",
Component.text(index).color(NamedTextColor.GOLD)
)
);
} catch (IllegalArgumentException | NullPointerException ignored) { } catch (IllegalArgumentException | NullPointerException ignored) {
return Component.text("Invalid index").color(NamedTextColor.RED); return Component.text("Invalid index").color(NamedTextColor.RED);
} }
} }
case "clear" -> bot.cloop().clear(); case "clear" -> {
bot.cloop().clear();
context.sendOutput(
Component.text("Cleared all cloops")
);
}
case "list" -> { case "list" -> {
final List<Component> cloopsComponent = new ArrayList<>(); final List<Component> cloopsComponent = new ArrayList<>();

View file

@ -39,7 +39,8 @@ public class MusicCommand implements Command {
usages.add("skip"); usages.add("skip");
usages.add("nowplaying"); usages.add("nowplaying");
usages.add("queue"); usages.add("queue");
usages.add("goto"); usages.add("goto <timestamp>");
usages.add("pitch <pitch>");
usages.add("pause"); usages.add("pause");
usages.add("resume"); usages.add("resume");
@ -80,6 +81,9 @@ public class MusicCommand implements Command {
case "goto" -> { case "goto" -> {
return goTo(context, args); return goTo(context, args);
} }
case "pitch" -> {
return pitch(context, args);
}
case "pause", "resume" -> { case "pause", "resume" -> {
return pause(context); return pause(context);
} }
@ -111,6 +115,8 @@ public class MusicCommand implements Command {
final Bot bot = context.bot(); final Bot bot = context.bot();
bot.music().stopPlaying(); bot.music().stopPlaying();
bot.music().songQueue().clear(); bot.music().songQueue().clear();
context.sendOutput(Component.text("Cleared the song queue"));
} }
public Component loop (CommandContext context, String[] args) { public Component loop (CommandContext context, String[] args) {
@ -252,6 +258,27 @@ public class MusicCommand implements Command {
return Component.text("success"); return Component.text("success");
} }
public Component pitch (CommandContext context, String[] args) {
final Bot bot = context.bot();
float pitch;
try {
pitch = Float.parseFloat(args[1]);
} catch (IllegalArgumentException ignored) {
return Component.text("Invalid pitch").color(NamedTextColor.RED);
}
bot.music().pitch(pitch);
context.sendOutput(
Component.empty()
.append(Component.text("Set the pitch to "))
.append(Component.text(pitch).color(NamedTextColor.GOLD))
);
return Component.text("success");
}
public Component pause (CommandContext context) { public Component pause (CommandContext context) {
final Bot bot = context.bot(); final Bot bot = context.bot();
final Song currentSong = bot.music().currentSong(); final Song currentSong = bot.music().currentSong();

View file

@ -37,7 +37,8 @@ public class MusicPlayerPlugin extends SessionAdapter {
@Getter @Setter private SongLoaderThread loaderThread; @Getter @Setter private SongLoaderThread loaderThread;
@Getter @Setter private Loop loop = Loop.OFF; @Getter @Setter private Loop loop = Loop.OFF;
@Getter @Setter private boolean nightcore = false; // don't tell anyone plz..,,.,. // sus nightcore stuff,..,.,.
@Getter @Setter private float pitch = 0;
private int ticksUntilPausedBossbar = 20; private int ticksUntilPausedBossbar = 20;
private final String bossbarName = "chomens_bot:music"; // maybe make this in the config? private final String bossbarName = "chomens_bot:music"; // maybe make this in the config?
@ -111,7 +112,7 @@ public class MusicPlayerPlugin extends SessionAdapter {
bot.core().run("minecraft:bossbar add " + bossbarName + " \"\""); bot.core().run("minecraft:bossbar add " + bossbarName + " \"\"");
bot.core().run("minecraft:bossbar set " + bossbarName + " players " + SELECTOR); bot.core().run("minecraft:bossbar set " + bossbarName + " players " + SELECTOR);
bot.core().run("minecraft:bossbar set " + bossbarName + " name " + GsonComponentSerializer.gson().serialize(generateBossbar())); bot.core().run("minecraft:bossbar set " + bossbarName + " name " + GsonComponentSerializer.gson().serialize(generateBossbar()));
bot.core().run("minecraft:bossbar set " + bossbarName + " color " + (nightcore ? "purple" : "yellow")); bot.core().run("minecraft:bossbar set " + bossbarName + " color " + (pitch > 0 ? "purple" : "yellow"));
bot.core().run("minecraft:bossbar set " + bossbarName + " visible true"); bot.core().run("minecraft:bossbar set " + bossbarName + " visible true");
bot.core().run("minecraft:bossbar set " + bossbarName + " style progress"); bot.core().run("minecraft:bossbar set " + bossbarName + " style progress");
bot.core().run("minecraft:bossbar set " + bossbarName + " value " + (int) Math.floor(currentSong.time)); bot.core().run("minecraft:bossbar set " + bossbarName + " value " + (int) Math.floor(currentSong.time));
@ -175,7 +176,7 @@ public class MusicPlayerPlugin extends SessionAdapter {
final DecimalFormat formatter = new DecimalFormat("#,###"); final DecimalFormat formatter = new DecimalFormat("#,###");
Component component = Component.empty() Component component = Component.empty()
.append(Component.empty().append(currentSong.name).color(nightcore ? NamedTextColor.LIGHT_PURPLE : NamedTextColor.GREEN)) .append(Component.empty().append(currentSong.name).color(pitch > 0 ? NamedTextColor.LIGHT_PURPLE : NamedTextColor.GREEN))
.append(Component.text(" | ").color(NamedTextColor.DARK_GRAY)) .append(Component.text(" | ").color(NamedTextColor.DARK_GRAY))
.append(Component.translatable("%s / %s", formatTime(currentSong.time).color(NamedTextColor.GRAY), formatTime(currentSong.length).color(NamedTextColor.GRAY)).color(NamedTextColor.DARK_GRAY)) .append(Component.translatable("%s / %s", formatTime(currentSong.time).color(NamedTextColor.GRAY), formatTime(currentSong.length).color(NamedTextColor.GRAY)).color(NamedTextColor.DARK_GRAY))
.append(Component.text(" | ").color(NamedTextColor.DARK_GRAY)) .append(Component.text(" | ").color(NamedTextColor.DARK_GRAY))
@ -232,7 +233,7 @@ public class MusicPlayerPlugin extends SessionAdapter {
while (currentSong.reachedNextNote()) { while (currentSong.reachedNextNote()) {
final Note note = currentSong.getNextNote(); final Note note = currentSong.getNextNote();
final double floatingPitch = NumberUtilities.clamp(Math.pow(2, ((nightcore ? note.pitch + 1 : note.pitch) - 12) / 12.0), 0, 2); final double floatingPitch = NumberUtilities.clamp(Math.pow(2, ((note.pitch + (pitch / 10)) - 12) / 12.0), 0, 2);
bot.core().run("minecraft:execute as " + SELECTOR + " at @s run playsound " + note.instrument.sound + " record @s ~ ~ ~ " + note.volume + " " + floatingPitch); bot.core().run("minecraft:execute as " + SELECTOR + " at @s run playsound " + note.instrument.sound + " record @s ~ ~ ~ " + note.volume + " " + floatingPitch);
} }

View file

@ -77,7 +77,7 @@ public class Song {
public boolean reachedNextNote () { public boolean reachedNextNote () {
if (position < notes.size()) { if (position < notes.size()) {
return notes.get(position).time <= (bot.music().nightcore() ? time - 8 : time); return notes.get(position).time <= time;
} else { } else {
if (finished() && bot.music().loop() != Loop.OFF) { if (finished() && bot.music().loop() != Loop.OFF) {
if (position < notes.size()) { if (position < notes.size()) {