feat: implemented basic interface structure and made module constructors with no params

This commit is contained in:
zaaarf 2023-02-28 21:16:05 +01:00
parent 3be09e9384
commit 4359e3d285
No known key found for this signature in database
GPG key ID: 82240E075E31FA4C
25 changed files with 369 additions and 194 deletions

View file

@ -1,5 +1,7 @@
package ftbsc.bscv;
import ftbsc.bscv.api.IModule;
import ftbsc.bscv.system.ModManager;
import net.minecraft.client.entity.player.ClientPlayerEntity;
import net.minecraft.client.gui.screen.IngameMenuScreen;
import net.minecraft.client.gui.widget.button.Button;
@ -25,56 +27,49 @@ import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import ftbsc.bscv.modules.Module;
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.*;
// The value here should match an entry in the META-INF/mods.toml file
@Mod("bscv")
public class BoSCoVicino implements ICommons {
public static String MOD_ID = "bscv";
// Directly reference a log4j logger.
public static final Logger LOGGER = LogManager.getLogger();
public static List<Module> mods;
public static ModManager modManager; //todo this should not be static
private final CommandDispatcher<CommandSource> dispatcher = new CommandDispatcher<>();
public static ForgeConfigSpec spec;
public BoSCoVicino() {
// Register the setup method for modloading
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientSetup);
// load and register mods
BoSCoVicino.mods = new ArrayList<Module>();
ForgeConfigSpec.Builder cfg = new ForgeConfigSpec.Builder();
CommandDispatcher<CommandSource> dp = this.dispatcher;
BoSCoVicino.mods.add(new AutoDisconnect(cfg, dp).done(cfg));
BoSCoVicino.mods.add(new ActiveModules(cfg, dp).done(cfg));
BoSCoVicino.mods.add(new VanillaFlight(cfg, dp).done(cfg));
BoSCoVicino.mods.add(new FastInteract(cfg, dp).done(cfg));
BoSCoVicino.mods.add(new InfoDisplay(cfg, dp).done(cfg));
BoSCoVicino.mods.add(new Coordinates(cfg, dp).done(cfg));
BoSCoVicino.mods.add(new EntityList(cfg, dp).done(cfg));
BoSCoVicino.mods.add(new PlayerList(cfg, dp).done(cfg));
BoSCoVicino.mods.add(new Fullbright(cfg, dp).done(cfg));
BoSCoVicino.mods.add(new AntiHunger(cfg, dp).done(cfg));
BoSCoVicino.mods.add(new PortalGui(cfg, dp).done(cfg));
BoSCoVicino.mods.add(new AutoFish(cfg, dp).done(cfg));
BoSCoVicino.mods.add(new AutoTool(cfg, dp).done(cfg));
BoSCoVicino.mods.add(new Freecam(cfg, dp).done(cfg));
BoSCoVicino.mods.add(new BoatFly(cfg, dp).done(cfg));
BoSCoVicino.mods.add(new Aura(cfg, dp).done(cfg));
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.spec = cfg.build();
@ -95,8 +90,8 @@ public class BoSCoVicino implements ICommons {
private void clientSetup(final FMLClientSetupEvent event) {
LOGGER.info("Initializing modules");
for (Module m : BoSCoVicino.mods) {
if (m.enabled.get()) m.enable();
for (IModule<?> m : modManager.mods) {
if (m.isEnabled()) m.enable();
}
// TEMPORARY! add command to regenerate suggestions
@ -132,8 +127,8 @@ public class BoSCoVicino implements ICommons {
dispatcher.register(
Commands.literal("toggle-all")
.executes(ctx -> {
for (Module mod : BoSCoVicino.mods) {
if (mod.enabled.get()) {
for (IModule<?> mod : modManager.mods) {
if (mod.isEnabled()) {
mod.disable();
mod.enable();
}

View file

@ -0,0 +1,8 @@
package ftbsc.bscv.api;
import com.mojang.brigadier.CommandDispatcher;
import net.minecraft.command.CommandSource;
public interface ICommand extends ILoadable {
CommandDispatcher<CommandSource> getDispatcher();
}

View file

@ -0,0 +1,5 @@
package ftbsc.bscv.api;
public interface ILoadable {
String getName();
}

View file

@ -0,0 +1,17 @@
package ftbsc.bscv.api;
import net.minecraftforge.common.ForgeConfigSpec;
public interface IModule<T extends Enum<T>> extends ICommand {
T getGroup();
ForgeConfigSpec.Builder getConfigBuilder();
void toggle();
void enable();
void disable();
boolean isEnabled();
}

View file

@ -3,6 +3,9 @@ package ftbsc.bscv.modules;
import com.mojang.brigadier.CommandDispatcher;
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;
@ -10,7 +13,7 @@ import net.minecraftforge.common.MinecraftForge;
import static ftbsc.bscv.BoSCoVicino.log;
public abstract class AbstractModule {
public abstract class AbstractModule implements IModule<AbstractModule.Group> {
public enum Group {
SELF,
HUD,
@ -20,20 +23,27 @@ public abstract class AbstractModule {
MOTION,
}
public final String name;
public final Group group;
protected ForgeConfigSpec.ConfigValue<Boolean> enabled;
public void initialize(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
builder.push(this.name.toLowerCase());
this.enabled = builder
.comment(String.format("Enables %s", this.name))
@Override
public ForgeConfigSpec.Builder getConfigBuilder() {
return BoSCoVicino.modManager.getCfgBuilder();
}
@Override
public CommandDispatcher<CommandSource> getDispatcher() {
return BoSCoVicino.modManager.getDispatcher();
}
public AbstractModule() {
this.getConfigBuilder().push(this.getName().toLowerCase());
this.enabled = this.getConfigBuilder()
.comment(String.format("Enables %s", this.getName()))
.define("enabled", false);
// TODO: can this be made an util or moved somewhere else?
dispatcher.register(
Commands.literal(this.name.toLowerCase())
this.getDispatcher().register(
Commands.literal(this.getName().toLowerCase())
.then(
Commands.literal("toggle")
.then(
@ -53,31 +63,13 @@ public abstract class AbstractModule {
})
)
.executes(ctx -> {
log(String.format("%s [%s]", this.name, this.enabled.get() ? "ON" : "OFF"));
log(String.format("%s [%s]", this.getName(), this.enabled.get() ? "ON" : "OFF"));
// TODO: print all mod options!
return 1;
})
);
this.register(builder, dispatcher);
builder.pop();
}
public abstract void register(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher);
protected AbstractModule(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
// TODO can this be done in a less magic way?
String[] pkg = this.getClass().getPackage().getName().split(".");
this.group = Group.valueOf(pkg[pkg.length-1].toUpperCase());
this.name = this.getClass().getName();
this.initialize(builder, dispatcher);
}
public AbstractModule done(ForgeConfigSpec.Builder builder) {
builder.pop();
return this;
this.getConfigBuilder().pop();
}
protected void onEnabled() {}
@ -93,7 +85,7 @@ public abstract class AbstractModule {
this.enabled.set(true);
// this.enabled.save();
this.onEnabled();
log(String.format("%s ON", this.name));
log(String.format("%s ON", this.getName()));
}
public final void disable() {
@ -101,6 +93,11 @@ public abstract class AbstractModule {
this.enabled.set(false);
// this.enabled.save();
this.onDisabled();
log(String.format("%s OFF", this.name));
log(String.format("%s OFF", this.getName()));
}
@Override
public boolean isEnabled() {
return enabled.get();
}
}

View file

@ -8,46 +8,46 @@ import ftbsc.bscv.tools.Setting;
import net.minecraft.command.CommandSource;
import net.minecraftforge.common.ForgeConfigSpec;
public abstract class HudModule extends Module {
public abstract class HudModule extends AbstractModule {
public final ForgeConfigSpec.ConfigValue<Integer> x;
public final ForgeConfigSpec.ConfigValue<Integer> y;
public final ForgeConfigSpec.ConfigValue<Double> scale;
public final ForgeConfigSpec.ConfigValue<Anchor> anchor;
protected HudModule(String name, ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super(name, Group.HUD, builder, dispatcher);
@Override
public Group getGroup() {
return Group.HUD;
}
protected HudModule() {
super();
this.x = Setting.Number.builder()
.name("x")
.comment("horizontal offset")
.fallback(0)
.build(this.name, builder, dispatcher);
.build(this);
this.y = Setting.Number.builder()
.name("y")
.comment("vertical offset")
.fallback(0)
.build(this.name, builder, dispatcher);
.build(this);
this.scale = Setting.Decimal.builder()
.name("scale")
.comment("scale of element")
.fallback(1.0)
.build(this.name, builder, dispatcher);
.build(this);
this.anchor = Setting.Switch.builder(Anchor.class)
.name("anchor")
.comment("origin point for coordinates")
.fallback(Anchor.TOPLEFT)
.build(this.name, builder, dispatcher);
.build(this);
}
protected boolean shouldHide() {
if (ICommons.MC.options.renderDebug) {
return true;
}
return false;
return ICommons.MC.options.renderDebug;
}
}

View file

@ -14,17 +14,17 @@ import net.minecraftforge.fml.client.registry.ClientRegistry;
import ftbsc.bscv.BoSCoVicino;
// TODO rename
public class QuickModule extends Module {
public abstract class QuickModule extends AbstractModule {
public static final int UNBOUND = InputMappings.UNKNOWN.getValue();
private class ToggleHook {
private final KeyBinding key;
private final Module mod;
private final QuickModule mod;
private boolean debounce;
// TODO all examples show isPressed() to get a debounced value
// but it seems to be missing? making my own debounce for now
protected ToggleHook(KeyBinding key, Module mod) {
protected ToggleHook(KeyBinding key, QuickModule mod) {
this.key = key;
this.mod = mod;
this.debounce = false;
@ -50,11 +50,13 @@ public class QuickModule extends Module {
}
public final KeyBinding keybind;
public QuickModule(String name, Group group, int default_key, ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super(name, group, builder, dispatcher);
this.keybind = new KeyBinding(key_name(name), default_key, key_category());
protected abstract int getDefaultKey();
public QuickModule() {
super();
this.keybind = new KeyBinding(key_name(this.getName()), this.getDefaultKey(), key_category());
ClientRegistry.registerKeyBinding(this.keybind);
// register a separate subclass on the hook, so that it's always listening

View file

@ -1,7 +1,6 @@
package ftbsc.bscv.modules.defense;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.DoubleArgumentType;
import ftbsc.bscv.ICommons;
import ftbsc.bscv.modules.QuickModule;
@ -16,18 +15,33 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
public class Aura extends QuickModule implements ICommons {
@Override
public String getName() {
return "Aura";
}
@Override
public Group getGroup() {
return Group.DEFENSE;
}
@Override
protected int getDefaultKey() {
return UNBOUND;
}
public final ForgeConfigSpec.ConfigValue<Double> reach;
public final ForgeConfigSpec.ConfigValue<Double> strenght;
public Aura(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super("Aura", Group.DEFENSE, UNBOUND, builder, dispatcher);
public Aura() {
super();
this.reach = Setting.Decimal.builder()
.min(0.)
.fallback(5.)
.name("reach")
.comment("aura attack reach")
.build(this.name, builder, dispatcher);
.build(this);
this.strenght = Setting.Decimal.builder()
.min(0.)
@ -35,7 +49,7 @@ public class Aura extends QuickModule implements ICommons {
.name("strenght")
.comment("minimum strenght required for attack")
.fallback(1.)
.build(this.name, builder, dispatcher);
.build(this);
}
@SubscribeEvent

View file

@ -1,33 +1,30 @@
package ftbsc.bscv.modules.hud;
import static ftbsc.bscv.tools.Text.TextBuilder;
import com.mojang.brigadier.CommandDispatcher;
import ftbsc.bscv.BoSCoVicino;
import ftbsc.bscv.ICommons;
import net.minecraft.command.CommandSource;
import ftbsc.bscv.api.IModule;
import ftbsc.bscv.modules.HudModule;
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.modules.HudModule;
import ftbsc.bscv.modules.Module;
import static ftbsc.bscv.tools.Text.TextBuilder;
public class ActiveModules extends HudModule implements ICommons {
public ActiveModules(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super("ActiveModules", builder, dispatcher);
@Override
public String getName() {
return "ActiveModules";
}
@SubscribeEvent
public void onRenderOverlay(RenderGameOverlayEvent event) {
if (event.getType() == ElementType.TEXT) {
int offset = 0;
for (Module m : BoSCoVicino.mods) {
if (m.enabled.get() && m.group != Group.HUD) {
for (IModule<?> m : BoSCoVicino.modManager.mods) {
if (m.isEnabled() && m.getGroup() != Group.HUD) {
TextBuilder()
.txt(String.format("%s <", m.name))
.txt(String.format("%s <", m.getName()))
.anchor(this.anchor.get())
.x(this.x.get())
.y(this.y.get() + offset)

View file

@ -14,9 +14,10 @@ import ftbsc.bscv.ICommons;
import ftbsc.bscv.modules.HudModule;
public class Coordinates extends HudModule implements ICommons {
public Coordinates(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super("Coordinates", builder, dispatcher);
@Override
public String getName() {
return "Coordinates";
}
@SubscribeEvent

View file

@ -24,16 +24,21 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
public class EntityList extends HudModule implements ICommons {
@Override
public String getName() {
return "EntityList";
}
public final ForgeConfigSpec.ConfigValue<String> search;
public EntityList(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super("EntityList", builder, dispatcher);
public EntityList() {
super();
this.search = Setting.Str.builder()
.name("search")
.comment("highlight names containing this text")
.fallback("")
.build(this.name, builder, dispatcher);
.build(this);
}
@SubscribeEvent

View file

@ -23,6 +23,10 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
public class InfoDisplay extends HudModule implements ICommons {
@Override
public String getName() {
return "InfoDisplay";
}
private Vector3d last_position = new Vector3d(0.0, 0.0, 0.0);
private double instant_speed = 0.0;
@ -45,32 +49,32 @@ public class InfoDisplay extends HudModule implements ICommons {
// public final ForgeConfigSpec.ConfigValue<Boolean> client_chunk_size;
public final ForgeConfigSpec.ConfigValue<Boolean> hide_effects;
public InfoDisplay(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super("InfoDisplay", builder, dispatcher);
public InfoDisplay() {
super();
this.logo = Setting.Bool.builder()
.name("logo")
.comment("show logo at top of list")
.fallback(true)
.build(this.name, builder, dispatcher);
.build(this);
this.speed = Setting.Bool.builder()
.name("speed")
.comment("show speed meter")
.fallback(true)
.build(this.name, builder, dispatcher);
.build(this);
this.time = Setting.Bool.builder()
.name("time")
.comment("show world time")
.fallback(true)
.build(this.name, builder, dispatcher);
.build(this);
this.hide_effects = Setting.Bool.builder()
.name("hide-effects")
.comment("hide effect icons on top right corner")
.fallback(false)
.build(this.name, builder, dispatcher);
.build(this);
}
@SubscribeEvent

View file

@ -15,9 +15,9 @@ import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.eventbus.api.SubscribeEvent;
public class PlayerList extends HudModule implements ICommons {
public PlayerList(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super("PlayerList", builder, dispatcher);
@Override
public String getName() {
return "PlayerList";
}
@SubscribeEvent

View file

@ -1,12 +1,9 @@
package ftbsc.bscv.modules.motion;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.BoolArgumentType;
import com.mojang.brigadier.arguments.DoubleArgumentType;
import ftbsc.bscv.ICommons;
import ftbsc.bscv.events.BoatEvent;
import ftbsc.bscv.modules.Module;
import ftbsc.bscv.modules.AbstractModule;
import ftbsc.bscv.tools.Keyboard;
import ftbsc.bscv.tools.Setting;
import net.minecraft.command.CommandSource;
@ -17,7 +14,17 @@ import net.minecraftforge.event.TickEvent;
import net.minecraftforge.event.TickEvent.Phase;
import net.minecraftforge.eventbus.api.SubscribeEvent;
public class BoatFly extends Module implements ICommons {
public class BoatFly extends AbstractModule implements ICommons {
@Override
public String getName() {
return "BoatFly";
}
@Override
public Group getGroup() {
return Group.MOTION;
}
public final ForgeConfigSpec.ConfigValue<Double> speed;
public final ForgeConfigSpec.ConfigValue<Double> rise;
@ -26,45 +33,45 @@ public class BoatFly extends Module implements ICommons {
public final ForgeConfigSpec.ConfigValue<Boolean> sprint;
public final ForgeConfigSpec.ConfigValue<Boolean> drift;
public BoatFly(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super("BoatFly", Group.MOTION, builder, dispatcher);
public BoatFly() {
super();
this.speed = Setting.Decimal.builder()
.fallback(1.)
.name("speed")
.comment("magnitude of boat movement")
.build(this.name, builder, dispatcher);
.build(this);
this.rise = Setting.Decimal.builder()
.min(0.)
.fallback(0.5)
.name("rise")
.comment("vertical speed")
.build(this.name, builder, dispatcher);
.build(this);
this.gravity = Setting.Bool.builder()
.fallback(true)
.name("gravity")
.comment("toggle boat gravity")
.build(this.name, builder, dispatcher);
.build(this);
this.rotation = Setting.Bool.builder()
.fallback(true)
.name("rotation")
.comment("rotate boat with player")
.build(this.name, builder, dispatcher);
.build(this);
this.sprint = Setting.Bool.builder()
.fallback(true)
.name("sprint")
.comment("halve boat speed while not sprinting")
.build(this.name, builder, dispatcher);
.build(this);
this.drift = Setting.Bool.builder()
.fallback(false)
.name("drift")
.comment("allow boat drifting")
.build(this.name, builder, dispatcher);
.build(this);
}
@SubscribeEvent

View file

@ -16,6 +16,20 @@ import net.minecraftforge.event.TickEvent.Phase;
import net.minecraftforge.eventbus.api.SubscribeEvent;
public class VanillaFlight extends QuickModule implements ICommons {
@Override
public String getName() {
return "VanillaFlight";
}
@Override
public Group getGroup() {
return Group.MOTION;
}
@Override
protected int getDefaultKey() {
return UNBOUND;
}
public final ForgeConfigSpec.ConfigValue<Boolean> force;
public final ForgeConfigSpec.ConfigValue<Double> speed;
@ -25,34 +39,34 @@ public class VanillaFlight extends QuickModule implements ICommons {
private int tick = 0;
public VanillaFlight(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super("VanillaFlight", Group.MOTION, UNBOUND, builder, dispatcher);
public VanillaFlight() {
super();
this.force = Setting.Bool.builder()
.name("force")
.comment("force enable flight on user")
.fallback(false)
.build(this.name, builder, dispatcher);
.build(this);
this.speed = Setting.Decimal.builder()
.min(0.)
.fallback(0.05)
.name("speed")
.comment("flight speed to set")
.build(this.name, builder, dispatcher);
.build(this);
this.antikick = Setting.Bool.builder()
.fallback(false)
.name("antikick")
.comment("prevent vanilla flight kick by descending")
.build(this.name, builder, dispatcher);
.build(this);
this.antikick_magnitude = Setting.Decimal.builder()
.min(0.)
.fallback(1.)
.name("magnitude")
.comment("magnitude of antikick push")
.build(this.name, builder, dispatcher);
.build(this);
this.antikick_cycle = Setting.Number.builder()
.min(0)
@ -60,7 +74,7 @@ public class VanillaFlight extends QuickModule implements ICommons {
.fallback(0)
.name("cycle")
.comment("how often to run antikick routine")
.build(this.name, builder, dispatcher);
.build(this);
}
private boolean couldFlyBefore = false;

View file

@ -1,37 +1,43 @@
package ftbsc.bscv.modules.self;
import com.mojang.brigadier.CommandDispatcher;
import ftbsc.bscv.ICommons;
import ftbsc.bscv.events.PacketEvent;
import ftbsc.bscv.modules.Module;
import ftbsc.bscv.modules.AbstractModule;
import ftbsc.bscv.tools.Setting;
import net.minecraft.command.CommandSource;
import net.minecraft.network.play.client.CEntityActionPacket;
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;
public class AntiHunger extends Module implements ICommons {
public class AntiHunger extends AbstractModule implements ICommons {
@Override
public String getName() {
return "AntiHunger";
}
@Override
public Group getGroup() {
return Group.SELF;
}
public final ForgeConfigSpec.ConfigValue<Boolean> sprint;
public final ForgeConfigSpec.ConfigValue<Boolean> hover;
public AntiHunger(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super("AntiHunger", Group.SELF, builder, dispatcher);
public AntiHunger() {
super();
this.sprint = Setting.Bool.builder()
.fallback(true)
.name("sprint")
.comment("mask sprint toggle packets")
.build(this.name, builder, dispatcher);
.build(this);
this.hover = Setting.Bool.builder()
.name("hover")
.comment("mark as not on-ground while walking")
.fallback(true)
.build(this.name, builder, dispatcher);
.build(this);
}
@SubscribeEvent

View file

@ -4,7 +4,7 @@ import com.mojang.brigadier.CommandDispatcher;
import ftbsc.bscv.ICommons;
import ftbsc.bscv.events.PacketEvent;
import ftbsc.bscv.modules.Module;
import ftbsc.bscv.modules.AbstractModule;
import ftbsc.bscv.tools.Setting;
import net.minecraft.command.CommandSource;
import net.minecraft.network.play.server.SDisconnectPacket;
@ -13,18 +13,28 @@ import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.eventbus.api.SubscribeEvent;
public class AutoDisconnect extends Module implements ICommons {
public class AutoDisconnect extends AbstractModule implements ICommons {
@Override
public String getName() {
return "AutoDisconnect";
}
@Override
public Group getGroup() {
return Group.SELF;
}
public final ForgeConfigSpec.ConfigValue<Double> threshold;
public AutoDisconnect(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super("AutoDisconnect", Group.SELF, builder, dispatcher);
public AutoDisconnect() {
super();
this.threshold = Setting.Decimal.builder()
.fallback(10.)
.name("threshold")
.comment("hp below which connection should be closed")
.build(this.name, builder, dispatcher);
.build(this);
}
@SubscribeEvent

View file

@ -4,7 +4,7 @@ import com.mojang.brigadier.CommandDispatcher;
import ftbsc.bscv.ICommons;
import ftbsc.bscv.events.PacketEvent;
import ftbsc.bscv.modules.Module;
import ftbsc.bscv.modules.AbstractModule;
import ftbsc.bscv.tools.Setting;
import net.minecraft.client.Minecraft;
import net.minecraft.command.CommandSource;
@ -14,26 +14,36 @@ import net.minecraft.util.SoundEvents;
import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.eventbus.api.SubscribeEvent;
public class AutoFish extends Module implements ICommons {
public class AutoFish extends AbstractModule implements ICommons {
@Override
public String getName() {
return "AutoFish";
}
@Override
public Group getGroup() {
return Group.SELF;
}
public final ForgeConfigSpec.ConfigValue<Boolean> recast;
public final ForgeConfigSpec.ConfigValue<Integer> delay;
// public final ForgeConfigSpec.ConfigValue<Long> reaction;
public AutoFish(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super("AutoFish", Group.SELF, builder, dispatcher);
public AutoFish() {
super();
this.recast = Setting.Bool.builder()
.name("recast")
.comment("automatically recast hook after fishing")
.fallback(false)
.build(this.name, builder, dispatcher);
.build(this);
this.delay = Setting.Number.builder()
.fallback(2500)
.name("delay")
.comment("how long in ms to wait before recasting hook")
.build(this.name, builder, dispatcher);
.build(this);
}
@SubscribeEvent

View file

@ -2,14 +2,11 @@ package ftbsc.bscv.modules.self;
import java.util.List;
import com.mojang.brigadier.CommandDispatcher;
import ftbsc.bscv.ICommons;
import ftbsc.bscv.modules.Module;
import ftbsc.bscv.modules.AbstractModule;
import ftbsc.bscv.tools.Inventory;
import ftbsc.bscv.tools.Setting;
import net.minecraft.block.BlockState;
import net.minecraft.command.CommandSource;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockRayTraceResult;
@ -17,18 +14,28 @@ import net.minecraftforge.client.event.InputEvent;
import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.eventbus.api.SubscribeEvent;
public class AutoTool extends Module implements ICommons {
public class AutoTool extends AbstractModule implements ICommons {
@Override
public String getName() {
return "AutoTool";
}
@Override
public AbstractModule.Group getGroup() {
return AbstractModule.Group.SELF;
}
public final ForgeConfigSpec.ConfigValue<Integer> limit;
public AutoTool(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super("AutoTool", Group.SELF, builder, dispatcher);
public AutoTool() {
super();
this.limit = Setting.Number.builder()
.name("limit")
.comment("durability limit for tools, set to 0 to destroy them")
.fallback(1)
.build(this.name, builder, dispatcher);
.build(this);
}
private boolean itemIsTooDamaged(ItemStack item) {

View file

@ -15,12 +15,22 @@ import ftbsc.bscv.modules.QuickModule;
import ftbsc.bscv.ICommons;
public class FastInteract extends QuickModule implements ICommons {
@Override
public String getName() {
return "FastInteract";
}
@Override
public Group getGroup() {
return Group.SELF;
}
@Override
protected int getDefaultKey() {
return UNBOUND;
}
Field delayField;
public FastInteract(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super("FastInteract", Group.SELF, UNBOUND, builder, dispatcher);
}
@Override
protected void onEnabled() {

View file

@ -29,26 +29,41 @@ public class Freecam extends QuickModule implements ICommons {
private GameType prev_gamemode = GameType.SURVIVAL;
private MockPlayer mock_player;
public Freecam(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super("Freecam", Group.SELF, UNBOUND, builder, dispatcher);
@Override
public String getName() {
return "Freecam";
}
@Override
public Group getGroup() {
return Group.SELF;
}
@Override
protected int getDefaultKey() {
return UNBOUND;
}
public Freecam() {
super();
this.log = Setting.Bool.builder()
.name("log")
.comment("log canceled packets")
.fallback(false)
.build(this.name, builder, dispatcher);
.build(this);
this.speed = Setting.Decimal.builder()
.name("speed")
.comment("flight speed in freecam")
.fallback(0.05)
.build(this.name, builder, dispatcher);
.build(this);
this.drift = Setting.Bool.builder()
.name("drift")
.comment("allow inertia drift in freecam")
.fallback(true)
.build(this.name, builder, dispatcher);
.build(this);
}
@SubscribeEvent

View file

@ -1,18 +1,20 @@
package ftbsc.bscv.modules.self;
import com.mojang.brigadier.CommandDispatcher;
import ftbsc.bscv.ICommons;
import ftbsc.bscv.modules.Module;
import net.minecraft.command.CommandSource;
import net.minecraftforge.common.ForgeConfigSpec;
import ftbsc.bscv.modules.AbstractModule;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
public class PortalGui extends Module implements ICommons {
public class PortalGui extends AbstractModule implements ICommons {
public PortalGui(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super("PortalGui", Group.SELF, builder, dispatcher);
@Override
public String getName() {
return "PortalGui";
}
@Override
public Group getGroup() {
return Group.SELF;
}
@SubscribeEvent

View file

@ -1,23 +1,29 @@
package ftbsc.bscv.modules.vision;
import java.awt.event.KeyEvent;
import com.mojang.brigadier.CommandDispatcher;
import net.minecraft.command.CommandSource;
import ftbsc.bscv.ICommons;
import ftbsc.bscv.modules.QuickModule;
import net.minecraft.potion.Effect;
import net.minecraft.potion.EffectInstance;
import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import ftbsc.bscv.modules.QuickModule;
import ftbsc.bscv.ICommons;
import java.awt.event.KeyEvent;
public class Fullbright extends QuickModule implements ICommons {
public Fullbright(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
super("Fullbright", Group.VISION, KeyEvent.VK_V, builder, dispatcher);
@Override
public String getName() {
return "Fullbright";
}
@Override
public Group getGroup() {
return Group.VISION;
}
@Override
protected int getDefaultKey() {
return KeyEvent.VK_V;
}
@SubscribeEvent

View file

@ -0,0 +1,42 @@
package ftbsc.bscv.system;
import com.mojang.brigadier.CommandDispatcher;
import ftbsc.bscv.BoSCoVicino;
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.Set;
public class ModManager {
private final ForgeConfigSpec.Builder cfgBuilder;
private final CommandDispatcher<CommandSource> dispatcher;
public final Set<IModule<? extends Enum<?>> > mods;
public ModManager(ForgeConfigSpec.Builder cfgBuilder, CommandDispatcher<CommandSource> dispatcher) {
this.cfgBuilder = cfgBuilder;
this.dispatcher = dispatcher;
this.mods = new HashSet<>();
}
public void registerMod(IModule<? extends Enum<?>> mod) {
this.mods.add(mod);
}
public ForgeConfigSpec.Builder getCfgBuilder() {
return cfgBuilder;
}
public CommandDispatcher<CommandSource> getDispatcher() {
return dispatcher;
}
}

View file

@ -11,6 +11,7 @@ import com.mojang.brigadier.arguments.DoubleArgumentType;
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;
@ -50,11 +51,11 @@ public abstract class Setting<T> {
abstract Class<T> clazz();
public ForgeConfigSpec.ConfigValue<T> build(String scope, ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
ForgeConfigSpec.ConfigValue<T> conf = this.value(builder);
public ForgeConfigSpec.ConfigValue<T> build(IModule<?> module) {
ForgeConfigSpec.ConfigValue<T> conf = this.value(module.getConfigBuilder());
dispatcher.register(
Commands.literal(scope.toLowerCase())
module.getDispatcher().register(
Commands.literal(module.getName().toLowerCase())
.then(
Commands.literal(this.name.get())
.then(