]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/launch/Tweaker.java
3993efab4959d2fc4a0a256cc515352e93223ed5
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / launch / Tweaker.java
1 package com.irtimaled.bbor.launch;
2
3 import net.minecraft.launchwrapper.ITweaker;
4 import net.minecraft.launchwrapper.LaunchClassLoader;
5 import org.spongepowered.asm.launch.MixinBootstrap;
6 import org.spongepowered.asm.mixin.MixinEnvironment;
7 import org.spongepowered.asm.mixin.Mixins;
8
9 import java.io.File;
10 import java.util.ArrayList;
11 import java.util.List;
12
13 public abstract class Tweaker implements ITweaker {
14     private List<String> args;
15
16     @Override
17     public void acceptOptions(List<String> args, File gameDir, File assetsDir, String profile) {
18         this.args = new ArrayList<>();
19         addOptions(args, gameDir, assetsDir, profile);
20     }
21
22     void addArg(String name, String value) {
23         if (value != null) {
24             args.add(name);
25             args.add(value);
26         }
27     }
28
29     protected void addOptions(List<String> args, File gameDir, File assetsDir, String profile) {
30         this.args.addAll(args);
31     }
32
33     @Override
34     public void injectIntoClassLoader(LaunchClassLoader classLoader) {
35         MixinBootstrap.init();
36         Mixins.addConfiguration("mixins.bbor.json");
37         MixinEnvironment.getDefaultEnvironment().setSide(isClient() ? MixinEnvironment.Side.CLIENT : MixinEnvironment.Side.SERVER);
38
39     }
40
41     protected abstract boolean isClient();
42
43     @Override
44     public String[] getLaunchArguments() {
45         return args.toArray(new String[0]);
46     }
47 }