diff --git a/legacyforge/build.gradle b/legacyforge/build.gradle index c968766..b24fa4c 100644 --- a/legacyforge/build.gradle +++ b/legacyforge/build.gradle @@ -6,6 +6,7 @@ dependencies { jar { exclude("cpw/mods/fml/relauncher/FMLInjectionData.class") exclude("net/minecraftforge/fml/relauncher/FMLInjectionData.class") + exclude("cpw/mods/fml/relauncher/IClassTransformer.class") manifest { attributes([ diff --git a/legacyforge/src/main/java/cpw/mods/fml/relauncher/IClassTransformer.java b/legacyforge/src/main/java/cpw/mods/fml/relauncher/IClassTransformer.java new file mode 100644 index 0000000..78e1086 --- /dev/null +++ b/legacyforge/src/main/java/cpw/mods/fml/relauncher/IClassTransformer.java @@ -0,0 +1,21 @@ +/* + * The FML Forge Mod Loader suite. + * Copyright (C) 2012 cpw + * + * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 + * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package cpw.mods.fml.relauncher; + +public interface IClassTransformer +{ + public byte[] transform(String name, byte[] bytes); // 1.4 + public byte[] transform(String name, String transformedName, byte[] bytes); // 1.5 +} diff --git a/legacyforge/src/main/java/io/dogboy/serializationisbad/legacyforge/SIBTransformer.java b/legacyforge/src/main/java/io/dogboy/serializationisbad/legacyforge/SIBTransformerLaunchwrapper.java similarity index 85% rename from legacyforge/src/main/java/io/dogboy/serializationisbad/legacyforge/SIBTransformer.java rename to legacyforge/src/main/java/io/dogboy/serializationisbad/legacyforge/SIBTransformerLaunchwrapper.java index 477d453..38606ff 100644 --- a/legacyforge/src/main/java/io/dogboy/serializationisbad/legacyforge/SIBTransformer.java +++ b/legacyforge/src/main/java/io/dogboy/serializationisbad/legacyforge/SIBTransformerLaunchwrapper.java @@ -3,7 +3,7 @@ import io.dogboy.serializationisbad.core.Patches; import net.minecraft.launchwrapper.IClassTransformer; -public class SIBTransformer implements IClassTransformer { +public class SIBTransformerLaunchwrapper implements IClassTransformer { @Override public byte[] transform(String name, String transformedName, byte[] basicClass) { if (Patches.getPatchModuleForClass(transformedName) == null) return basicClass; diff --git a/legacyforge/src/main/java/io/dogboy/serializationisbad/legacyforge/SIBTransformerRelauncher.java b/legacyforge/src/main/java/io/dogboy/serializationisbad/legacyforge/SIBTransformerRelauncher.java new file mode 100644 index 0000000..a49cd5e --- /dev/null +++ b/legacyforge/src/main/java/io/dogboy/serializationisbad/legacyforge/SIBTransformerRelauncher.java @@ -0,0 +1,18 @@ +package io.dogboy.serializationisbad.legacyforge; + +import cpw.mods.fml.relauncher.IClassTransformer; +import io.dogboy.serializationisbad.core.Patches; + +public class SIBTransformerRelauncher implements IClassTransformer { + @Override + public byte[] transform(String name, byte[] bytes) { + return this.transform(null, name, bytes); + } + + @Override + public byte[] transform(String name, String transformedName, byte[] bytes) { + if (Patches.getPatchModuleForClass(transformedName) == null) return bytes; + + return Patches.patchClass(bytes, transformedName, false); + } +} diff --git a/legacyforge/src/main/java/io/dogboy/serializationisbad/legacyforge/SerializationIsBadCoreMod.java b/legacyforge/src/main/java/io/dogboy/serializationisbad/legacyforge/SerializationIsBadCoreMod.java index a6b3a4d..7432aec 100644 --- a/legacyforge/src/main/java/io/dogboy/serializationisbad/legacyforge/SerializationIsBadCoreMod.java +++ b/legacyforge/src/main/java/io/dogboy/serializationisbad/legacyforge/SerializationIsBadCoreMod.java @@ -19,11 +19,23 @@ public SerializationIsBadCoreMod() { SerializationIsBad.init(minecraftHome); } + @Override + public String[] getLibraryRequestClass() { + return new String[0]; + } + @Override public String[] getASMTransformerClass() { if (SerializationIsBad.isAgentActive()) return new String[0]; - return new String[]{ SIBTransformer.class.getCanonicalName() }; + // Check if we're in Forge Relauncher era (pre 1.6) + try { + Class.forName("cpw.mods.fml.relauncher.IClassTransformer"); + return new String[] { SIBTransformerRelauncher.class.getCanonicalName() }; + } catch (ClassNotFoundException ignored) {} + + // Launchwrapper / LegacyLauncher + return new String[]{ SIBTransformerLaunchwrapper.class.getCanonicalName() }; } @Override diff --git a/legacyforge/src/main/java/net/minecraftforge/fml/relauncher/IFMLLoadingPlugin.java b/legacyforge/src/main/java/net/minecraftforge/fml/relauncher/IFMLLoadingPlugin.java index 69bfb62..0caf9e2 100644 --- a/legacyforge/src/main/java/net/minecraftforge/fml/relauncher/IFMLLoadingPlugin.java +++ b/legacyforge/src/main/java/net/minecraftforge/fml/relauncher/IFMLLoadingPlugin.java @@ -34,6 +34,13 @@ */ public interface IFMLLoadingPlugin { + /** + * Return a list of classes that implement the ILibrarySet interface + * + * @return a list of classes that implement the ILibrarySet interface + */ + String[] getLibraryRequestClass(); + /** * Return a list of classes that implements the IClassTransformer interface * @return a list of classes that implements the IClassTransformer interface diff --git a/serializationisbad.json b/serializationisbad.json index eaaf930..1a0d1ac 100644 --- a/serializationisbad.json +++ b/serializationisbad.json @@ -253,9 +253,12 @@ "logisticspipes.network.packets.debuggui.DebugInfoUpdate", "logisticspipes.network.packets.debuggui.DebugTargetResponse", "logisticspipes.network.packets.debuggui.DebugTypePacket", - "logisticspipes.network.packets.routingdebug.RoutingUpdateTargetResponse" + "logisticspipes.network.packets.routingdebug.RoutingUpdateTargetResponse", + "logisticspipes.network.packets.GuiArgumentPacket" + ], + "classAllowlist": [ + "I" ], - "classAllowlist": [], "packageAllowlist": [ "logisticspipes" ] @@ -368,6 +371,17 @@ "packageAllowlist": [ "com.possible_triangle.brazier" ] + }, + { + "classesToPatch": [ + "com.thevoxelbox.voxelpacket.common.encoders.VoxelPacketEncoderObject" + ], + "classAllowlist": [], + "packageAllowlist": [ + "com.thevoxelbox.voxelmap", + "com.thevoxelbox.voxelpacket", + "com.thevoxelbox.voxelplayer" + ] } ], "classAllowlist": [