diff --git a/.gitignore b/.gitignore index 06f28d1..c624c34 100644 --- a/.gitignore +++ b/.gitignore @@ -25,7 +25,6 @@ whitelist.json *.iml *.ipr *.iws -src/main/resources/mixins.*.json *.bat *.DS_Store !gradlew.bat diff --git a/gradle.properties b/gradle.properties index f1d7ec2..d44f929 100644 --- a/gradle.properties +++ b/gradle.properties @@ -41,11 +41,11 @@ developmentEnvironmentUserName = # Enables using modern Java syntax (up to version 17) via Jabel, while still targeting JVM 8. # See https://github.com/bsideup/jabel for details on how this works. -enableModernJavaSyntax = false +enableModernJavaSyntax = true # Enables injecting missing generics into the decompiled source code for a better coding experience. # Turns most publicly visible List, Map, etc. into proper List, Map types. -enableGenericInjection = false +enableGenericInjection = true # Generate a class with a String field for the mod version named as defined below. # If generateGradleTokenClass is empty or not missing, no such class will be generated. @@ -53,7 +53,7 @@ enableGenericInjection = false generateGradleTokenClass = # Name of the token containing the project's current version to generate/replace. -gradleTokenVersion = GRADLETOKEN_VERSION +gradleTokenVersion = # [DEPRECATED] Mod ID replacement token. gradleTokenModId = @@ -70,7 +70,7 @@ gradleTokenGroupName = # The string's content will be replaced with your mod's version when compiled. You should use this to specify your mod's # version in @Mod([...], version = VERSION, [...]). # Leave these properties empty to skip individual token replacements. -replaceGradleTokenInFile = ModContainer.java +replaceGradleTokenInFile = # In case your mod provides an API for other mods to implement you may declare its package here. Otherwise, you can # leave this property empty. @@ -91,10 +91,10 @@ usesMixins = true separateMixinSourceSet = # Adds some debug arguments like verbose output and class export. -usesMixinDebug = false +usesMixinDebug = true # Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise. -mixinPlugin = MixinPlugin +mixinPlugin = # Specify the package that contains all of your Mixins. You may only place Mixins in this package or the build will fail! mixinsPackage = mixins @@ -102,7 +102,7 @@ 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 = LoadingPlugin # 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! diff --git a/src/main/java/glowredman/defaultserverlist/LoadingPlugin.java b/src/main/java/glowredman/defaultserverlist/LoadingPlugin.java new file mode 100644 index 0000000..a065685 --- /dev/null +++ b/src/main/java/glowredman/defaultserverlist/LoadingPlugin.java @@ -0,0 +1,62 @@ +package glowredman.defaultserverlist; + +import java.io.File; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import com.gtnewhorizon.gtnhmixins.IEarlyMixinLoader; + +import cpw.mods.fml.relauncher.FMLLaunchHandler; +import cpw.mods.fml.relauncher.IFMLLoadingPlugin; +import cpw.mods.fml.relauncher.IFMLLoadingPlugin.MCVersion; +import cpw.mods.fml.relauncher.IFMLLoadingPlugin.Name; +import cpw.mods.fml.relauncher.IFMLLoadingPlugin.TransformerExclusions; +import cpw.mods.fml.relauncher.Side; + +@MCVersion("1.7.10") +@Name("DefaultServerList") +@TransformerExclusions("glowredman.defaultserverlist.LoadingPlugin") +public class LoadingPlugin implements IFMLLoadingPlugin, IEarlyMixinLoader { + + @Override + public String getMixinConfig() { + return "mixins.defaultserverlist.early.json"; + } + + @Override + public List getMixins(Set loadedCoreMods) { + if (FMLLaunchHandler.side() == Side.CLIENT) { + return Collections.singletonList("ServerListMixin"); + } + return Collections.emptyList(); + } + + @Override + public String[] getASMTransformerClass() { + return null; + } + + @Override + public String getModContainerClass() { + return null; + } + + @Override + public String getSetupClass() { + return null; + } + + @Override + public void injectData(Map data) { + if (FMLLaunchHandler.side() == Side.CLIENT) { + Config.preInit(new File((File) data.get("mcLocation"), "config")); + } + } + + @Override + public String getAccessTransformerClass() { + return null; + } +} diff --git a/src/main/java/glowredman/defaultserverlist/MixinPlugin.java b/src/main/java/glowredman/defaultserverlist/MixinPlugin.java deleted file mode 100644 index 8afb918..0000000 --- a/src/main/java/glowredman/defaultserverlist/MixinPlugin.java +++ /dev/null @@ -1,41 +0,0 @@ -package glowredman.defaultserverlist; - -import java.util.Arrays; -import java.util.List; -import java.util.Set; - -import org.spongepowered.asm.lib.tree.ClassNode; -import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; -import org.spongepowered.asm.mixin.extensibility.IMixinInfo; - -import cpw.mods.fml.common.FMLCommonHandler; - -public class MixinPlugin implements IMixinConfigPlugin { - - @Override - public void onLoad(String mixinPackage) {} - - @Override - public String getRefMapperConfig() { - return null; - } - - @Override - public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { - return FMLCommonHandler.instance().getSide().isClient(); - } - - @Override - public void acceptTargets(Set myTargets, Set otherTargets) {} - - @Override - public List getMixins() { - return Arrays.asList("ServerListMixin"); - } - - @Override - public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {} - - @Override - public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {} -} diff --git a/src/main/java/glowredman/defaultserverlist/ModContainer.java b/src/main/java/glowredman/defaultserverlist/ModContainer.java deleted file mode 100644 index b38f135..0000000 --- a/src/main/java/glowredman/defaultserverlist/ModContainer.java +++ /dev/null @@ -1,19 +0,0 @@ -package glowredman.defaultserverlist; - -import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.Mod.EventHandler; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; - -@Mod( - acceptedMinecraftVersions = "[1.7.10]", - dependencies = "required-after:spongemixins", - modid = "defaultserverlist", - name = "DefaultServerList", - version = "GRADLETOKEN_VERSION") -public class ModContainer { - - @EventHandler - public static void preInit(FMLPreInitializationEvent event) { - Config.preInit(event.getModConfigurationDirectory()); - } -} diff --git a/src/main/java/glowredman/defaultserverlist/mixins/ServerListMixin.java b/src/main/java/glowredman/defaultserverlist/mixins/early/ServerListMixin.java similarity index 92% rename from src/main/java/glowredman/defaultserverlist/mixins/ServerListMixin.java rename to src/main/java/glowredman/defaultserverlist/mixins/early/ServerListMixin.java index 133d938..7855297 100644 --- a/src/main/java/glowredman/defaultserverlist/mixins/ServerListMixin.java +++ b/src/main/java/glowredman/defaultserverlist/mixins/early/ServerListMixin.java @@ -1,4 +1,4 @@ -package glowredman.defaultserverlist.mixins; +package glowredman.defaultserverlist.mixins.early; import java.util.LinkedHashMap; import java.util.List; @@ -20,21 +20,19 @@ @Mixin(ServerList.class) public class ServerListMixin { - @SuppressWarnings("rawtypes") @Shadow @Final - private List servers; + private List servers; /** * Removes all servers from servers.dat that are already in the default list * * @author glowredman */ - @SuppressWarnings("unchecked") @Inject(at = @At("TAIL"), method = "loadServerList()V") private void removeDuplicateServers(CallbackInfo ci) { servers.removeIf(o -> { - String s1 = ((ServerData) o).serverIP.replace("http://", "").replace("https://", "").replace(":25565", ""); + String s1 = o.serverIP.replace("http://", "").replace("https://", "").replace(":25565", ""); for (ServerData s2 : Config.SERVERS) { if (s1.equals(s2.serverIP.replace("http://", "").replace("https://", "").replace(":25565", ""))) { return true; @@ -73,7 +71,7 @@ private void saveDefaultServerList(CallbackInfo ci) { @Overwrite public ServerData getServerData(int index) { if (index < servers.size()) { - return (ServerData) servers.get(index); + return servers.get(index); } return Config.SERVERS.get(index - servers.size()); } @@ -134,7 +132,6 @@ public void saveServerList() {} * @reason DefaultServerList * @author glowredman */ - @SuppressWarnings("unchecked") @Overwrite public void func_147413_a(int index, ServerData data) { if (index < servers.size()) { diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 487079c..ad45d44 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -6,11 +6,11 @@ "version": "${modVersion}", "mcversion": "${minecraftVersion}", "url": "https://github.com/glowredman/DefaultServerList", - "updateUrl": "https://data-hole.ddns.net:8081/mods/defaultserverlist/updates.json", + "updateUrl": "https://files.data-hole.de/mods/defaultserverlist/updates.json", "authorList": ["glowredman"], "credits": "", "logoFile": "", "screenshots": [], - "dependencies": ["spongemixins"] + "dependencies": [] } ] diff --git a/src/main/resources/mixins.defaultserverlist.early.json b/src/main/resources/mixins.defaultserverlist.early.json new file mode 100644 index 0000000..35004e4 --- /dev/null +++ b/src/main/resources/mixins.defaultserverlist.early.json @@ -0,0 +1,8 @@ +{ + "required": true, + "minVersion": "0.7.11", + "package": "glowredman.defaultserverlist.mixins.early", + "refmap": "mixins.defaultserverlist.refmap.json", + "target": "@env(DEFAULT)", + "compatibilityLevel": "JAVA_8" +} diff --git a/src/main/resources/mixins.defaultserverlist.json b/src/main/resources/mixins.defaultserverlist.json new file mode 100644 index 0000000..0752fb1 --- /dev/null +++ b/src/main/resources/mixins.defaultserverlist.json @@ -0,0 +1,7 @@ +{ + "required": true, + "minVersion": "0.7.11", + "refmap": "mixins.defaultserverlist.refmap.json", + "target": "@env(DEFAULT)", + "compatibilityLevel": "JAVA_8" +}