mirror of
https://github.com/Suiranoil/SkinRestorer.git
synced 2026-01-16 04:42:12 +00:00
use java services for platform specific stuff
This commit is contained in:
@@ -2,6 +2,7 @@ package net.lionarius.skinrestorer;
|
||||
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import net.lionarius.skinrestorer.config.Config;
|
||||
import net.lionarius.skinrestorer.platform.Services;
|
||||
import net.lionarius.skinrestorer.skin.SkinIO;
|
||||
import net.lionarius.skinrestorer.skin.SkinStorage;
|
||||
import net.lionarius.skinrestorer.skin.SkinValue;
|
||||
@@ -54,8 +55,8 @@ public final class SkinRestorer {
|
||||
return Optional.ofNullable(SkinRestorer.providersRegistry.get(name));
|
||||
}
|
||||
|
||||
public static void onInitialize(Path rootConfigDir) {
|
||||
SkinRestorer.configDir = rootConfigDir.resolve(SkinRestorer.MOD_ID);
|
||||
public static void onInitialize() {
|
||||
SkinRestorer.configDir = Services.PLATFORM.getConfigDirectory().resolve(SkinRestorer.MOD_ID);
|
||||
SkinRestorer.reloadConfig();
|
||||
|
||||
SkinRestorer.providersRegistry.register(EmptySkinProvider.PROVIDER_NAME, SkinProvider.EMPTY, false);
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package net.lionarius.skinrestorer.platform;
|
||||
|
||||
import net.lionarius.skinrestorer.SkinRestorer;
|
||||
import net.lionarius.skinrestorer.platform.services.PlatformHelper;
|
||||
|
||||
import java.util.ServiceLoader;
|
||||
|
||||
public final class Services {
|
||||
|
||||
private Services() {}
|
||||
|
||||
public final static PlatformHelper PLATFORM = load(PlatformHelper.class);
|
||||
|
||||
private static <T> T load(Class<T> clazz) {
|
||||
final T loadedService = ServiceLoader.load(clazz)
|
||||
.findFirst()
|
||||
.orElseThrow(() -> new NullPointerException("Failed to load service for " + clazz.getName()));
|
||||
SkinRestorer.LOGGER.debug("Loaded {} for service {}", loadedService, clazz);
|
||||
return loadedService;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package net.lionarius.skinrestorer.platform.services;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
||||
public interface PlatformHelper {
|
||||
|
||||
String getPlatformName();
|
||||
|
||||
boolean isModLoaded(String modId);
|
||||
|
||||
Path getConfigDirectory();
|
||||
}
|
||||
@@ -7,6 +7,6 @@ import net.lionarius.skinrestorer.SkinRestorer;
|
||||
public final class SkinRestorerFabric implements ModInitializer {
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
SkinRestorer.onInitialize(FabricLoader.getInstance().getConfigDir());
|
||||
SkinRestorer.onInitialize();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package net.lionarius.skinrestorer.fabric.platform;
|
||||
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.lionarius.skinrestorer.platform.services.PlatformHelper;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
||||
public final class FabricPlatformHelper implements PlatformHelper {
|
||||
@Override
|
||||
public String getPlatformName() {
|
||||
return "fabric";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isModLoaded(String modId) {
|
||||
return FabricLoader.getInstance().isModLoaded(modId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Path getConfigDirectory() {
|
||||
return FabricLoader.getInstance().getConfigDir();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
net.lionarius.skinrestorer.fabric.platform.FabricPlatformHelper
|
||||
@@ -16,7 +16,7 @@ public final class SkinRestorerForge {
|
||||
public SkinRestorerForge() {
|
||||
MinecraftForge.EVENT_BUS.register(SkinRestorerForge.class);
|
||||
|
||||
SkinRestorer.onInitialize(FMLPaths.CONFIGDIR.get());
|
||||
SkinRestorer.onInitialize();
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package net.lionarius.skinrestorer.forge.platform;
|
||||
|
||||
import net.lionarius.skinrestorer.platform.services.PlatformHelper;
|
||||
import net.minecraftforge.fml.ModList;
|
||||
import net.minecraftforge.fml.loading.FMLPaths;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
||||
public final class ForgePlatformHelper implements PlatformHelper {
|
||||
@Override
|
||||
public String getPlatformName() {
|
||||
return "forge";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isModLoaded(String modId) {
|
||||
return ModList.get().isLoaded(modId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Path getConfigDirectory() {
|
||||
return FMLPaths.CONFIGDIR.get();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
net.lionarius.skinrestorer.forge.platform.ForgePlatformHelper
|
||||
@@ -17,7 +17,7 @@ public final class SkinRestorerNeoForge {
|
||||
public SkinRestorerNeoForge() {
|
||||
NeoForge.EVENT_BUS.register(SkinRestorerNeoForge.class);
|
||||
|
||||
SkinRestorer.onInitialize(FMLPaths.CONFIGDIR.get());
|
||||
SkinRestorer.onInitialize();
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package net.lionarius.skinrestorer.neoforge.platform;
|
||||
|
||||
import net.lionarius.skinrestorer.platform.services.PlatformHelper;
|
||||
import net.neoforged.fml.ModList;
|
||||
import net.neoforged.fml.loading.FMLPaths;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
||||
public final class NeoForgePlatformHelper implements PlatformHelper {
|
||||
@Override
|
||||
public String getPlatformName() {
|
||||
return "neoforge";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isModLoaded(String modId) {
|
||||
return ModList.get().isLoaded(modId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Path getConfigDirectory() {
|
||||
return FMLPaths.CONFIGDIR.get();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
net.lionarius.skinrestorer.neoforge.platform.NeoForgePlatformHelper
|
||||
Reference in New Issue
Block a user