diff --git a/gradle.properties b/gradle.properties index 39dbfda..5e6d911 100644 --- a/gradle.properties +++ b/gradle.properties @@ -61,17 +61,17 @@ apiPackage = accessTransformersFile = # Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled! -usesMixins = false +usesMixins = true # Adds some debug arguments like verbose output and export -usesMixinDebug = false +usesMixinDebug = true # Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise. mixinPlugin = # Specify the package that contains all of your Mixins. You may only place Mixins in this package or the build will fail! -mixinsPackage = +mixinsPackage = mixins # Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin! # This parameter is for legacy compatibility only # Example value: coreModClass = asm.FMLPlugin + modGroup = com.myname.mymodid -> com.myname.mymodid.asm.FMLPlugin -coreModClass = +coreModClass = mixins.PosteaLoadingPlugin # If your project is only a consolidation of mixins or a core mod and does NOT contain a 'normal' mod ( = some class # that is annotated with @Mod) you want this to be true. When in doubt: leave it on false! containsMixinsAndOrCoreModOnly = false diff --git a/src/main/java/com/myname/mymodid/MyMod.java b/src/main/java/com/myname/mymodid/MyMod.java index 8dc124f..9076847 100644 --- a/src/main/java/com/myname/mymodid/MyMod.java +++ b/src/main/java/com/myname/mymodid/MyMod.java @@ -1,16 +1,13 @@ package com.myname.mymodid; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLServerStartingEvent; -import org.spongepowered.asm.launch.MixinBootstrap; -import org.spongepowered.asm.mixin.Mixins; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; @Mod(modid = Tags.MODID, version = Tags.VERSION, name = Tags.MODNAME, acceptedMinecraftVersions = "[1.7.10]") public class MyMod { @@ -22,9 +19,6 @@ public class MyMod { @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { - MixinBootstrap.init(); - Mixins.addConfiguration("mixins.json"); - proxy.preInit(event); } diff --git a/src/main/java/com/myname/mymodid/PosteaLoadingPlugin.java b/src/main/java/com/myname/mymodid/PosteaLoadingPlugin.java deleted file mode 100644 index d060ab9..0000000 --- a/src/main/java/com/myname/mymodid/PosteaLoadingPlugin.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.myname.mymodid; - -import com.falsepattern.gasstation.IEarlyMixinLoader; -import cpw.mods.fml.relauncher.FMLLaunchHandler; -import cpw.mods.fml.relauncher.IFMLLoadingPlugin; -import jdk.jfr.Name; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -@IFMLLoadingPlugin.TransformerExclusions({ "mods.mymod" }) -@Name("mymod") -@IFMLLoadingPlugin.SortingIndex(1500) -@IFMLLoadingPlugin.MCVersion("1.7.10") -public final class PosteaLoadingPlugin implements IEarlyMixinLoader, IFMLLoadingPlugin { - - public static final String ItemStackTransformer = "mods.battlegear2.coremod.transformers.EntityPlayerTransformer"; - - public static File debugOutputLocation; - public static final String[] transformers = new String[] { ItemStackTransformer }; - - @Override - public String[] getASMTransformerClass() { - return transformers; - } - - @Override - public String getAccessTransformerClass() { - return null; - } - - @Override - public String getModContainerClass() { - return null; - } - - @Override - public String getSetupClass() { - return null; - } - - @Override - public void injectData(Map data) { - debugOutputLocation = new File(data.get("mcLocation").toString(), "ItemStack edited classes"); - } - - @Override - public List getMixinConfigs() { - List list = new ArrayList<>(); - list.add("mixins.json" ); - return list; - } - -} diff --git a/src/main/java/com/myname/mymodid/mixins/PosteaLoadingPlugin.java b/src/main/java/com/myname/mymodid/mixins/PosteaLoadingPlugin.java new file mode 100644 index 0000000..86badf9 --- /dev/null +++ b/src/main/java/com/myname/mymodid/mixins/PosteaLoadingPlugin.java @@ -0,0 +1,54 @@ +package com.myname.mymodid.mixins; + +import com.gtnewhorizon.gtnhmixins.IEarlyMixinLoader; +import cpw.mods.fml.relauncher.FMLLaunchHandler; +import cpw.mods.fml.relauncher.IFMLLoadingPlugin; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +@IFMLLoadingPlugin.MCVersion("1.7.10") +public final class PosteaLoadingPlugin implements IEarlyMixinLoader, IFMLLoadingPlugin { + + @Override + public String[] getASMTransformerClass() { + return null; + } + + @Override + public String getAccessTransformerClass() { + return null; + } + + @Override + public String getModContainerClass() { + return null; + } + + @Override + public String getSetupClass() { + return null; + } + + @Override + public void injectData(Map data) {} + + @Override + public String getMixinConfig() { + return "mixins.mymodid.early.json"; + } + + @Override + public List getMixins(Set loadedCoreMods) { + final List mixins = new ArrayList<>(); + mixins.add("MixinItemStack"); + if (FMLLaunchHandler.side().isClient()) { + // register client only mixins here, + // that is mixins that target client classes + // such as net.minecraft.client.Minecraft class + } + return mixins; + } +} diff --git a/src/main/java/com/myname/mymodid/MixinItemStack.java b/src/main/java/com/myname/mymodid/mixins/early/MixinItemStack.java similarity index 91% rename from src/main/java/com/myname/mymodid/MixinItemStack.java rename to src/main/java/com/myname/mymodid/mixins/early/MixinItemStack.java index 57bf59d..076b906 100644 --- a/src/main/java/com/myname/mymodid/MixinItemStack.java +++ b/src/main/java/com/myname/mymodid/mixins/early/MixinItemStack.java @@ -1,4 +1,4 @@ -package com.myname.mymodid; +package com.myname.mymodid.mixins.early; import net.minecraft.item.Item; @@ -11,7 +11,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ItemStack.class) public abstract class MixinItemStack{ - @Inject(method = "(Lnet/minecraft/item/Item;II)V", at = @At("HEAD")) + @Inject(method = "(Lnet/minecraft/item/Item;II)V", at = @At("RETURN")) private void onConstructorHead(Item item, int stackSize, int metadata, CallbackInfo ci) { System.out.println(item.getUnlocalizedName() + " " + metadata + " " + stackSize); } diff --git a/src/main/resources/mixins.json b/src/main/resources/mixins.json deleted file mode 100644 index 1dc7a14..0000000 --- a/src/main/resources/mixins.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "required": true, - "package": "com.myname.mymodid", - "mixins": [ - "MixinItemStack" - ] -} diff --git a/src/main/resources/mixins.mymodid.early.json b/src/main/resources/mixins.mymodid.early.json new file mode 100644 index 0000000..6c329b2 --- /dev/null +++ b/src/main/resources/mixins.mymodid.early.json @@ -0,0 +1,11 @@ +{ + "required": true, + "minVersion": "0.8.5-GTNH", + "package": "com.myname.mymodid.mixins.early", + "refmap": "mixins.mymodid.refmap.json", + "target": "@env(DEFAULT)", + "compatibilityLevel": "JAVA_8", + "mixins": [], + "client": [], + "server": [] +} diff --git a/src/main/resources/mixins.mymodid.json b/src/main/resources/mixins.mymodid.json new file mode 100644 index 0000000..c27a12d --- /dev/null +++ b/src/main/resources/mixins.mymodid.json @@ -0,0 +1,10 @@ +{ + "required": true, + "minVersion": "0.8.5-GTNH", + "refmap": "mixins.mymodid.refmap.json", + "target": "@env(DEFAULT)", + "compatibilityLevel": "JAVA_8", + "mixins": [], + "client": [], + "server": [] +}