This commit is contained in:
Color_yr committed 2026-03-27 23:24:14 +08:00
1 parent b76309a115
commit 26d09eead0
26 files changed
+80 -168

No files matched your search

+1 -1
Submodule client updated: 1f5abbfc1d...b8163dd070.
@@ -1,6 +1,7 @@
package com.coloryr.allmusic.server.mixin;
import com.coloryr.allmusic.server.core.AllMusic;
import com.coloryr.allmusic.server.core.music.PlayMusic;
import net.minecraft.network.Connection;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.players.PlayerList;
@@ -13,7 +14,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public class ServerPlayerMixin {
@Inject(at = @At("HEAD"), method = "remove")
private void remove(ServerPlayer entity, CallbackInfo info) {
AllMusic.removeNowPlayPlayer(entity.getName().getString());
PlayMusic.removeNowPlayPlayer(entity.getName().getString());
}
@Inject(at = @At("TAIL"), method = "placeNewPlayer")
@@ -1,6 +1,7 @@
package com.coloryr.allmusic.server.mixin;
import com.coloryr.allmusic.server.core.AllMusic;
import com.coloryr.allmusic.server.core.music.PlayMusic;
import net.minecraft.network.ClientConnection;
import net.minecraft.server.PlayerManager;
import net.minecraft.server.network.ServerPlayerEntity;
@@ -13,7 +14,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public class ServerPlayerMixin {
@Inject(at = @At("HEAD"), method = "remove")
private void remove(ServerPlayerEntity entity, CallbackInfo info) {
AllMusic.removeNowPlayPlayer(entity.getName().getString());
PlayMusic.removeNowPlayPlayer(entity.getName().getString());
}
@Inject(at = @At("TAIL"), method = "onPlayerConnect")
@@ -1,6 +1,7 @@
package com.coloryr.allmusic.server.mixin;
import com.coloryr.allmusic.server.core.AllMusic;
import com.coloryr.allmusic.server.core.music.PlayMusic;
import net.minecraft.network.ClientConnection;
import net.minecraft.server.PlayerManager;
import net.minecraft.server.network.ConnectedClientData;
@@ -14,7 +15,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public class ServerPlayerMixin {
@Inject(at = @At("HEAD"), method = "remove")
private void remove(ServerPlayerEntity entity, CallbackInfo info) {
AllMusic.removeNowPlayPlayer(entity.getName().getString());
PlayMusic.removeNowPlayPlayer(entity.getName().getString());
}
@Inject(at = @At("TAIL"), method = "onPlayerConnect")
@@ -1,6 +1,7 @@
package com.coloryr.allmusic.server.mixin;
import com.coloryr.allmusic.server.core.AllMusic;
import com.coloryr.allmusic.server.core.music.PlayMusic;
import net.minecraft.network.Connection;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.network.CommonListenerCookie;
@@ -14,7 +15,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public class ServerPlayerMixin {
@Inject(at = @At("HEAD"), method = "remove")
private void remove(ServerPlayer entity, CallbackInfo info) {
AllMusic.removeNowPlayPlayer(entity.getName().getString());
PlayMusic.removeNowPlayPlayer(entity.getName().getString());
}
@Inject(at = @At("TAIL"), method = "placeNewPlayer")
@@ -1,6 +1,7 @@
package com.coloryr.allmusic.server.mixin;
import com.coloryr.allmusic.server.core.AllMusic;
import com.coloryr.allmusic.server.core.music.PlayMusic;
import net.minecraft.network.ClientConnection;
import net.minecraft.server.PlayerManager;
import net.minecraft.server.network.ConnectedClientData;
@@ -14,7 +15,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public class ServerPlayerMixin {
@Inject(at = @At("HEAD"), method = "remove")
private void remove(ServerPlayerEntity entity, CallbackInfo info) {
AllMusic.removeNowPlayPlayer(entity.getName().getString());
PlayMusic.removeNowPlayPlayer(entity.getName().getString());
}
@Inject(at = @At("TAIL"), method = "onPlayerConnect")
+7 -3
View File
@@ -35,10 +35,14 @@ dependencies {
implementation "net.fabricmc:fabric-loader:${project.loader_version}"
// Fabric API. This is technically optional, but you probably want it anyway.
implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}"
include implementation('com.squareup.okio:okio-jvm:3.16.4')
include implementation('com.squareup.okhttp3:okhttp:5.3.2')
include implementation('net.kyori:adventure-text-minimessage:4.26.1')
include implementation('net.kyori:adventure-api:4.26.1')
include implementation('net.kyori:adventure-key:4.26.1')
include implementation('org.apache.httpcomponents.client5:httpclient5:5.6')
include implementation('org.apache.httpcomponents.core5:httpcore5:5.4')
include implementation('org.apache.httpcomponents.core5:httpcore5-h2:5.4')
include implementation('org.xerial:sqlite-jdbc:3.51.1.0')
}
+4 -4
View File
@@ -4,13 +4,13 @@ org.gradle.parallel=true
# Fabric Properties
# check these on https://fabricmc.net/develop
minecraft_version=26.1-snapshot-1
loader_version=0.18.3
loom_version=1.14-SNAPSHOT
minecraft_version=26.1
loader_version=0.18.5
loom_version=1.15-SNAPSHOT
# Mod Properties
maven_group = com.coloryr.allmusic.server
archives_base_name =[fabric-26.1]AllMusic_Server
# Dependencies
fabric_version=0.140.2+26.1
fabric_api_version=0.144.3+26.1
@@ -1,41 +1,29 @@
package com.coloryr.allmusic.server;
import com.coloryr.allmusic.server.core.AllMusic;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.api.DedicatedServerModInitializer;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.minecraft.resources.Identifier;
import net.minecraft.server.MinecraftServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
public class AllMusicFabric implements ModInitializer {
public static MinecraftServer server;
public static final Logger LOGGER = LoggerFactory.getLogger("AllMusic Server");
public static final Identifier ID = Identifier.fromNamespaceAndPath("allmusic", "channel");
public class AllMusicServer implements DedicatedServerModInitializer {
public static final String dir = "allmusic_server/";
public static MinecraftServer server;
@Override
public void onInitialize() {
public void onInitializeServer() {
AllMusic.log = new LogFabric();
AllMusic.side = new SideFabric();
new AllMusic().init(new File(dir));
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment)
-> CommandFabric.instance.register(dispatcher));
PayloadTypeRegistry.playS2C().register(PackPayload.ID, PackPayload.CODEC);
ServerLifecycleEvents.SERVER_STARTED.register((a) -> {
server = a;
AllMusic.init(new File(dir));
AllMusic.start();
Tasks.init();
});
@@ -1,42 +0,0 @@
package com.coloryr.allmusic.server;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.network.chat.ClickEvent;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.protocol.game.ClientboundSetActionBarTextPacket;
import net.minecraft.server.level.ServerPlayer;
public class FabricApi {
public static void sendMessageRun(CommandSourceStack obj, String message, String end, String command) {
MutableComponent send = Component.literal(message);
var endText = Component.literal(end);
endText.setStyle(endText.getStyle().withClickEvent(new ClickEvent.RunCommand(command)));
send.append(endText);
obj.sendSystemMessage(send);
}
public static void sendMessageSuggest(CommandSourceStack obj, String message, String end, String command) {
MutableComponent send = Component.literal(message);
var endText = Component.literal(end);
endText.setStyle(endText.getStyle().withClickEvent(new ClickEvent.SuggestCommand(command)));
send.append(endText);
obj.sendSystemMessage(send);
}
public static void sendBar(ServerPlayer player, String message) {
var pack = new ClientboundSetActionBarTextPacket(Component.literal(message));
player.connection.send(pack);
}
public static void sendMessageBqRun(String message, String end, String command) {
MutableComponent send = Component.literal(message);
MutableComponent endText = Component.literal(end);
endText.setStyle(endText.getStyle().withClickEvent(new ClickEvent.SuggestCommand(command)));
send.append(endText);
for (var player : AllMusicFabric.server.getPlayerList().getPlayers()) {
player.sendSystemMessage(send);
}
}
}
@@ -1,15 +1,12 @@
package com.coloryr.allmusic.server;
import com.coloryr.allmusic.server.core.side.IMyLogger;
import com.coloryr.allmusic.server.core.side.IAllMusicLogger;
import net.kyori.adventure.text.Component;
public class LogFabric implements IMyLogger {
@Override
public void warning(String data) {
AllMusicFabric.LOGGER.warn(data);
}
public class LogFabric implements IAllMusicLogger {
@Override
public void info(String data) {
AllMusicFabric.LOGGER.info(data);
public void data(Component data) {
AllMusicServer.server.sendMessage(data);
}
}
@@ -1,19 +0,0 @@
package com.coloryr.allmusic.server;
import com.coloryr.allmusic.server.codec.PacketCodec;
import com.coloryr.allmusic.server.core.objs.enums.ComType;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
public record PackPayload(ComType type1, String data, int data1) implements CustomPacketPayload {
public static final CustomPacketPayload.Type<PackPayload> ID = new CustomPacketPayload.Type<>(AllMusicFabric.ID);
public static final StreamCodec<FriendlyByteBuf, PackPayload> CODEC =
StreamCodec.of((value, buf) -> PacketCodec.pack(value, buf.type1, buf.data, buf.data1),
buffer -> new PackPayload(ComType.CLEAR, null, 0));
@Override
public CustomPacketPayload.Type<? extends CustomPacketPayload> type() {
return ID;
}
}
@@ -1,15 +1,16 @@
package com.coloryr.allmusic.server;
import com.coloryr.allmusic.codec.CommandType;
import com.coloryr.allmusic.codec.MusicPack;
import com.coloryr.allmusic.comm.MusicCodec;
import com.coloryr.allmusic.server.core.AllMusic;
import com.coloryr.allmusic.server.core.objs.enums.ComType;
import com.coloryr.allmusic.server.core.objs.music.MusicObj;
import com.coloryr.allmusic.server.core.objs.music.PlayerAddMusicObj;
import com.coloryr.allmusic.server.core.objs.music.SongInfoObj;
import com.coloryr.allmusic.server.core.side.BaseSide;
import com.coloryr.allmusic.server.event.MusicAddEvent;
import com.coloryr.allmusic.server.event.MusicPlayEvent;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.permissions.PermissionSet;
import net.minecraft.world.InteractionResult;
@@ -20,7 +21,7 @@ import java.util.Collection;
public class SideFabric extends BaseSide {
@Override
public void runTask(Runnable run) {
AllMusicFabric.server.execute(run);
AllMusicServer.server.execute(run);
}
@Override
@@ -50,8 +51,8 @@ public class SideFabric extends BaseSide {
@Override
public boolean needPlay(boolean islist) {
for (var player : AllMusicFabric.server.getPlayerList().getPlayers()) {
if (!AllMusic.isSkip(player.getName().getString(), null, false, islist)) {
for (var player : AllMusicServer.server.getPlayerList().getPlayers()) {
if (!com.coloryr.allmusic.server.core.AllMusic.isSkip(player.getName().getString(), null, false, islist)) {
return true;
}
}
@@ -60,7 +61,7 @@ public class SideFabric extends BaseSide {
@Override
public Collection<?> getPlayers() {
return AllMusicFabric.server.getPlayerList().getPlayers();
return AllMusicServer.server.getPlayerList().getPlayers();
}
@Override
@@ -78,72 +79,43 @@ public class SideFabric extends BaseSide {
}
@Override
public void send(Object player, ComType type, String data, int data1) {
public void send(Object player, CommandType type, String data, int data1) {
if (player instanceof ServerPlayer player1) {
send(player1, new PackPayload(type, data, data1));
send(player1, new MusicPack(type, data, data1));
}
}
@Override
public Object getPlayer(String player) {
return AllMusicFabric.server.getPlayerList().getPlayer(player);
return AllMusicServer.server.getPlayerList().getPlayer(player);
}
@Override
public void sendBar(Object player, String data) {
public void sendBar(Object player, net.kyori.adventure.text.Component data) {
if (player instanceof ServerPlayer player1) {
FabricApi.sendBar(player1, data);
player1.sendActionBar(data);
}
}
@Override
public File getFolder() {
return new File(AllMusicFabric.dir);
return new File(AllMusicServer.dir);
}
@Override
public void broadcast(String message) {
if (message == null || message.isEmpty()) {
return;
}
for (var player : AllMusicFabric.server.getPlayerList().getPlayers()) {
public void broadcast(net.kyori.adventure.text.Component message) {
for (var player : AllMusicServer.server.getPlayerList().getPlayers()) {
if (!AllMusic.isSkip(player.getName().getString(), null, false)) {
player.sendSystemMessage(Component.literal(message), false);
player.sendMessage(message);
}
}
}
@Override
public void broadcastWithRun(String message, String end, String command) {
if (message == null || message.isEmpty()) {
return;
public void sendMessage(Object obj, net.kyori.adventure.text.Component message) {
if (obj instanceof CommandSourceStack source) {
source.sendMessage(message);
}
FabricApi.sendMessageBqRun(message, end, command);
}
@Override
public void sendMessage(Object obj, String message) {
if (message == null || message.isEmpty()) {
return;
}
CommandSourceStack source = (CommandSourceStack) obj;
source.sendSystemMessage(Component.literal(message));
}
@Override
public void sendMessageRun(Object obj, String message, String end, String command) {
if (message == null || message.isEmpty()) {
return;
}
FabricApi.sendMessageRun((CommandSourceStack) obj, message, end, command);
}
@Override
public void sendMessageSuggest(Object obj, String message, String end, String command) {
if (message == null || message.isEmpty()) {
return;
}
FabricApi.sendMessageSuggest((CommandSourceStack) obj, message, end, command);
}
@Override
@@ -152,19 +124,14 @@ public class SideFabric extends BaseSide {
}
@Override
public boolean onMusicAdd(Object obj, MusicObj music) {
public boolean onMusicAdd(Object obj, PlayerAddMusicObj music) {
CommandSourceStack source = (CommandSourceStack) obj;
return MusicAddEvent.EVENT.invoker().interact(source.getPlayer(), music) != InteractionResult.PASS;
}
private void send(ServerPlayer players, PackPayload data) {
private void send(ServerPlayer players, MusicPack data) {
if (players == null)
return;
try {
runTask(() -> ServerPlayNetworking.send(players, data));
} catch (Exception e) {
AllMusic.log.warning("§c数据发送发生错误");
e.printStackTrace();
}
runTask(() -> ServerPlayNetworking.send(players, new MusicCodec(data)));
}
}
@@ -8,7 +8,7 @@ public class Tasks {
private static final List<TaskItem> taskItems = new CopyOnWriteArrayList<>();
public static void init() {
AllMusicFabric.server.addTickable(Tasks::tick);
AllMusicServer.server.addTickable(Tasks::tick);
}
public static void tick() {
@@ -1,6 +1,7 @@
package com.coloryr.allmusic.server.mixin;
import com.coloryr.allmusic.server.core.AllMusic;
import com.coloryr.allmusic.server.core.music.PlayMusic;
import net.minecraft.network.Connection;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.network.CommonListenerCookie;
@@ -14,7 +15,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public class ServerPlayerMixin {
@Inject(at = @At("HEAD"), method = "remove")
private void remove(ServerPlayer entity, CallbackInfo info) {
AllMusic.removeNowPlayPlayer(entity.getName().getString());
PlayMusic.removeNowPlayPlayer(entity.getName().getString());
}
@Inject(at = @At("TAIL"), method = "placeNewPlayer")
@@ -2,7 +2,7 @@
"required": true,
"minVersion": "0.8",
"package": "com.coloryr.allmusic.server.mixin",
"compatibilityLevel": "JAVA_21",
"compatibilityLevel": "JAVA_25",
"server": [
],
@@ -19,7 +19,10 @@
"environment": "*",
"entrypoints": {
"main": [
"com.coloryr.allmusic.server.AllMusicFabric"
"com.coloryr.allmusic.comm.AllMusicInit"
],
"server": [
"com.coloryr.allmusic.server.AllMusicServer"
]
},
"mixins": [
@@ -1,6 +1,7 @@
package com.coloryr.allmusic.server;
import com.coloryr.allmusic.server.core.AllMusic;
import com.coloryr.allmusic.server.core.music.PlayMusic;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
import net.minecraft.command.ServerCommandManager;
@@ -70,7 +71,7 @@ public class AllMusicServer {
@SubscribeEvent
public void onPlayerLoggedOut(PlayerEvent.PlayerLoggedOutEvent event) {
AllMusic.removeNowPlayPlayer(event.player.getName());
PlayMusic.removeNowPlayPlayer(event.player.getName());
}
@SubscribeEvent
@@ -1,6 +1,7 @@
package com.coloryr.allmusic.server;
import com.coloryr.allmusic.server.core.AllMusic;
import com.coloryr.allmusic.server.core.music.PlayMusic;
import com.mojang.brigadier.CommandDispatcher;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
@@ -81,7 +82,7 @@ public class AllMusicServer {
@SubscribeEvent
public void onPlayerLoggedOut(PlayerEvent.PlayerLoggedOutEvent event) {
AllMusic.removeNowPlayPlayer(event.getEntity().getName().getString());
PlayMusic.removeNowPlayPlayer(event.getEntity().getName().getString());
}
@SubscribeEvent
@@ -1,6 +1,7 @@
package com.coloryr.allmusic.server;
import com.coloryr.allmusic.server.core.AllMusic;
import com.coloryr.allmusic.server.core.music.PlayMusic;
import com.mojang.brigadier.CommandDispatcher;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
@@ -81,7 +82,7 @@ public class AllMusicServer {
@SubscribeEvent
public void onPlayerLoggedOut(PlayerEvent.PlayerLoggedOutEvent event) {
AllMusic.removeNowPlayPlayer(event.getEntity().getName().getString());
PlayMusic.removeNowPlayPlayer(event.getEntity().getName().getString());
}
@SubscribeEvent
@@ -1,6 +1,7 @@
package com.coloryr.allmusic.server;
import com.coloryr.allmusic.server.core.AllMusic;
import com.coloryr.allmusic.server.core.music.PlayMusic;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
@@ -75,7 +76,7 @@ public class AllMusicServer {
@SubscribeEvent
public void onPlayerLoggedOut(PlayerEvent.PlayerLoggedOutEvent event) {
AllMusic.removeNowPlayPlayer(event.player.getCommandSenderName());
PlayMusic.removeNowPlayPlayer(event.player.getCommandSenderName());
}
@SubscribeEvent
+1 -1
View File
@@ -48,7 +48,7 @@ for %%i in (%array3%) do (
if not exist "onejar\%%i\src\main\resources\com\coloryr\allmusic\client\core\player\decoder\mp3" mklink /j "onejar\%%i\src\main\resources\com\coloryr\allmusic\client\core\player\decoder\mp3" "client\mp3"
)
set array4=fabric_1_21 fabric_1_21_6 fabric_1_21_11 ^
set array4=fabric_1_21 fabric_1_21_6 fabric_1_21_11 fabric_26_1 ^
neoforge_1_21 neoforge_1_21_6 neoforge_1_21_11
for %%i in (%array4%) do (
@@ -2,6 +2,7 @@ package com.coloryr.allmusic.server;
import com.coloryr.allmusic.comm.AllMusicInit;
import com.coloryr.allmusic.server.core.AllMusic;
import com.coloryr.allmusic.server.core.music.PlayMusic;
import com.mojang.brigadier.CommandDispatcher;
import net.kyori.adventure.platform.modcommon.MinecraftServerAudiences;
import net.minecraft.commands.CommandSourceStack;
@@ -58,7 +59,7 @@ public class AllMusicServer {
@SubscribeEvent
public static void onPlayerLoggedOut(PlayerEvent.PlayerLoggedOutEvent event) {
AllMusic.removeNowPlayPlayer(event.getEntity().getName().getString());
PlayMusic.removeNowPlayPlayer(event.getEntity().getName().getString());
}
@SubscribeEvent
@@ -2,6 +2,7 @@ package com.coloryr.allmusic.server;
import com.coloryr.allmusic.comm.AllMusicInit;
import com.coloryr.allmusic.server.core.AllMusic;
import com.coloryr.allmusic.server.core.music.PlayMusic;
import com.mojang.brigadier.CommandDispatcher;
import net.kyori.adventure.platform.modcommon.MinecraftAudiences;
import net.kyori.adventure.platform.modcommon.MinecraftServerAudiences;
@@ -56,7 +57,7 @@ public class AllMusicServer {
@SubscribeEvent
public static void onPlayerLoggedOut(PlayerEvent.PlayerLoggedOutEvent event) {
AllMusic.removeNowPlayPlayer(event.getEntity().getName().getString());
PlayMusic.removeNowPlayPlayer(event.getEntity().getName().getString());
}
@SubscribeEvent
@@ -2,6 +2,7 @@ package com.coloryr.allmusic.server;
import com.coloryr.allmusic.comm.AllMusicInit;
import com.coloryr.allmusic.server.core.AllMusic;
import com.coloryr.allmusic.server.core.music.PlayMusic;
import com.mojang.brigadier.CommandDispatcher;
import net.kyori.adventure.platform.modcommon.MinecraftServerAudiences;
import net.minecraft.commands.CommandSourceStack;
@@ -57,7 +58,7 @@ public class AllMusicServer {
@SubscribeEvent
public static void onPlayerLoggedOut(PlayerEvent.PlayerLoggedOutEvent event) {
AllMusic.removeNowPlayPlayer(event.getEntity().getName().getString());
PlayMusic.removeNowPlayPlayer(event.getEntity().getName().getString());
}
@SubscribeEvent
@@ -1,6 +1,7 @@
package com.coloryr.allmusic.server.side.velocity;
import com.coloryr.allmusic.server.core.AllMusic;
import com.coloryr.allmusic.server.core.music.PlayMusic;
import com.google.common.io.ByteArrayDataInput;
import com.velocitypowered.api.event.Subscribe;
import com.velocitypowered.api.event.connection.DisconnectEvent;
@@ -11,7 +12,7 @@ import com.velocitypowered.api.proxy.ServerConnection;
public class ListenerVelocity {
@Subscribe
public void onDisconnectEvent(final DisconnectEvent event) {
AllMusic.removeNowPlayPlayer(event.getPlayer().getUsername());
PlayMusic.removeNowPlayPlayer(event.getPlayer().getUsername());
}
@Subscribe