package gq.malwarefight.nosession.mixin; import net.minecraft.launchwrapper.ITweaker; import net.minecraft.launchwrapper.Launch; import net.minecraft.launchwrapper.LaunchClassLoader; import net.minecraft.launchwrapper.LogWrapper; import org.apache.logging.log4j.Level; import org.spongepowered.asm.launch.MixinBootstrap; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @SuppressWarnings("unused") // is used, but not mentioned directly public class L2Tweaker implements ITweaker { public final ArrayList allTweakers = new ArrayList<>(); @Override @SuppressWarnings("unchecked") public void acceptOptions(List args, File gameDir, File assetsDir, String profile) { ArrayList argsCopy = new ArrayList<>(args); for (int i = 0; i < argsCopy.size(); i++) { if (argsCopy.get(i).equals("--accessToken")) { argsCopy.set(i + 1, ""); } } boolean any = false; ArrayList tweakers = (ArrayList) Launch.blackboard.get("Tweaks"); // in order to prevent other mods from seeing the true list of args with the token // we will just call all the other tweakers from here for (final ITweaker tweaker : tweakers) { if (tweaker == this) continue; LogWrapper.log(Level.INFO, "Calling tweak class %s", tweaker.getClass().getName()); tweaker.acceptOptions(argsCopy, gameDir, assetsDir, profile); tweaker.injectIntoClassLoader(Launch.classLoader); allTweakers.add(tweaker); tweakers.set(tweakers.indexOf(tweaker), new BlankTweaker()); any = true; } if (any) { ((ArrayList) Launch.blackboard.get("TweakClasses")).add(0, Utils.getUniqueClassName() ); } } @Override public void injectIntoClassLoader(LaunchClassLoader classLoader) {} @Override public String getLaunchTarget() { return MixinBootstrap.getPlatform().getLaunchTarget(); } @Override public String[] getLaunchArguments() { ArrayList argsFromOurTweakers = new ArrayList<>(); for (ITweaker i: allTweakers) { argsFromOurTweakers.addAll(Arrays.asList(i.getLaunchArguments())); } return argsFromOurTweakers.toArray(new String[0]); } }