diff --git a/src/main/java/com/hadroncfy/sreplay/SReplayMod.java b/src/main/java/com/hadroncfy/sreplay/SReplayMod.java index ae1b866..0ef3f2e 100644 --- a/src/main/java/com/hadroncfy/sreplay/SReplayMod.java +++ b/src/main/java/com/hadroncfy/sreplay/SReplayMod.java @@ -17,9 +17,6 @@ import java.util.Collections; import java.util.List; -import com.google.gson.JsonParseException; -import com.hadroncfy.sreplay.asm.MultipleOrdinalFieldInjectionPoint; -import com.hadroncfy.sreplay.command.SReplayCommand; import com.hadroncfy.sreplay.config.Config; import com.hadroncfy.sreplay.config.Formats; import com.hadroncfy.sreplay.recording.Photographer; @@ -27,7 +24,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.spongepowered.asm.mixin.injection.InjectionPoint; public class SReplayMod implements ModInitializer { @@ -35,11 +31,9 @@ public class SReplayMod implements ModInitializer { private static Config config; private static final Server downloadServer = new Server(); - public static final SReplayCommand SREPLAY_COMMAND = new SReplayCommand(); - public static Photographer getFake(MinecraftServer server, String name) { ServerPlayerEntity player = server.getPlayerManager().getPlayer(name); - if (player != null && player instanceof Photographer) { + if (player instanceof Photographer) { return (Photographer) player; } return null; @@ -55,7 +49,7 @@ public static List listRecordings() { return files; } - public static void loadConfig() throws IOException, JsonParseException { + public static void loadConfig() throws IOException { File dir = new File("config"); if (!dir.exists()) { dir.mkdirs(); @@ -83,14 +77,13 @@ public static Formats getFormats() { @Override public void onInitialize() { - InjectionPoint.register(MultipleOrdinalFieldInjectionPoint.class); try { SReplayMod.loadConfig(); Lang.load("zh_cn"); LOGGER.info("SReplay: Initialzed"); - } catch (Throwable e) { - LOGGER.error("Exception initializing mod: " + e); + } catch (Exception e) { + LOGGER.error("Exception initializing mod: {}", e); e.printStackTrace(); } @@ -101,13 +94,6 @@ public void onInitialize() { if (!config.savePath.exists()) { config.savePath.mkdirs(); } - - try { - LOGGER.info("!!!! test: {}", - Class.forName("com.hadroncfy.sreplay.asm.MultipleOrdinalFieldInjectionPoint").getName()); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } } } \ No newline at end of file diff --git a/src/main/java/com/hadroncfy/sreplay/asm/MixinConfigPlugin.java b/src/main/java/com/hadroncfy/sreplay/asm/MixinConfigPlugin.java new file mode 100644 index 0000000..cda0a74 --- /dev/null +++ b/src/main/java/com/hadroncfy/sreplay/asm/MixinConfigPlugin.java @@ -0,0 +1,48 @@ +package com.hadroncfy.sreplay.asm; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import org.objectweb.asm.tree.ClassNode; +import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; +import org.spongepowered.asm.mixin.extensibility.IMixinInfo; +import org.spongepowered.asm.mixin.injection.InjectionPoint; + +public class MixinConfigPlugin implements IMixinConfigPlugin { + + @Override + public void onLoad(String mixinPackage) { + InjectionPoint.register(MultipleOrdinalFieldInjectionPoint.class); + } + + @Override + public String getRefMapperConfig() { + return null; + } + + @Override + public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { + return true; + } + + @Override + public void acceptTargets(Set myTargets, Set otherTargets) { + // nop + } + + @Override + public List getMixins() { + return new ArrayList<>(); + } + + @Override + public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + // nop + } + + @Override + public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + // nop + } +} \ No newline at end of file diff --git a/src/main/java/com/hadroncfy/sreplay/mixin/MixinThreadedAnvilChunkStorage.java b/src/main/java/com/hadroncfy/sreplay/mixin/MixinThreadedAnvilChunkStorage.java index 17bafcc..1072346 100644 --- a/src/main/java/com/hadroncfy/sreplay/mixin/MixinThreadedAnvilChunkStorage.java +++ b/src/main/java/com/hadroncfy/sreplay/mixin/MixinThreadedAnvilChunkStorage.java @@ -1,11 +1,11 @@ package com.hadroncfy.sreplay.mixin; - import com.hadroncfy.sreplay.recording.Photographer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.InjectionPoint; import org.spongepowered.asm.mixin.injection.Redirect; import net.minecraft.network.Packet; @@ -15,6 +15,8 @@ import static com.hadroncfy.sreplay.recording.Photographer.getRealViewDistance; +import com.hadroncfy.sreplay.asm.MultipleOrdinalFieldInjectionPoint; + @Mixin(ThreadedAnvilChunkStorage.class) public abstract class MixinThreadedAnvilChunkStorage { @Shadow private int watchDistance; diff --git a/src/main/resources/sreplay.mixins.json b/src/main/resources/sreplay.mixins.json index 783e965..8270189 100644 --- a/src/main/resources/sreplay.mixins.json +++ b/src/main/resources/sreplay.mixins.json @@ -21,5 +21,6 @@ "injectors": { "defaultRequire": 1 }, + "plugin": "com.hadroncfy.sreplay.asm.MixinConfigPlugin", "refmap": "sreplay-refmap.json" } \ No newline at end of file