feat: implemented auto service for modules
This commit is contained in:
parent
e82f1cc5e6
commit
930ccf34c7
24 changed files with 82 additions and 75 deletions
|
@ -92,9 +92,11 @@ dependencies {
|
|||
minecraft "net.minecraftforge:forge:${minecraftVersion}-${forgeVersion}"
|
||||
implementation 'ftbsc:lll:0.2.2'
|
||||
implementation 'ftbsc.lll:processor:0.1.1'
|
||||
implementation 'com.google.auto.service:auto-service-annotations:1.0.1'
|
||||
annotationProcessor 'com.squareup:javapoet:1.13.0'
|
||||
annotationProcessor 'ftbsc:lll:0.2.2'
|
||||
annotationProcessor 'ftbsc.lll:processor:0.1.1'
|
||||
annotationProcessor 'com.google.auto.service:auto-service:1.0.1'
|
||||
}
|
||||
|
||||
jar {
|
||||
|
|
|
@ -28,12 +28,6 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
|||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import ftbsc.bscv.modules.vision.*;
|
||||
import ftbsc.bscv.modules.motion.*;
|
||||
import ftbsc.bscv.modules.self.*;
|
||||
import ftbsc.bscv.modules.hud.*;
|
||||
import ftbsc.bscv.modules.defense.*;
|
||||
|
||||
@Mod("bscv")
|
||||
public class BoSCoVicino implements ICommons {
|
||||
public static String MOD_ID = "bscv";
|
||||
|
@ -52,24 +46,7 @@ public class BoSCoVicino implements ICommons {
|
|||
ForgeConfigSpec.Builder cfg = new ForgeConfigSpec.Builder();
|
||||
CommandDispatcher<CommandSource> dp = this.dispatcher;
|
||||
|
||||
this.modManager = new ModManager(cfg, dp);
|
||||
|
||||
this.modManager.registerMod(new AutoDisconnect());
|
||||
this.modManager.registerMod(new ActiveModules());
|
||||
this.modManager.registerMod(new VanillaFlight());
|
||||
this.modManager.registerMod(new FastInteract());
|
||||
this.modManager.registerMod(new InfoDisplay());
|
||||
this.modManager.registerMod(new Coordinates());
|
||||
this.modManager.registerMod(new EntityList());
|
||||
this.modManager.registerMod(new PlayerList());
|
||||
this.modManager.registerMod(new Fullbright());
|
||||
this.modManager.registerMod(new AntiHunger());
|
||||
this.modManager.registerMod(new PortalGui());
|
||||
this.modManager.registerMod(new AutoFish());
|
||||
this.modManager.registerMod(new AutoTool());
|
||||
this.modManager.registerMod(new Freecam());
|
||||
this.modManager.registerMod(new BoatFly());
|
||||
this.modManager.registerMod(new Aura());
|
||||
BoSCoVicino.modManager = new ModManager(cfg, dp);
|
||||
|
||||
BoSCoVicino.spec = cfg.build();
|
||||
|
||||
|
@ -90,7 +67,7 @@ public class BoSCoVicino implements ICommons {
|
|||
private void clientSetup(final FMLClientSetupEvent event) {
|
||||
LOGGER.info("Initializing modules");
|
||||
|
||||
for (IModule<?> m : modManager.mods) {
|
||||
for (IModule m : modManager.mods) {
|
||||
if (m.isEnabled()) m.enable();
|
||||
}
|
||||
|
||||
|
@ -127,7 +104,7 @@ public class BoSCoVicino implements ICommons {
|
|||
dispatcher.register(
|
||||
Commands.literal("toggle-all")
|
||||
.executes(ctx -> {
|
||||
for (IModule<?> mod : modManager.mods) {
|
||||
for (IModule mod : modManager.mods) {
|
||||
if (mod.isEnabled()) {
|
||||
mod.disable();
|
||||
mod.enable();
|
||||
|
|
|
@ -3,8 +3,8 @@ package ftbsc.bscv.api;
|
|||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
|
||||
public interface IModule<T extends Enum<T>> extends ICommand {
|
||||
T getGroup();
|
||||
public interface IModule extends ICommand {
|
||||
String getGroup();
|
||||
|
||||
ForgeConfigSpec.Builder getConfigBuilder();
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@ import com.mojang.brigadier.arguments.BoolArgumentType;
|
|||
|
||||
import ftbsc.bscv.BoSCoVicino;
|
||||
import ftbsc.bscv.api.IModule;
|
||||
import ftbsc.bscv.system.ModManager;
|
||||
import net.minecraft.command.CommandSource;
|
||||
import net.minecraft.command.Commands;
|
||||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
|
@ -13,16 +12,7 @@ import net.minecraftforge.common.MinecraftForge;
|
|||
|
||||
import static ftbsc.bscv.BoSCoVicino.log;
|
||||
|
||||
public abstract class AbstractModule implements IModule<AbstractModule.Group> {
|
||||
public enum Group {
|
||||
SELF,
|
||||
HUD,
|
||||
BUILD,
|
||||
DEFENSE,
|
||||
VISION,
|
||||
MOTION,
|
||||
}
|
||||
|
||||
public abstract class AbstractModule implements IModule {
|
||||
protected ForgeConfigSpec.ConfigValue<Boolean> enabled;
|
||||
|
||||
@Override
|
||||
|
@ -31,9 +21,9 @@ public abstract class AbstractModule implements IModule<AbstractModule.Group> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Group getGroup() {
|
||||
public String getGroup() {
|
||||
String[] pkg = this.getClass().getPackage().getName().split("\\.");
|
||||
return Group.valueOf(pkg[pkg.length - 1].toUpperCase());
|
||||
return pkg[pkg.length - 1].toUpperCase();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,11 +1,8 @@
|
|||
package ftbsc.bscv.modules;
|
||||
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
|
||||
import ftbsc.bscv.ICommons;
|
||||
import ftbsc.bscv.tools.Anchor;
|
||||
import ftbsc.bscv.tools.Setting;
|
||||
import net.minecraft.command.CommandSource;
|
||||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
|
||||
public abstract class HudModule extends AbstractModule {
|
||||
|
@ -16,8 +13,8 @@ public abstract class HudModule extends AbstractModule {
|
|||
public final ForgeConfigSpec.ConfigValue<Anchor> anchor;
|
||||
|
||||
@Override
|
||||
public Group getGroup() {
|
||||
return Group.HUD;
|
||||
public String getGroup() {
|
||||
return "HUD";
|
||||
}
|
||||
|
||||
protected HudModule() {
|
||||
|
|
|
@ -1,19 +1,18 @@
|
|||
package ftbsc.bscv.modules;
|
||||
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
|
||||
import net.minecraft.client.settings.KeyBinding;
|
||||
import net.minecraft.client.util.InputMappings;
|
||||
import net.minecraft.command.CommandSource;
|
||||
import net.minecraftforge.client.event.InputEvent;
|
||||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.client.registry.ClientRegistry;
|
||||
|
||||
import ftbsc.bscv.BoSCoVicino;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
import com.google.auto.service.AutoService;
|
||||
|
||||
// TODO rename
|
||||
@AutoService(ILoadable.class)
|
||||
public abstract class QuickModule extends AbstractModule {
|
||||
|
||||
public static final int UNBOUND = InputMappings.UNKNOWN.getValue();
|
||||
|
|
|
@ -9,7 +9,10 @@ import net.minecraftforge.common.ForgeConfigSpec;
|
|||
import net.minecraftforge.event.TickEvent;
|
||||
import net.minecraftforge.event.TickEvent.Phase;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
import com.google.auto.service.AutoService;
|
||||
|
||||
@AutoService(ILoadable.class)
|
||||
public class Aura extends QuickModule implements ICommons {
|
||||
|
||||
@Override
|
||||
|
|
|
@ -9,14 +9,17 @@ import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
|
|||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
|
||||
import static ftbsc.bscv.tools.Text.TextBuilder;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
import com.google.auto.service.AutoService;
|
||||
|
||||
@AutoService(ILoadable.class)
|
||||
public class ActiveModules extends HudModule implements ICommons {
|
||||
@SubscribeEvent
|
||||
public void onRenderOverlay(RenderGameOverlayEvent event) {
|
||||
if (event.getType() == ElementType.TEXT) {
|
||||
int offset = 0;
|
||||
for (IModule<?> m : BoSCoVicino.modManager.mods) {
|
||||
if (m.isEnabled() && m.getGroup() != Group.HUD) {
|
||||
for (IModule m : BoSCoVicino.modManager.mods) {
|
||||
if (m.isEnabled() && m.getGroup().equalsIgnoreCase("HUD")) {
|
||||
TextBuilder()
|
||||
.txt(String.format("%s <", m.getName()))
|
||||
.anchor(this.anchor.get())
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
package ftbsc.bscv.modules.hud;
|
||||
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
|
||||
import net.minecraft.command.CommandSource;
|
||||
import net.minecraft.util.math.vector.Vector3d;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
|
||||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
|
||||
import static ftbsc.bscv.tools.Text.TextBuilder;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
|
||||
import ftbsc.bscv.ICommons;
|
||||
import ftbsc.bscv.modules.HudModule;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
|
||||
@AutoService(ILoadable.class)
|
||||
public class Coordinates extends HudModule implements ICommons {
|
||||
@SubscribeEvent
|
||||
public void onRenderOverlay(RenderGameOverlayEvent event) {
|
||||
|
|
|
@ -21,7 +21,10 @@ import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
|||
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
|
||||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
import com.google.auto.service.AutoService;
|
||||
|
||||
@AutoService(ILoadable.class)
|
||||
public class EntityList extends HudModule implements ICommons {
|
||||
|
||||
public final ForgeConfigSpec.ConfigValue<String> search;
|
||||
|
|
|
@ -20,7 +20,10 @@ import net.minecraftforge.common.ForgeConfigSpec;
|
|||
import net.minecraftforge.event.TickEvent;
|
||||
import net.minecraftforge.event.TickEvent.Phase;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
import com.google.auto.service.AutoService;
|
||||
|
||||
@AutoService(ILoadable.class)
|
||||
public class InfoDisplay extends HudModule implements ICommons {
|
||||
|
||||
private Vector3d last_position = new Vector3d(0.0, 0.0, 0.0);
|
||||
|
|
|
@ -13,7 +13,10 @@ import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
|||
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
|
||||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
import com.google.auto.service.AutoService;
|
||||
|
||||
@AutoService(ILoadable.class)
|
||||
public class PlayerList extends HudModule implements ICommons {
|
||||
|
||||
@SubscribeEvent
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
package ftbsc.bscv.modules.motion;
|
||||
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
import com.google.auto.service.AutoService;
|
||||
import ftbsc.bscv.ICommons;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
import ftbsc.bscv.events.BoatEvent;
|
||||
import ftbsc.bscv.modules.AbstractModule;
|
||||
import ftbsc.bscv.tools.Keyboard;
|
||||
import ftbsc.bscv.tools.Setting;
|
||||
import net.minecraft.command.CommandSource;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraftforge.client.event.RenderWorldLastEvent;
|
||||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
|
@ -14,6 +14,7 @@ import net.minecraftforge.event.TickEvent;
|
|||
import net.minecraftforge.event.TickEvent.Phase;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
|
||||
@AutoService(ILoadable.class)
|
||||
public class BoatFly extends AbstractModule implements ICommons {
|
||||
|
||||
public final ForgeConfigSpec.ConfigValue<Double> speed;
|
||||
|
|
|
@ -14,7 +14,10 @@ import net.minecraftforge.common.ForgeConfigSpec;
|
|||
import net.minecraftforge.event.TickEvent;
|
||||
import net.minecraftforge.event.TickEvent.Phase;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
import com.google.auto.service.AutoService;
|
||||
|
||||
@AutoService(ILoadable.class)
|
||||
public class VanillaFlight extends QuickModule implements ICommons {
|
||||
|
||||
@Override
|
||||
|
|
|
@ -9,7 +9,10 @@ import net.minecraft.network.play.client.CPlayerPacket;
|
|||
import net.minecraft.network.play.client.CEntityActionPacket.Action;
|
||||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
import com.google.auto.service.AutoService;
|
||||
|
||||
@AutoService(ILoadable.class)
|
||||
public class AntiHunger extends AbstractModule implements ICommons {
|
||||
|
||||
public final ForgeConfigSpec.ConfigValue<Boolean> sprint;
|
||||
|
|
|
@ -12,7 +12,10 @@ import net.minecraft.network.play.server.SUpdateHealthPacket;
|
|||
import net.minecraft.util.text.StringTextComponent;
|
||||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
import com.google.auto.service.AutoService;
|
||||
|
||||
@AutoService(ILoadable.class)
|
||||
public class AutoDisconnect extends AbstractModule implements ICommons {
|
||||
|
||||
public final ForgeConfigSpec.ConfigValue<Double> threshold;
|
||||
|
|
|
@ -10,7 +10,10 @@ import net.minecraft.util.Hand;
|
|||
import net.minecraft.util.SoundEvents;
|
||||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
import com.google.auto.service.AutoService;
|
||||
|
||||
@AutoService(ILoadable.class)
|
||||
public class AutoFish extends AbstractModule implements ICommons {
|
||||
|
||||
public final ForgeConfigSpec.ConfigValue<Boolean> recast;
|
||||
|
|
|
@ -13,7 +13,10 @@ import net.minecraft.util.math.BlockRayTraceResult;
|
|||
import net.minecraftforge.client.event.InputEvent;
|
||||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
import com.google.auto.service.AutoService;
|
||||
|
||||
@AutoService(ILoadable.class)
|
||||
public class AutoTool extends AbstractModule implements ICommons {
|
||||
|
||||
public final ForgeConfigSpec.ConfigValue<Integer> limit;
|
||||
|
|
|
@ -13,7 +13,10 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
|
|||
|
||||
import ftbsc.bscv.modules.QuickModule;
|
||||
import ftbsc.bscv.ICommons;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
import com.google.auto.service.AutoService;
|
||||
|
||||
@AutoService(ILoadable.class)
|
||||
public class FastInteract extends QuickModule implements ICommons {
|
||||
@Override
|
||||
protected int getDefaultKey() {
|
||||
|
|
|
@ -17,7 +17,10 @@ import net.minecraft.world.GameType;
|
|||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
import net.minecraftforge.event.TickEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
import com.google.auto.service.AutoService;
|
||||
|
||||
@AutoService(ILoadable.class)
|
||||
public class Freecam extends QuickModule implements ICommons {
|
||||
|
||||
public final ForgeConfigSpec.ConfigValue<Boolean> log;
|
||||
|
|
|
@ -4,7 +4,10 @@ import ftbsc.bscv.ICommons;
|
|||
import ftbsc.bscv.modules.AbstractModule;
|
||||
import net.minecraftforge.event.TickEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
import com.google.auto.service.AutoService;
|
||||
|
||||
@AutoService(ILoadable.class)
|
||||
public class PortalGui extends AbstractModule implements ICommons {
|
||||
|
||||
@SubscribeEvent
|
||||
|
|
|
@ -8,7 +8,10 @@ import net.minecraftforge.event.TickEvent;
|
|||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
|
||||
import java.awt.event.KeyEvent;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
import com.google.auto.service.AutoService;
|
||||
|
||||
@AutoService(ILoadable.class)
|
||||
public class Fullbright extends QuickModule implements ICommons {
|
||||
@Override
|
||||
protected int getDefaultKey() {
|
||||
|
|
|
@ -1,38 +1,38 @@
|
|||
package ftbsc.bscv.system;
|
||||
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
import ftbsc.bscv.BoSCoVicino;
|
||||
import ftbsc.bscv.api.ILoadable;
|
||||
import ftbsc.bscv.api.IModule;
|
||||
import ftbsc.bscv.modules.AbstractModule;
|
||||
import ftbsc.bscv.modules.defense.Aura;
|
||||
import ftbsc.bscv.modules.hud.*;
|
||||
import ftbsc.bscv.modules.motion.BoatFly;
|
||||
import ftbsc.bscv.modules.motion.VanillaFlight;
|
||||
import ftbsc.bscv.modules.self.*;
|
||||
import ftbsc.bscv.modules.vision.Fullbright;
|
||||
import net.minecraft.command.CommandSource;
|
||||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Optional;
|
||||
import java.util.ServiceLoader;
|
||||
import java.util.Set;
|
||||
|
||||
public class ModManager {
|
||||
private Optional<ForgeConfigSpec.Builder> cfgBuilder;
|
||||
private Optional<CommandDispatcher<CommandSource>> dispatcher;
|
||||
|
||||
public final Set<IModule<? extends Enum<?>> > mods;
|
||||
public final Set<IModule> mods;
|
||||
public final Set<String> categories;
|
||||
|
||||
public ModManager(ForgeConfigSpec.Builder cfgBuilder, CommandDispatcher<CommandSource> dispatcher) {
|
||||
this.cfgBuilder = Optional.of(cfgBuilder);
|
||||
this.dispatcher = Optional.of(dispatcher);
|
||||
this.mods = new HashSet<>();
|
||||
}
|
||||
this.categories = new HashSet<>();
|
||||
|
||||
public void registerMod(IModule<? extends Enum<?>> mod) {
|
||||
for (ILoadable module : ServiceLoader.load(ILoadable.class)) {
|
||||
if(module instanceof IModule) {
|
||||
IModule mod = (IModule) module;
|
||||
this.mods.add(mod);
|
||||
this.categories.add(mod.getGroup());
|
||||
this.cfgBuilder.get().pop(); // TODO solved by AutoService, soon TM
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void finalize() {
|
||||
this.cfgBuilder = Optional.empty();
|
||||
|
|
|
@ -4,7 +4,6 @@ import static ftbsc.bscv.BoSCoVicino.log;
|
|||
|
||||
import java.util.Optional;
|
||||
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
import com.mojang.brigadier.arguments.ArgumentType;
|
||||
import com.mojang.brigadier.arguments.BoolArgumentType;
|
||||
import com.mojang.brigadier.arguments.DoubleArgumentType;
|
||||
|
@ -12,7 +11,6 @@ import com.mojang.brigadier.arguments.IntegerArgumentType;
|
|||
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||
|
||||
import ftbsc.bscv.api.IModule;
|
||||
import net.minecraft.command.CommandSource;
|
||||
import net.minecraft.command.Commands;
|
||||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
import net.minecraftforge.server.command.EnumArgument;
|
||||
|
@ -51,7 +49,7 @@ public abstract class Setting<T> {
|
|||
|
||||
abstract Class<T> clazz();
|
||||
|
||||
public ForgeConfigSpec.ConfigValue<T> build(IModule<?> module) {
|
||||
public ForgeConfigSpec.ConfigValue<T> build(IModule module) {
|
||||
ForgeConfigSpec.ConfigValue<T> conf = this.value(module.getConfigBuilder());
|
||||
|
||||
module.getDispatcher().register(
|
||||
|
|
Loading…
Reference in a new issue