1
0
mirror of https://github.com/Suiranoil/SkinRestorer.git synced 2026-01-16 04:42:12 +00:00

refactor common events

This commit is contained in:
2024-11-28 07:11:50 +03:00
parent 0d56c339d1
commit 7e063977c5
6 changed files with 36 additions and 23 deletions

View File

@@ -1,6 +1,8 @@
package net.lionarius.skinrestorer;
import com.mojang.authlib.GameProfile;
import com.mojang.brigadier.CommandDispatcher;
import net.lionarius.skinrestorer.command.SkinCommand;
import net.lionarius.skinrestorer.config.BuiltInProviderConfig;
import net.lionarius.skinrestorer.config.Config;
import net.lionarius.skinrestorer.platform.Services;
@@ -13,6 +15,7 @@ import net.lionarius.skinrestorer.util.FileUtils;
import net.lionarius.skinrestorer.util.PlayerUtils;
import net.lionarius.skinrestorer.util.Result;
import net.lionarius.skinrestorer.util.WebUtils;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerPlayer;
@@ -61,6 +64,10 @@ public final class SkinRestorer {
return ResourceLocation.fromNamespaceAndPath(SkinRestorer.MOD_ID, name);
}
public static String assetPath(String name) {
return String.format("/assets/%s/%s", SkinRestorer.MOD_ID, name);
}
public static void onInitialize() {
SkinRestorer.configDir = Services.PLATFORM.getConfigDirectory().resolve(SkinRestorer.MOD_ID);
SkinRestorer.reloadConfig();
@@ -81,13 +88,6 @@ public final class SkinRestorer {
SkinRestorer.providersRegistry.register(config.name(), provider, config.enabled());
}
public static void onServerStarted(MinecraftServer server) {
Path worldSkinDirectory = server.getWorldPath(LevelResource.ROOT).resolve(SkinRestorer.MOD_ID);
FileUtils.tryMigrateOldSkinDirectory(SkinRestorer.getConfigDir(), worldSkinDirectory);
SkinRestorer.skinStorage = new SkinStorage(new SkinIO(worldSkinDirectory));
}
public static void reloadConfig() {
SkinRestorer.config = Config.load(SkinRestorer.getConfigDir());
Translation.reloadTranslations();
@@ -98,10 +98,6 @@ public final class SkinRestorer {
MineskinSkinProvider.reload();
}
public static String assetPath(String name) {
return String.format("/assets/%s/%s", SkinRestorer.MOD_ID, name);
}
public static Collection<ServerPlayer> applySkin(MinecraftServer server, Iterable<GameProfile> targets, SkinValue value, boolean save) {
var acceptedPlayers = new HashSet<ServerPlayer>();
@@ -160,4 +156,23 @@ public final class SkinRestorer {
return Result.error(e.getMessage());
});
}
public static class Events {
private Events() {}
public static void onServerStarted(MinecraftServer server) {
Path worldSkinDirectory = server.getWorldPath(LevelResource.ROOT).resolve(SkinRestorer.MOD_ID);
FileUtils.tryMigrateOldSkinDirectory(SkinRestorer.getConfigDir(), worldSkinDirectory);
SkinRestorer.skinStorage = new SkinStorage(new SkinIO(worldSkinDirectory));
}
public static void onCommandRegister(CommandDispatcher<CommandSourceStack> dispatcher) {
SkinCommand.register(dispatcher);
}
public static void onPlayerDisconnect(ServerPlayer player) {
SkinRestorer.getSkinStorage().removeSkin(player.getUUID());
}
}
}

View File

@@ -27,13 +27,13 @@ public abstract class PlayerListMixin {
@Inject(method = "remove", at = @At("TAIL"))
private void remove(ServerPlayer player, CallbackInfo ci) {
SkinRestorer.getSkinStorage().removeSkin(player.getUUID());
SkinRestorer.Events.onPlayerDisconnect(player);
}
@Inject(method = "removeAll", at = @At("HEAD"))
private void removeAll(CallbackInfo ci) {
for (ServerPlayer player : getPlayers()) {
SkinRestorer.getSkinStorage().removeSkin(player.getUUID());
for (var player : getPlayers()) {
SkinRestorer.Events.onPlayerDisconnect(player);
}
}

View File

@@ -1,7 +1,7 @@
package net.lionarius.skinrestorer.fabric.mixin;
import com.mojang.brigadier.CommandDispatcher;
import net.lionarius.skinrestorer.command.SkinCommand;
import net.lionarius.skinrestorer.SkinRestorer;
import net.minecraft.commands.CommandBuildContext;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
@@ -21,6 +21,6 @@ public abstract class CommandsMixin {
@Inject(method = "<init>", at = @At(value = "INVOKE",
target = "Lnet/minecraft/server/commands/AdvancementCommands;register(Lcom/mojang/brigadier/CommandDispatcher;)V"))
private void init(Commands.CommandSelection environment, CommandBuildContext commandRegistryAccess, CallbackInfo ci) {
SkinCommand.register(dispatcher);
SkinRestorer.Events.onCommandRegister(dispatcher);
}
}

View File

@@ -13,6 +13,6 @@ public abstract class MinecraftServerMixin {
@Inject(method = "runServer",
at = @At(value = "INVOKE", target = "Lnet/minecraft/Util;getNanos()J", ordinal = 0))
private void onServerStarted(CallbackInfo ci) {
SkinRestorer.onServerStarted((MinecraftServer) (Object) this);
SkinRestorer.Events.onServerStarted((MinecraftServer) (Object) this);
}
}

View File

@@ -1,7 +1,6 @@
package net.lionarius.skinrestorer.forge;
import net.lionarius.skinrestorer.SkinRestorer;
import net.lionarius.skinrestorer.command.SkinCommand;
import net.lionarius.skinrestorer.compat.skinshuffle.SkinShuffleCompatibility;
import net.minecraftforge.event.RegisterCommandsEvent;
import net.minecraftforge.event.server.ServerStartedEvent;
@@ -21,11 +20,11 @@ public final class SkinRestorerForge {
@SubscribeEvent
public static void onCommandRegister(RegisterCommandsEvent event) {
SkinCommand.register(event.getDispatcher());
SkinRestorer.Events.onCommandRegister(event.getDispatcher());
}
@SubscribeEvent
public static void onServerStarted(ServerStartedEvent event) {
SkinRestorer.onServerStarted(event.getServer());
SkinRestorer.Events.onServerStarted(event.getServer());
}
}

View File

@@ -1,7 +1,6 @@
package net.lionarius.skinrestorer.neoforge;
import net.lionarius.skinrestorer.SkinRestorer;
import net.lionarius.skinrestorer.command.SkinCommand;
import net.lionarius.skinrestorer.compat.skinshuffle.SkinShuffleCompatibility;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
@@ -22,11 +21,11 @@ public final class SkinRestorerNeoForge {
@SubscribeEvent
public static void onCommandRegister(RegisterCommandsEvent event) {
SkinCommand.register(event.getDispatcher());
SkinRestorer.Events.onCommandRegister(event.getDispatcher());
}
@SubscribeEvent
public static void onServerStarted(ServerStartedEvent event) {
SkinRestorer.onServerStarted(event.getServer());
SkinRestorer.Events.onServerStarted(event.getServer());
}
}