/* * This file is part of Baritone. * * Baritone 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 3 of the License, or * (at your option) any later version. * * Baritone 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 Baritone. If not, see . */ package baritone.launch; import net.minecraft.launchwrapper.ITweaker; import net.minecraft.launchwrapper.LaunchClassLoader; import org.spongepowered.asm.launch.MixinBootstrap; import org.spongepowered.asm.mixin.MixinEnvironment; import org.spongepowered.asm.mixin.Mixins; import org.spongepowered.tools.obfuscation.mcp.ObfuscationServiceMCP; import java.io.File; import java.util.ArrayList; import java.util.List; /** * @author Brady * @since 7/31/2018 9:59 PM */ public class BaritoneTweaker implements ITweaker { List args; @Override public void acceptOptions(List args, File gameDir, File assetsDir, String profile) { this.args = new ArrayList<>(args); if (gameDir != null) { addArg("gameDir", gameDir.getAbsolutePath()); } if (assetsDir != null) { addArg("assetsDir", assetsDir.getAbsolutePath()); } if (profile != null) { addArg("version", profile); } } @Override public void injectIntoClassLoader(LaunchClassLoader classLoader) { MixinBootstrap.init(); MixinEnvironment.getDefaultEnvironment().setSide(MixinEnvironment.Side.CLIENT); MixinEnvironment.getDefaultEnvironment().setObfuscationContext(ObfuscationServiceMCP.NOTCH); Mixins.addConfiguration("mixins.baritone.json"); } @Override public final String getLaunchTarget() { return "net.minecraft.client.main.Main"; } @Override public final String[] getLaunchArguments() { return this.args.toArray(new String[0]); } private void addArg(String label, String value) { if (!args.contains("--" + label) && value != null) { this.args.add("--" + label); this.args.add(value); } } }