Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ loader_version=0.16.10
fabric_version=0.119.5+1.21.5

# Mod Properties
mod_version=1.4.1
mod_version=1.4.2
maven_group=top.gregtao.concerto
archives_base_name=Concerto-fabric
3 changes: 2 additions & 1 deletion src/main/java/top/gregtao/concerto/ConcertoClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import top.gregtao.concerto.player.MusicPlayer;
import top.gregtao.concerto.util.ConcertoHotkeys;
import top.gregtao.concerto.util.ConcertoOptions;
import top.gregtao.concerto.util.ConcertoRunner;

import java.util.List;

Expand Down Expand Up @@ -70,7 +71,7 @@ public Identifier getFabricId() {

@Override
public void reload(ResourceManager manager) {
MusicPlayer.run(() -> {
ConcertoRunner.run(() -> {
ClientConfig.INSTANCE.readOptions();
ConcertoOptions.INSTANCE.readOptions();
MusicPlayer.INSTANCE.reloadConfig(() -> LOGGER.info("Loaded general music playlist"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import top.gregtao.concerto.network.MusicDataPacket;
import top.gregtao.concerto.network.room.ServerMusicAgent;
import top.gregtao.concerto.network.ServerMusicNetworkHandler;
import top.gregtao.concerto.player.MusicPlayer;
import top.gregtao.concerto.util.ConcertoRunner;
import top.gregtao.concerto.util.TextUtil;

import java.util.Iterator;
Expand Down Expand Up @@ -49,7 +49,7 @@ public static void register(CommandDispatcher<ServerCommandSource> dispatcher, C
).then(
CommandManager.literal("list").then(
CommandManager.argument("page", IntegerArgumentType.integer(1)).executes(context -> {
MusicPlayer.run(() -> {
ConcertoRunner.run(() -> {
int page = IntegerArgumentType.getInteger(context, "page");
Map<UUID, MusicDataPacket> map = ServerMusicNetworkHandler.WAIT_AUDITION;
Iterator<Map.Entry<UUID, MusicDataPacket>> iterator = map.entrySet().iterator();
Expand Down
13 changes: 7 additions & 6 deletions src/main/java/top/gregtao/concerto/command/MusicCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import top.gregtao.concerto.music.meta.music.list.PlaylistMetaData;
import top.gregtao.concerto.player.MusicPlayer;
import top.gregtao.concerto.player.MusicPlayerHandler;
import top.gregtao.concerto.util.ConcertoRunner;
import top.gregtao.concerto.util.Pair;
import top.gregtao.concerto.util.TextUtil;

Expand Down Expand Up @@ -150,7 +151,7 @@ public static LiteralArgumentBuilder<FabricClientCommandSource> registerPlayerCo
ClientCommandManager.literal("list").then(
ClientCommandManager.argument("page", IntegerArgumentType.integer(1)).executes(context -> {
ClientPlayerEntity clientPlayer = context.getSource().getPlayer();
MusicPlayer.run(() -> {
ConcertoRunner.run(() -> {
int page = IntegerArgumentType.getInteger(context, "page");
List<Music> list = MusicPlayerHandler.INSTANCE.getMusicList();
page = Math.min(page, (int) Math.ceil(list.size() / 10f));
Expand All @@ -173,7 +174,7 @@ public static LiteralArgumentBuilder<FabricClientCommandSource> registerPlayerCo
if (MusicPlayerHandler.INSTANCE.currentMusic == null) {
clientPlayer.sendMessage(Text.translatable("concerto.unknown"), false);
} else if (MusicPlayerHandler.INSTANCE.currentMusic instanceof CacheableMusic music) {
MusicPlayer.run(() -> {
ConcertoRunner.run(() -> {
try {
MusicCacheManager.INSTANCE.addMusic(music);
clientPlayer.sendMessage(Text.translatable("concerto.success"), false);
Expand All @@ -191,10 +192,10 @@ public static LiteralArgumentBuilder<FabricClientCommandSource> registerPlayerCo
ClientPlayerEntity clientPlayer = context.getSource().getPlayer();
Music music = MusicPlayerHandler.INSTANCE.getCurrentMusic();
if (music instanceof Likeable likeable) {
CompletableFuture.supplyAsync(likeable::likeIt, MusicPlayer.RUNNERS_POOL).thenAcceptAsync(success ->
CompletableFuture.supplyAsync(likeable::likeIt, ConcertoRunner.RUNNERS_POOL).thenAcceptAsync(success ->
clientPlayer.sendMessage(success ? Text.translatable("concerto.like",
music.getMeta().title(), music.getMeta().getSource()) :
Text.translatable("concerto.fail"), false), MusicPlayer.RUNNERS_POOL);
Text.translatable("concerto.fail"), false), ConcertoRunner.RUNNERS_POOL);
} else {
clientPlayer.sendMessage(Text.translatable("concerto.error.unsupported_operation"), false);
}
Expand All @@ -205,10 +206,10 @@ public static LiteralArgumentBuilder<FabricClientCommandSource> registerPlayerCo
ClientPlayerEntity clientPlayer = context.getSource().getPlayer();
Music music = MusicPlayerHandler.INSTANCE.getCurrentMusic();
if (music instanceof Likeable likeable) {
CompletableFuture.supplyAsync(likeable::dislikeIt, MusicPlayer.RUNNERS_POOL).thenAcceptAsync(success ->
CompletableFuture.supplyAsync(likeable::dislikeIt, ConcertoRunner.RUNNERS_POOL).thenAcceptAsync(success ->
clientPlayer.sendMessage(success ? Text.translatable("concerto.dislike",
music.getMeta().title(), music.getMeta().getSource()) :
Text.translatable("concerto.fail"), false), MusicPlayer.RUNNERS_POOL);
Text.translatable("concerto.fail"), false), ConcertoRunner.RUNNERS_POOL);
} else {
clientPlayer.sendMessage(Text.translatable("concerto.error.unsupported_operation"), false);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
import top.gregtao.concerto.music.Music;
import top.gregtao.concerto.network.ClientMusicNetworkHandler;
import top.gregtao.concerto.network.MusicDataPacket;
import top.gregtao.concerto.player.MusicPlayer;
import top.gregtao.concerto.player.MusicPlayerHandler;
import top.gregtao.concerto.util.ConcertoRunner;
import top.gregtao.concerto.util.TextUtil;

import java.util.Iterator;
Expand All @@ -30,7 +30,7 @@ public static void register(CommandDispatcher<FabricClientCommandSource> dispatc
ClientCommandManager.literal("to").then(
ClientCommandManager.argument("target", ShareMusicTargetArgumentType.create()).executes(context -> {
String target = ShareMusicTargetArgumentType.get(context, "target");
MusicPlayer.run(() -> {
ConcertoRunner.run(() -> {
Music current = MusicPlayerHandler.INSTANCE.getCurrentMusic();
if (current != null) {
TextUtil.commandMessageClient(context, Text.translatable("concerto.share.sent"));
Expand Down Expand Up @@ -68,7 +68,7 @@ public static void register(CommandDispatcher<FabricClientCommandSource> dispatc
).then(
ClientCommandManager.literal("list").then(
ClientCommandManager.argument("page", IntegerArgumentType.integer(1)).executes(context -> {
MusicPlayer.run(() -> {
ConcertoRunner.run(() -> {
int page = IntegerArgumentType.getInteger(context, "page");
Map<UUID, MusicDataPacket> map = ClientMusicNetworkHandler.WAIT_CONFIRMATION;
Iterator<Map.Entry<UUID, MusicDataPacket>> iterator = map.entrySet().iterator();
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/top/gregtao/concerto/config/CacheManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import top.gregtao.concerto.ConcertoClient;
import top.gregtao.concerto.ConcertoServer;
import top.gregtao.concerto.player.MusicPlayer;
import top.gregtao.concerto.util.ConcertoRunner;
import top.gregtao.concerto.util.Pair;

import java.io.File;
Expand Down Expand Up @@ -121,6 +121,6 @@ public void addFile(String filename, InputStream inputStream) throws IOException
outputStream.write(inputStream.readAllBytes());
}
inputStream.close();
if (this.getTotalSize() > this.maxSize) MusicPlayer.run(this::removeEarliest);
if (this.getTotalSize() > this.maxSize) ConcertoRunner.run(this::removeEarliest);
}
}
6 changes: 3 additions & 3 deletions src/main/java/top/gregtao/concerto/mixin/ChatHudMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
import top.gregtao.concerto.music.Music;
import top.gregtao.concerto.network.ClientMusicNetworkHandler;
import top.gregtao.concerto.network.MusicDataPacket;
import top.gregtao.concerto.player.MusicPlayer;
import top.gregtao.concerto.screen.InGameHudRenderer;
import top.gregtao.concerto.util.ConcertoRunner;
import top.gregtao.concerto.util.JsonUtil;

import java.util.Base64;
Expand Down Expand Up @@ -53,12 +53,12 @@ private static void handleMessage(Text text) {

@Inject(method = "addMessage(Lnet/minecraft/text/Text;)V", at = @At("HEAD"))
public void addMessageInject1(Text message, CallbackInfo ci){
MusicPlayer.run(() -> handleMessage(message));
ConcertoRunner.run(() -> handleMessage(message));
}

@Inject(method = "addMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageSignatureData;Lnet/minecraft/client/gui/hud/MessageIndicator;)V ", at = @At("HEAD"))
public void addMessageInject2(Text message, MessageSignatureData signature, MessageIndicator indicator, CallbackInfo ci){
MusicPlayer.run(() -> handleMessage(message));
ConcertoRunner.run(() -> handleMessage(message));
}

@Inject(method = "render(Lnet/minecraft/client/gui/DrawContext;IIIZ)V", at = @At("HEAD"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import top.gregtao.concerto.player.MusicPlayer;
import top.gregtao.concerto.util.ConcertoRunner;

@Mixin(GameMenuScreen.class)
public class GameMenuScreenMixin {

@Inject(at = @At("HEAD"), method = "disconnect()V")
private void disconnectInject(CallbackInfo ci) {
MusicPlayer.run(MusicPlayer.INSTANCE::pause);
ConcertoRunner.run(MusicPlayer.INSTANCE::pause);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import top.gregtao.concerto.player.MusicPlayerHandler;
import top.gregtao.concerto.screen.MusicAuditionScreen;
import top.gregtao.concerto.screen.PresetRadiosScreen;
import top.gregtao.concerto.util.ConcertoRunner;
import top.gregtao.concerto.util.JsonUtil;
import top.gregtao.concerto.util.TextUtil;

Expand Down Expand Up @@ -126,7 +127,7 @@ public static void addToWaitList(MinecraftClient client, MusicDataPacket packet,
if (WAIT_CONFIRMATION.size() > ConcertoNetworking.WAIT_LIST_MAX_SIZE) {
removeFirst();
}
MusicPlayer.run(() -> {
ConcertoRunner.run(() -> {
if (ClientConfig.INSTANCE.options.confirmAfterReceived) {
self.sendMessage(TextUtil.PAGE_SPLIT, false);
self.sendMessage(ShareMusicCommand.chatMessageBuilder(uuid, packet.from, packet.music.getMeta().title()), false);
Expand Down Expand Up @@ -197,7 +198,7 @@ public static void auditionDataSyncReceiver(ConcertoPayload payload, ClientPlayN
}

public static void presetRadiosReceiver(ConcertoPayload payload, ClientPlayNetworking.Context context) {
MusicPlayer.run(() -> ConcertoClient.presetRadios = PresetPlaylistsConfig.fromJson(payload.string).stream().filter(playlist ->
ConcertoRunner.run(() -> ConcertoClient.presetRadios = PresetPlaylistsConfig.fromJson(payload.string).stream().filter(playlist ->
playlist.getList().stream().allMatch(MusicDataPacket::isMusicSafe)).toList(), () -> {
// .peek(playlist -> MusicPlayerHandler.loadInThreadPool(playlist.getList())).toList(), () -> {
MinecraftClient client = context.client();
Expand Down Expand Up @@ -244,7 +245,7 @@ public static boolean musicAgentAddMusic(Music music) {

public static void musicAgentMusicReceiver(ConcertoPayload payload, ClientPlayNetworking.Context context) {
if (ConcertoClient.clientState != ConcertoClient.ClientState.MUSIC_AGENT) return;
MusicPlayer.run(() -> {
ConcertoRunner.run(() -> {
if (payload.string.equals("Stop")) {
MusicPlayer.INSTANCE.stop();
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import top.gregtao.concerto.music.Music;
import top.gregtao.concerto.music.SharedMusic;
import top.gregtao.concerto.network.ServerMusicNetworkHandler;
import top.gregtao.concerto.player.MusicPlayer;
import top.gregtao.concerto.util.ConcertoRunner;

import java.util.ArrayList;
import java.util.HashMap;
Expand Down Expand Up @@ -200,7 +200,7 @@ public synchronized void addMusic(ServerPlayerEntity player, Music music) {
player.sendMessage(Text.translatable("concerto.agent.add.too_quick", wait));
return;
}
MusicPlayer.run(() -> {
ConcertoRunner.run(() -> {
ConcertoServer.LOGGER.info("Added music {}", music.getMeta().title());
this.musicQueue.offer(music);
this.members.put(player, System.currentTimeMillis());
Expand All @@ -219,7 +219,7 @@ public synchronized void playerJoin(ServerPlayerEntity player) {
if (!this.isPlaying.get() && this.hasNextMusic()) {
this.schedulePlayNext(0, false);
} else if (this.isPlaying.get() && this.currentSharedMusic != null) {
MusicPlayer.run(() -> {
ConcertoRunner.run(() -> {
if (this.currentSharedMusic instanceof SharedMusic shared) {
shared.startTime = System.currentTimeMillis() - this.playTime;
shared.startByte = this.totalBytes * (System.currentTimeMillis() - this.playTime) /
Expand Down
34 changes: 11 additions & 23 deletions src/main/java/top/gregtao/concerto/player/MusicPlayer.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,13 @@
import top.gregtao.concerto.api.MusicJsonParsers;
import top.gregtao.concerto.music.Music;
import top.gregtao.concerto.network.room.MusicRoom;
import top.gregtao.concerto.util.ConcertoRunner;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;
import java.util.function.Supplier;
Expand Down Expand Up @@ -83,16 +81,6 @@ public MusicPlayer(Logger logger) {
this.addStreamPlayerListener(this);
}

public static final Executor RUNNERS_POOL = Executors.newFixedThreadPool(16);

public static void run(Runnable runnable) {
CompletableFuture.runAsync(runnable, RUNNERS_POOL);
}

public static void run(Runnable runnable, Runnable callback) {
CompletableFuture.runAsync(runnable, RUNNERS_POOL).thenRunAsync(callback, RUNNERS_POOL);
}

public void addMusic(Music music) {
this.addMusic(music, () -> {});
}
Expand All @@ -102,23 +90,23 @@ public void addMusic(List<Music> musics) {
}

public void addMusic(Music music, Runnable callback) {
run(() -> MusicPlayerHandler.INSTANCE.addMusic(music), callback);
ConcertoRunner.run(() -> MusicPlayerHandler.INSTANCE.addMusic(music), callback);
}

public void addMusic(List<Music> musics, Runnable callback) {
run(() -> MusicPlayerHandler.INSTANCE.addMusic(musics), callback);
ConcertoRunner.run(() -> MusicPlayerHandler.INSTANCE.addMusic(musics), callback);
}

public void addMusic(Supplier<List<Music>> musicListAdder, Runnable callback) {
run(() -> MusicPlayerHandler.INSTANCE.addMusic(musicListAdder.get()), callback);
ConcertoRunner.run(() -> MusicPlayerHandler.INSTANCE.addMusic(musicListAdder.get()), callback);
}

public void addMusicHere(Music music, boolean skip) {
this.addMusicHere(music, skip, () -> {});
}

public void addMusicHere(Music music, boolean skip, Runnable callback) {
run(() -> {
ConcertoRunner.run(() -> {
MusicPlayerHandler.INSTANCE.addMusicHere(music);
if (skip) {
this.skipTo(MusicPlayerHandler.INSTANCE.getCurrentIndex() + 1);
Expand Down Expand Up @@ -214,7 +202,7 @@ public void statusUpdated(StreamPlayerEvent event) {
}

public void playTempMusic(Music music, Runnable callback) {
run(() -> {
ConcertoRunner.run(() -> {
ClientPlayerEntity player = MinecraftClient.getInstance().player;
InputStream source = music.getMusicSourceOrNull();
if (source == null) return;
Expand Down Expand Up @@ -261,7 +249,7 @@ public void playNext(int forward, Runnable callback) {
}

public void playNext(int forward, Consumer<Integer> callback) {
run(() -> {
ConcertoRunner.run(() -> {
ClientPlayerEntity player = MinecraftClient.getInstance().player;
try {
if (!this.started || MusicPlayerHandler.INSTANCE.isEmpty()) {
Expand Down Expand Up @@ -330,23 +318,23 @@ public void start() {
}

public void clear() {
run(() -> {
ConcertoRunner.run(() -> {
this.started = false;
this.stop();
MusicPlayerHandler.INSTANCE.clear();
});
}

public void reloadConfig(Runnable callback) {
run(() -> {
ConcertoRunner.run(() -> {
this.started = false;
this.stop();
MusicPlayerHandler.INSTANCE = MusicJsonParsers.fromRaw(ConcertoClient.MUSIC_CONFIG.read());
}, callback);
}

public void cut(Runnable callback) {
run(() -> {
ConcertoRunner.run(() -> {
if (!this.isPlayingTemp) {
MusicPlayerHandler.INSTANCE.removeCurrent();
}
Expand All @@ -357,7 +345,7 @@ public void cut(Runnable callback) {
public void remove(int index, Runnable callback) {
if (index == MusicPlayerHandler.INSTANCE.getCurrentIndex()) this.cut(callback);
else {
run(() -> {
ConcertoRunner.run(() -> {
MusicPlayerHandler.INSTANCE.remove(index);
if (MusicPlayerHandler.INSTANCE.isEmpty()) this.cut(() -> {});
}, callback);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import top.gregtao.concerto.music.Music;
import top.gregtao.concerto.music.MusicTimestamp;
import top.gregtao.concerto.screen.widget.URLImageWidget;
import top.gregtao.concerto.util.ConcertoRunner;
import top.gregtao.concerto.util.Pair;

import java.io.*;
Expand Down Expand Up @@ -308,7 +309,7 @@ public static String filenameFilter(String str) {
}

public static void downloadMusics(List<Music> musics) {
MusicPlayer.run(() -> {
ConcertoRunner.run(() -> {
File folder = new File("Concerto/Downloads");
if (!folder.exists() || !folder.isDirectory()) {
if (folder.mkdirs()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import top.gregtao.concerto.music.list.NeteaseCloudPlaylist;
import top.gregtao.concerto.player.MusicPlayer;
import top.gregtao.concerto.player.MusicPlayerHandler;
import top.gregtao.concerto.util.ConcertoRunner;

import java.io.File;
import java.util.ArrayList;
Expand Down Expand Up @@ -46,7 +47,7 @@ protected void init() {
this.displayAlert(Text.translatable("concerto.error.invalid_path"));
}
});
this.addLabel(Text.translatable("concerto.screen.add.local_file.folder"), this.width / 2, 45, str -> MusicPlayer.run(() -> {
this.addLabel(Text.translatable("concerto.screen.add.local_file.folder"), this.width / 2, 45, str -> ConcertoRunner.run(() -> {
ArrayList<Music> list = LocalFileMusic.getMusicsInFolder(new File(str));
MusicPlayer.INSTANCE.addMusic(list, () -> MusicPlayer.INSTANCE.skipTo(MusicPlayerHandler.INSTANCE.getMusicList().size() - list.size()));
}));
Expand Down
Loading
Loading