MAJOR REFACTOR (i probably broke something really badly but idfc)

This commit is contained in:
Jess H 2024-06-03 22:53:39 +01:00
parent 024b1d829a
commit f9913ceb7c
Signed by: UnixSystemV
GPG key ID: 9B21C50B68D67F19
52 changed files with 497 additions and 475 deletions

View file

@ -6,21 +6,17 @@ import com.baseband.client.event.FMLEventHandler;
import com.baseband.client.event.remote.RemoteEvent;
import com.baseband.client.event.remote.RemoteEventManager;
import com.baseband.client.feature.Feature;
import com.baseband.client.feature.client.Client;
import com.baseband.client.feature.render.HUD;
import com.baseband.client.feature.FeatureManager;
import com.baseband.client.registry.ConfigHandle;
import com.baseband.client.registry.PlayerDB;
import com.baseband.client.registry.Updater;
import com.baseband.client.util.interact.ChatUtil;
import com.baseband.client.util.misc.GlobalUtil;
import com.baseband.client.util.type.FeatureAction;
import com.baseband.client.util.type.KeyBind;
import com.baseband.client.util.interact.IngameLogger;
import com.baseband.client.util.misc.ImplUtil;
import de.tudbut.parsing.TCN;
import de.tudbut.tools.Lock;
import net.minecraft.client.Minecraft;
import net.minecraftforge.common.MinecraftForge;
import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.Arrays;
@ -29,87 +25,21 @@ public class BaseBand {
public static BaseBand INSTANCE; { INSTANCE = this; }
private static final ArrayList<Updater> updaters = new ArrayList<>();
private static final ArrayList<KeyBind> keyBinds = new ArrayList<>();
public static String buildString = "Broadway";
public static final EventManager eventManager = new EventManager();
public static final EventManager eventManager = new EventManager(ImplUtil.LOGGER::error);
public static final RemoteEventManager remoteEventManager = new RemoteEventManager();
public static final FMLEventHandler fmlEventHandlerInstance = new FMLEventHandler();
public static boolean enabled = true;
private static boolean finishedDisabling = false;
public static boolean finishedDisabling = false;
public static Minecraft mc;
public static Feature[] features = new Feature[0];
public void cloneConfigFrom(TCN fullDB) {
boolean[] wasEnabled = new boolean[features.length];
for (int i = 0; i < features.length; i++) {
Feature feature = features[i];
wasEnabled[i] = feature.enabled;
for (ConfigHandle handle : feature.ownedHandles.values()) {
handle.cloneFrom(fullDB.getSub(handle.getName()));
}
}
for (Updater updater : updaters) {
updater.populate();
}
for (int i = 0; i < features.length; i++) {
if(features[i].enabled != wasEnabled[i]) {
features[i].enabled = wasEnabled[i];
features[i].toggle();
}
}
PlayerDB.Data.cloneFrom(fullDB.getSub("PlayerData"));
}
public static Updater registerUpdater(Updater updater) {
updaters.add(updater);
updater.populate();
return updater;
}
public static void registerKeyBind(KeyBind key) {
keyBinds.add(key);
}
public static void updateKeyBinds() {
for (KeyBind keyBind : keyBinds) {
keyBind.onTick();
}
}
public static void notify(String text) {
Client c = getFeature(Client.class);
if(isFeatureEnabled(HUD.class) && c.notificationDest != Client.NotificationDest.Chat) {
HUD.notifs.add(new HUD.Notification(text));
if(c.notificationDest == Client.NotificationDest.Both)
ChatUtil.print(text);
else
GlobalUtil.LOGGER.info(text);
} else
ChatUtil.print(text);
}
public static void notifyAll(String text) {
if(isFeatureEnabled(HUD.class)) {
HUD.notifs.add(new HUD.Notification(text));
}
ChatUtil.print(text);
}
public static <T extends Event> T publish(T event) {
if(event instanceof RemoteEvent)
remoteEventManager.publish((RemoteEvent) event);
else
eventManager.publish(event);
return event;
}
public void onInit() {
String[] banned = {"0836f9ee-4c5d-45e4-b39c-954880199acb", "18f87992-6459-43b8-8d26-6a4c74bee7ec", "f84e53c5-9143-4934-860c-ea44c9ad0e9f"};
if(Arrays.stream(banned).anyMatch(string -> string.equals(Minecraft.getMinecraft().getSession().getProfile().getId().toString()))) {
GlobalUtil.SHUTDOWN.run();
ImplUtil.SHUTDOWN.run();
}
MinecraftForge.EVENT_BUS.register(fmlEventHandlerInstance);
@ -118,20 +48,6 @@ public class BaseBand {
mc.gameSettings.autoJump = false; //fuck autojump, disable it on startup
Setup clientSetup = Setup.get();
ArrayList<Feature> preFeatures = new ArrayList<>(Arrays.asList(clientSetup.Features));
for (int i = 0; i < preFeatures.size(); i++) {
Feature value = preFeatures.get(i);
if(!value.canExist()) {
preFeatures.remove(i--);
}
}
features = preFeatures.toArray(new Feature[0]);
for (Feature feature : features) {
feature.register(this, mc);
}
for (Updater updater : updaters) {
updater.populate();
}
@ -146,61 +62,53 @@ public class BaseBand {
lock.waitHere();
}
for (Feature feature : preFeatures) {
for (Feature feature : FeatureManager.get().filteredFeatures) {
feature.setEnabledSilent(false);
}
finishedDisabling = true;
ChatUtil.print("Unloaded.");
GlobalUtil.LOGGER.info("Unloaded.");
IngameLogger.chatPrint("Unloaded.");
ImplUtil.LOGGER.info("Unloaded.");
}, "ASync Config Updater").start();
GlobalUtil.LOGGER.info("Instantiated.");
ImplUtil.LOGGER.info("Instantiated.");
}
@SuppressWarnings("DataFlowIssue")
@Nonnull
public static <T extends Feature> T getFeature(Class<? extends T> clazz) {
if(finishedDisabling) return null;
for (Feature feature : features) {
if (feature.getClass() == clazz)
return (T) feature;
public void cloneConfigFrom(TCN fullDB) {
boolean[] wasEnabled = new boolean[FeatureManager.features.length];
for (int i = 0; i < FeatureManager.features.length; i++) {
Feature feature = FeatureManager.features[i];
wasEnabled[i] = feature.enabled;
for (ConfigHandle handle : feature.ownedHandles.values()) {
handle.cloneFrom(fullDB.getSub(handle.getName()));
}
return null;
}
for (Updater updater : updaters) {
updater.populate();
}
for (int i = 0; i < FeatureManager.features.length; i++) {
if(FeatureManager.features[i].enabled != wasEnabled[i]) {
FeatureManager.features[i].enabled = wasEnabled[i];
FeatureManager.features[i].toggle();
}
}
PlayerDB.Data.cloneFrom(fullDB.getSub("PlayerData"));
}
public static boolean isFeaturePresent(Class<? extends Feature> clazz) {
Feature f = getFeature(clazz);
//noinspection ConstantValue
return f != null;
public static Updater registerUpdater(Updater updater) {
updaters.add(updater);
updater.populate();
return updater;
}
public static boolean isFeatureEnabled(Class<? extends Feature> clazz) {
Feature f = getFeature(clazz);
//noinspection ConstantValue
if(f == null)
return false;
return f.enabled;
}
public static <T extends Feature> boolean ifFeaturePresent(Class<? extends T> clazz, FeatureAction<T> action) {
T f = getFeature(clazz);
//noinspection ConstantValue
if(f == null)
return false;
action.run(f);
return true;
}
public static <T extends Feature> boolean ifFeatureEnabled(Class<? extends T> clazz, FeatureAction<T> action) {
T f = getFeature(clazz);
//noinspection ConstantValue
if(f == null || !f.enabled)
return false;
action.run(f);
return true;
public static <T extends Event> T publish(T event) {
if(event instanceof RemoteEvent)
remoteEventManager.publish((RemoteEvent) event);
else
eventManager.publish(event);
return event;
}
}

View file

@ -1,84 +0,0 @@
package com.baseband.client;
import com.baseband.client.feature.Feature;
import com.baseband.client.feature.chat.*;
import com.baseband.client.feature.client.*;
import com.baseband.client.feature.combat.AutoTotem;
import com.baseband.client.feature.command.*;
import com.baseband.client.feature.movement.*;
import com.baseband.client.feature.render.*;
import com.baseband.client.feature.world.*;
/**
* @author TudbuT
*
* Client setup: Included features, etc.
*/
public class Setup {
public final String Name = "BaseBand";
public final String RegistryFilename = "baseband.db";
public final int Port = 7258;
public final Feature[] Features = new Feature[] {
// REQUIRED
new Client(),
// OPTIONAL
new AltControl(),
new AutoEat(),
//new AutoKill(),
//AutoKill.INSTANCE.autoHit,
//AutoKill.INSTANCE.autoCrystal,
new AutoTotem(),
new AutoReconnect(),
new AutoRespawn(),
new AutoSignText(),
new Baritone(),
new Bind(),
new Bright(),
new ChatAppend(),
new ChatCrypt(),
new ChatExtras(),
new ChatFilter(),
new ClickGUI(),
new Connect(),
new Disconnect(),
new ElytraFly(),
new ElytraBot(),
new FastBreak(),
new Freecam(),
new Help(),
new HUD(),
new HUD.ShowTPS(),
new ISeeYou(),
new MidClick(),
new Nametags(),
new NoSlowDown(),
new Ping(),
new RenderFun(),
new Say(),
new SeedOverlay(),
new Set(),
new Select(),
new Speed(),
new Test(),
new Timer(),
new TPAccept(),
new Trigger(),
new Trust(),
new Velocity(),
};
/// SINGLETON LOGIC ///
private static Setup INSTANCE;
public static Setup get() {
if(INSTANCE == null)
INSTANCE = new Setup();
return INSTANCE;
}
private Setup() {}
}

View file

@ -3,6 +3,7 @@ package com.baseband.client.event;
import java.lang.reflect.Method;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Consumer;
//My god it's perfect
public class EventManager {
@ -10,10 +11,18 @@ public class EventManager {
private final List<SubscriberMethod> subscriberMethods;
private static Consumer<Throwable> crashHandler = t -> {throw new RuntimeException(t);};
public EventManager() {
subscriberMethods = new CopyOnWriteArrayList<>();
}
public EventManager(Consumer<Throwable> crashHandler) {
this.crashHandler = crashHandler;
subscriberMethods = new CopyOnWriteArrayList<>();
}
public void subscribe(Object subscriber) {
Class<?> subscriberClass = subscriber.getClass();
Method[] methods = subscriberClass.getDeclaredMethods();
@ -69,7 +78,7 @@ public class EventManager {
try {
method.invoke(subscriber, event);
} catch (Exception e) {
e.printStackTrace();
crashHandler.accept(e);
}
}
}

View file

@ -1,12 +1,13 @@
package com.baseband.client.event;
import com.baseband.client.BaseBand;
import com.baseband.client.Setup;
import com.baseband.client.feature.FeatureManager;
import com.baseband.client.event.events.PlayerDestroyEvent;
import com.baseband.client.feature.Feature;
import com.baseband.client.feature.client.Client;
import com.baseband.client.util.interact.ChatUtil;
import com.baseband.client.util.misc.GlobalUtil;
import com.baseband.client.util.interact.IngameLogger;
import com.baseband.client.util.misc.ImplUtil;
import com.baseband.client.util.type.KeyManager;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraftforge.client.event.ClientChatEvent;
import net.minecraftforge.client.event.RenderWorldLastEvent;
@ -15,20 +16,20 @@ import net.minecraftforge.fml.common.gameevent.TickEvent;
import java.util.Arrays;
import static com.baseband.client.BaseBand.features;
import static com.baseband.client.feature.FeatureManager.features;
import static com.baseband.client.BaseBand.mc;
//forge mod loader more like fuck my life this shit BLOWS
public class FMLEventHandler {
static Setup Setup = com.baseband.client.Setup.get();
static FeatureManager FeatureManager = FeatureManager.get();
@SubscribeEvent
public void chat(ClientChatEvent event) {
String prefix = Client.prefix;
if(event.getMessage().startsWith(prefix)) {
event.setCanceled(true);
ChatUtil.history(event.getMessage());
IngameLogger.history(event.getMessage());
String[] cmd = event.getMessage().substring(prefix.length()).split(" ");
String[] args = Arrays.copyOfRange(cmd, 1, cmd.length);
for (Feature feature : features) {
@ -37,19 +38,19 @@ public class FMLEventHandler {
feature.onCommand(args);
return;
} catch (Exception e) {
GlobalUtil.LOGGER.error("Error executing command {}", event.getMessage());
GlobalUtil.LOGGER.error((Object) "The error: ", e);
ChatUtil.print("Error executing this command. Please send your latest.log to the " + Setup.Name + " developers.");
ImplUtil.LOGGER.error("Error executing command {}", event.getMessage());
ImplUtil.LOGGER.error((Object) "The error: ", e);
IngameLogger.chatPrint("Error executing this command. Please send your latest.log to the " + FeatureManager.Name + " developers.");
}
}
}
ChatUtil.print("This command is not present.");
IngameLogger.chatPrint("This command is not present.");
}
}
@SubscribeEvent
public void render(RenderWorldLastEvent event) {
BaseBand.updateKeyBinds();
KeyManager.updateKeyBinds();
}
EntityPlayerSP playerLastTick = null;
@ -66,7 +67,7 @@ public class FMLEventHandler {
if(event.phase != TickEvent.Phase.END)
return;
playerLastTick = mc.player;
BaseBand.updateKeyBinds();
KeyManager.updateKeyBinds();
for(Feature feature : features) {
feature.onEveryTick();
if(feature.enabled) {

View file

@ -4,7 +4,7 @@ import com.baseband.client.BaseBand;
import com.baseband.client.event.remote.RemoteEvent;
import com.baseband.client.event.remote.RemoteEventManager;
import com.baseband.client.util.interact.BlockUtils;
import com.baseband.client.util.misc.GlobalUtil;
import com.baseband.client.util.misc.ImplUtil;
import com.baseband.client.util.type.Selection;
import de.tudbut.obj.Save;
@ -24,7 +24,7 @@ public class SelectEvent extends RemoteEvent {
if(BaseBand.remoteEventManager.isConnected()) {
RemoteEventManager manager = BaseBand.remoteEventManager;
Selection[] splitSelection = BlockUtils.splitSelection1D(selection, manager.getPeers());
GlobalUtil.LOGGER.info("Split selection: {}", Arrays.toString(splitSelection));
ImplUtil.LOGGER.info("Split selection: {}", Arrays.toString(splitSelection));
if(splitSelection.length > manager.getID())
return splitSelection[manager.getID()];
else return null;

View file

@ -1,9 +1,10 @@
package com.baseband.client.event.remote;
import com.baseband.client.BaseBand;
import com.baseband.client.Setup;
import com.baseband.client.feature.FeatureManager;
import com.baseband.client.event.remote.events.RemoteInitEvent;
import com.baseband.client.feature.client.AltControl;
import com.baseband.client.util.interact.IngameLogger;
import de.tudbut.io.TypedInputStream;
import de.tudbut.io.TypedOutputStream;
import de.tudbut.parsing.JSON;
@ -21,7 +22,7 @@ import java.util.LinkedList;
import java.util.Queue;
public class RemoteEventManager {
private static final Setup Setup = com.baseband.client.Setup.get();
private static final FeatureManager FeatureManager = FeatureManager.get();
public Socket head = null;
public final ArrayList<Socket> clients = new ArrayList<>();
@ -36,16 +37,16 @@ public class RemoteEventManager {
if(isConnected())
end();
try {
head = new Socket(ip, Setup.Port);
head = new Socket(ip, FeatureManager.Port);
initClient();
BaseBand.notify("[Remote] Started as client.");
IngameLogger.notify("[Remote] Started as client.");
} catch (IOException ex) {
try {
server = new ServerSocket(Setup.Port);
server = new ServerSocket(FeatureManager.Port);
initServer();
BaseBand.notify("[Remote] Started as server.");
IngameLogger.notify("[Remote] Started as server.");
} catch (IOException e) {
BaseBand.notify("[Remote] Failed to start.");
IngameLogger.notify("[Remote] Failed to start.");
}
}
}
@ -71,17 +72,17 @@ public class RemoteEventManager {
head.close();
}
} catch (IOException ignored) {}
BaseBand.ifFeatureEnabled(AltControl.class, f -> f.setEnabled(false));
FeatureManager.ifFeatureEnabled(AltControl.class, f -> f.setEnabled(false));
}
Thread thread;
private void initServer() {
thread = new Thread(this::runServer, Setup.Name + " RemoteEvent server");
thread = new Thread(this::runServer, FeatureManager.Name + " RemoteEvent server");
thread.start();
}
private void initClient() {
thread = new Thread(this::runClient, Setup.Name + " RemoteEvent client");
thread = new Thread(this::runClient, FeatureManager.Name + " RemoteEvent client");
thread.start();
}
@ -101,7 +102,7 @@ public class RemoteEventManager {
s.setSoTimeout(1);
clients.add(s);
publish(new RemoteInitEvent(clients.size() + 1));
BaseBand.notify("[Remote] Client connected.");
IngameLogger.notify("[Remote] Client connected.");
} else {
s.close();
}
@ -144,7 +145,7 @@ public class RemoteEventManager {
}
private void disconnectClient(int i) throws IOException {
BaseBand.notify("[Remote] A peer disconnected.");
IngameLogger.notify("[Remote] A peer disconnected.");
clients.remove(i).close();
publish(new RemoteInitEvent(clients.size() + 1));
}
@ -159,12 +160,12 @@ public class RemoteEventManager {
o.write('B');
o.flush();
if(!(i.read() == 'B' && i.read() == 'B')) {
BaseBand.notify("[Remote] Unable to connect.");
IngameLogger.notify("[Remote] Unable to connect.");
end();
return;
}
head.setSoTimeout(1);
BaseBand.notify("[Remote] Connected.");
IngameLogger.notify("[Remote] Connected.");
while(head != null) {
while(!toSend.isEmpty()) {
String stringEvent = JSON.write((TCN)ConfigSaverTCN2.write(toSend.poll(), false, false));
@ -175,7 +176,7 @@ public class RemoteEventManager {
try {
head.setSoTimeout(1);
if ((id = i.read()) == -1) {
BaseBand.notify("[Remote] Connection ended.");
IngameLogger.notify("[Remote] Connection ended.");
end();
return;
}
@ -185,7 +186,7 @@ public class RemoteEventManager {
} catch (InterruptedIOException ignored) {}
}
} catch (IOException | JSON.JSONFormatException | ClassNotFoundException e) {
BaseBand.notify("[Remote] Connection ended.");
IngameLogger.notify("[Remote] Connection ended.");
end();
}
}
@ -205,7 +206,7 @@ public class RemoteEventManager {
RemoteEvent event = toProcess.poll();
if(event instanceof RemoteInitEvent) {
peers = ((RemoteInitEvent) event).peers;
BaseBand.notify("[Remote] Peers connected: " + peers + ".");
IngameLogger.notify("[Remote] Peers connected: " + peers + ".");
}
else {
BaseBand.eventManager.publish(event);

View file

@ -1,7 +1,6 @@
package com.baseband.client.feature;
import com.baseband.client.BaseBand;
import com.baseband.client.Setup;
import com.baseband.client.feature.category.Command;
import com.baseband.client.gui.lib.component.*;
import com.baseband.client.registry.AnyGate;
@ -11,7 +10,9 @@ import com.baseband.client.registry.SetCommand;
import com.baseband.client.registry.annotation.*;
import com.baseband.client.util.adapt.FieldFinder;
import com.baseband.client.util.adapt.Marker;
import com.baseband.client.util.interact.IngameLogger;
import com.baseband.client.util.type.KeyBind;
import com.baseband.client.util.type.KeyManager;
import net.minecraft.client.Minecraft;
import net.minecraftforge.common.MinecraftForge;
@ -30,7 +31,7 @@ public abstract class Feature extends ToggleButton implements SetCommand {
private static final int MARKER_PREFIX = -1024;
public static final int M_ENABLED = MARKER_PREFIX + 1;
protected Setup Setup;
protected FeatureManager FeatureManager;
protected BaseBand bb;
protected Minecraft mc;
@ -81,18 +82,18 @@ public abstract class Feature extends ToggleButton implements SetCommand {
if(enabled) {
BaseBand.eventManager.subscribe(this);
MinecraftForge.EVENT_BUS.register(this);
BaseBand.notify("§l" + this + "§a enabled§r.");
IngameLogger.notify("§l" + this + "§a enabled§r.");
onEnable();
} else {
BaseBand.eventManager.unsubscribe(this);
MinecraftForge.EVENT_BUS.unregister(this);
BaseBand.notify("§l" + this + "§c disabled§r.");
IngameLogger.notify("§l" + this + "§c disabled§r.");
onDisable();
}
}
public final void register(BaseBand bbInst, Minecraft mc) {
Setup = com.baseband.client.Setup.get();
FeatureManager = FeatureManager.get();
this.bb = bbInst;
this.mc = mc;
@ -127,11 +128,11 @@ public abstract class Feature extends ToggleButton implements SetCommand {
String keyBindConfig = keyBindString + " Key";
KeyBind keyBind = new KeyBind(null, () -> {
btn.click(0, 0, 0);
BaseBand.notify("Toggled " + config.value() + " in " + this + " " + (btn.green ? "§aon" : "§coff"));
IngameLogger.notify("Toggled " + config.value() + " in " + this + " " + (btn.green ? "§aon" : "§coff"));
}, gate);
subComponents.add(new KeyButton(keyBindString, settings, keyBindConfig).gate(AnyGate.get(f, this, null, keyBound.allowChangeGate())).hover(description));
BaseBand.registerUpdater(settings.linkWith(keyBind, KeyBind.KEY_FIELD).name(keyBindConfig));
BaseBand.registerKeyBind(keyBind);
KeyManager.registerKeyBind(keyBind);
}
}
if (f.getType() == int.class) {
@ -203,7 +204,7 @@ public abstract class Feature extends ToggleButton implements SetCommand {
}, gate);
subComponents.add(new KeyButton(keyBindString, settings, keyBindConfig).gate(AnyGate.get(m, this, null, keyBound.allowChangeGate())).hover(description));
BaseBand.registerUpdater(settings.linkWith(keyBind, KeyBind.KEY_FIELD).name(keyBindConfig));
BaseBand.registerKeyBind(keyBind);
KeyManager.registerKeyBind(keyBind);
}
}

View file

@ -0,0 +1,151 @@
package com.baseband.client.feature;
import com.baseband.client.BaseBand;
import com.baseband.client.feature.chat.*;
import com.baseband.client.feature.client.*;
import com.baseband.client.feature.combat.AutoTotem;
import com.baseband.client.feature.command.*;
import com.baseband.client.feature.movement.*;
import com.baseband.client.feature.render.*;
import com.baseband.client.feature.world.*;
import com.baseband.client.util.type.FeatureAction;
import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.Arrays;
/**
* @author TudbuT & Jess H
* <p>
* Client setup: Included features, etc.
* ^ No, FeatureManager!
*/
public class FeatureManager {
public static Feature[] features = new Feature[0];
public final String Name = "BaseBand";
public final String RegistryFilename = "baseband.db";
public final int Port = 7258;
public final Feature[] Features = new Feature[] {
// REQUIRED
new Client(),
// OPTIONAL
new AltControl(),
new AutoEat(),
//new AutoKill(),
//AutoKill.INSTANCE.autoHit,
//AutoKill.INSTANCE.autoCrystal,
new AutoTotem(),
new AutoReconnect(),
new AutoRespawn(),
new AutoSignText(),
new Baritone(),
new Bind(),
new Bright(),
new ChatAppend(),
new ChatCrypt(),
new ChatExtras(),
new ChatFilter(),
new ClickGUI(),
new Connect(),
new Disconnect(),
new ElytraFly(),
new ElytraBot(),
new FastBreak(),
new Freecam(),
new Help(),
new HUD(),
new HUD.ShowTPS(),
new ISeeYou(),
new MidClick(),
new Nametags(),
new NoSlowDown(),
new Ping(),
new RenderFun(),
new Say(),
new SeedOverlay(),
new Set(),
new Select(),
new Speed(),
new Test(),
new Timer(),
new TPAccept(),
new Trigger(),
new Trust(),
new Velocity(),
};
/// SINGLETON LOGIC ///
private static FeatureManager INSTANCE;
public static FeatureManager get() {
if(INSTANCE == null)
INSTANCE = new FeatureManager();
return INSTANCE;
}
public ArrayList<Feature> filteredFeatures;
private FeatureManager() {
FeatureManager clientFeatureManager = FeatureManager.get();
filteredFeatures = new ArrayList<>(Arrays.asList(clientFeatureManager.Features));
for (int i = 0; i < filteredFeatures.size(); i++) {
Feature value = filteredFeatures.get(i);
if(!value.canExist()) {
filteredFeatures.remove(i--);
}
}
FeatureManager.features = filteredFeatures.toArray(new Feature[0]);
for (Feature feature : FeatureManager.features) {
feature.register(BaseBand.INSTANCE, BaseBand.mc);
}
}
public static boolean isFeaturePresent(Class<? extends Feature> clazz) {
Feature f = getFeature(clazz);
//noinspection ConstantValue
return f != null;
}
public static boolean isFeatureEnabled(Class<? extends Feature> clazz) {
Feature f = getFeature(clazz);
//noinspection ConstantValue
if(f == null)
return false;
return f.enabled;
}
public static <T extends Feature> boolean ifFeaturePresent(Class<? extends T> clazz, FeatureAction<T> action) {
T f = getFeature(clazz);
//noinspection ConstantValue
if(f == null)
return false;
action.run(f);
return true;
}
public static <T extends Feature> boolean ifFeatureEnabled(Class<? extends T> clazz, FeatureAction<T> action) {
T f = getFeature(clazz);
//noinspection ConstantValue
if(f == null || !f.enabled)
return false;
action.run(f);
return true;
}
@SuppressWarnings("DataFlowIssue")
@Nonnull
public static <T extends Feature> T getFeature(Class<? extends T> clazz) {
if(BaseBand.finishedDisabling) return null;
for (Feature feature : get().filteredFeatures) {
if (feature.getClass() == clazz)
return (T) feature;
}
return null;
}
}

View file

@ -5,7 +5,7 @@ import com.baseband.client.feature.category.Chat;
import com.baseband.client.registry.annotation.Config;
import com.baseband.client.registry.annotation.Gate;
import com.baseband.client.util.adapt.Marker;
import com.baseband.client.util.interact.ChatUtil;
import com.baseband.client.util.interact.IngameLogger;
import net.minecraftforge.client.event.ClientChatEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
@ -42,8 +42,8 @@ public class ChatAppend extends Feature {
if(message.matches("\\W.*"))
return;
ChatUtil.history(message);
ChatUtil.send(applyWatermark((custom ? (customUnicodeToggle ? toUnicode(customWatermark) : customWatermark) : toUnicode("baseband")), message), false);
IngameLogger.history(message);
IngameLogger.send(applyWatermark((custom ? (customUnicodeToggle ? toUnicode(customWatermark) : customWatermark) : toUnicode("baseband")), message), false);
event.setCanceled(true);
}

View file

@ -1,6 +1,5 @@
package com.baseband.client.feature.chat;
import com.baseband.client.BaseBand;
import com.baseband.client.event.events.PacketEvent;
import com.baseband.client.feature.Feature;
import com.baseband.client.feature.category.Chat;
@ -9,8 +8,8 @@ import com.baseband.client.mixins.ICPacketChat;
import com.baseband.client.registry.annotation.*;
import com.baseband.client.util.adapt.FieldFinder;
import com.baseband.client.util.adapt.Marker;
import com.baseband.client.util.interact.ChatUtil;
import com.baseband.client.util.misc.GlobalUtil;
import com.baseband.client.util.interact.IngameLogger;
import com.baseband.client.util.misc.ImplUtil;
import com.baseband.client.util.misc.SBE;
import com.baseband.client.util.misc.Trypt;
import de.tudbut.tools.Hasher;
@ -50,7 +49,7 @@ public class ChatCrypt extends Feature {
@Config("Channel")
@Description("Used to distinguish between different groups of people using ChatCrypt (otherwise you get garbage in chat).")
@Range("0..128")
public int channel = GlobalUtil.RANDOM.nextInt(128);
public int channel = ImplUtil.RANDOM.nextInt(128);
@Config("Use SBE algorithm")
@Description("Trypt will look more random and has 256 possible encodings for the same message, meaning repetition is harder to see.\n" +
@ -97,7 +96,7 @@ public class ChatCrypt extends Feature {
@MultiGate(and = {2, 3})
public void resetTrypt() {
trypt = null;
BaseBand.notifyAll("§c§lChat>§a Trypt instance reset.");
IngameLogger.notifyAll("§c§lChat>§a Trypt instance reset.");
}
@Config("Password")
@ -111,7 +110,7 @@ public class ChatCrypt extends Feature {
public void onEnable() {
if(password.isEmpty() || password.equalsIgnoreCase("CLICK HERE")) {
toggle();
BaseBand.notify("[ChatCrypt] Set a Password first! (set ID Password)");
IngameLogger.notify("[ChatCrypt] Set a Password first! (set ID Password)");
}
}
@ -150,12 +149,12 @@ public class ChatCrypt extends Feature {
boolean isOurs = message.equals(sentEncrypted);
GlobalUtil.LOGGER.info("decrypt: {}", message);
ImplUtil.LOGGER.info("decrypt: {}", message);
byte[] original = recoverBytes(message);
if(!useSBE && decryptNoKeep(original).equals("CC:keep") && allowCCKeep) {
keepTrypt = true;
trypt = null;
BaseBand.notify("§dChat>§a Enabled and synchronized Trypt keep (initiated by " + username + ").");
IngameLogger.notify("§dChat>§a Enabled and synchronized Trypt keep (initiated by " + username + ").");
e.setCancelled(true);
return;
}
@ -164,10 +163,10 @@ public class ChatCrypt extends Feature {
if(!useSBE && keepTrypt && (!isOurs || !sentOriginal.equals(message))) {
// we must re-encrypt anything we get, unless it is from ourselves, to make sure our key stays up-to-date
if(Arrays.equals(trypt.encryptChunk(message.getBytes(StandardCharsets.UTF_8), original[0]), original)) {
GlobalUtil.LOGGER.debug("Successfully kept Trypt key up-to-date.");
ImplUtil.LOGGER.debug("Successfully kept Trypt key up-to-date.");
}
else {
BaseBand.notifyAll("§d§lChat>§c Unable to keep Trypt key up-to-date. Disabled keep." + (allowCCKeep ? " (Enable and sync by sending CC:keep)" : ""));
IngameLogger.notifyAll("§d§lChat>§c Unable to keep Trypt key up-to-date. Disabled keep." + (allowCCKeep ? " (Enable and sync by sending CC:keep)" : ""));
keepTrypt = false;
}
}
@ -211,7 +210,7 @@ public class ChatCrypt extends Feature {
sentEncrypted = s;
s += getTerminator();
if (s.length() > 256) {
ChatUtil.print("Encrypted message length was too long, couldn't send!");
IngameLogger.chatPrint("Encrypted message length was too long, couldn't send!");
e.setCancelled(true);
sentEncrypted = null;
sentOriginal = null;

View file

@ -1,6 +1,5 @@
package com.baseband.client.feature.chat;
import com.baseband.client.BaseBand;
import com.baseband.client.event.events.PacketEvent;
import com.baseband.client.feature.Feature;
import com.baseband.client.feature.category.Chat;
@ -10,7 +9,7 @@ import com.baseband.client.registry.annotation.Gate;
import com.baseband.client.registry.annotation.Trigger;
import com.baseband.client.util.adapt.FieldFinder;
import com.baseband.client.util.adapt.Marker;
import com.baseband.client.util.interact.ChatUtil;
import com.baseband.client.util.interact.IngameLogger;
import net.minecraft.client.gui.ChatLine;
import net.minecraft.client.gui.GuiNewChat;
import net.minecraft.network.play.server.SPacketChat;
@ -63,7 +62,7 @@ public class ChatExtras extends Feature {
chatLines.remove(i--);
}
mc.ingameGUI.getChatGUI().refreshChat();
BaseBand.notify("Cleared chat of DMs");
IngameLogger.notify("Cleared chat of DMs");
}
@ -73,7 +72,7 @@ public class ChatExtras extends Feature {
Pattern pattern = Pattern.compile("[^\t\r\n\\x20-\\x7E]+", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(message);
if (matcher.find()) {
ChatUtil.print("Unicode filtered!");
IngameLogger.chatPrint("Unicode filtered!");
event.setCancelled(true);
if (notifyOnPopLag) {
mc.ingameGUI.getChatGUI().printChatMessage(new TextComponentString(message.replaceAll(pattern.pattern(), "")));
@ -88,7 +87,7 @@ public class ChatExtras extends Feature {
if (text.contains("jndi") || text.contains("ldap")) {
text = text.replace("jndi", "");
text = text.replace("ldap", "");
ChatUtil.print("Log4Shell Prevented, Sterilized Message:\n" + text);
IngameLogger.chatPrint("Log4Shell Prevented, Sterilized Message:\n" + text);
event.setCancelled(true);
}
}

View file

@ -5,8 +5,8 @@ import com.baseband.client.feature.Feature;
import com.baseband.client.feature.category.Chat;
import com.baseband.client.registry.annotation.Config;
import com.baseband.client.util.adapt.FieldFinder;
import com.baseband.client.util.interact.ChatUtil;
import com.baseband.client.util.misc.GlobalUtil;
import com.baseband.client.util.interact.IngameLogger;
import com.baseband.client.util.misc.ImplUtil;
import net.minecraft.network.play.server.SPacketChat;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TextComponentString;
@ -105,9 +105,9 @@ public class ChatFilter extends Feature {
}
if(changed) {
GlobalUtil.LOGGER.info("Original message: {}", packet.getChatComponent().getUnformattedText());
ImplUtil.LOGGER.info("Original message: {}", packet.getChatComponent().getUnformattedText());
if (mode == Mode.Block) {
ChatUtil.print("Message filtered.");
IngameLogger.chatPrint("Message filtered.");
event.setCancelled(true);
return;
}

View file

@ -2,7 +2,7 @@ package com.baseband.client.feature.chat;
import com.baseband.client.feature.Feature;
import com.baseband.client.feature.category.Chat;
import com.baseband.client.util.interact.ChatUtil;
import com.baseband.client.util.interact.IngameLogger;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
@ -32,8 +32,8 @@ public class ISeeYou extends Feature {
try {
for (final Entity entity : mc.world.loadedEntityList) if (entity instanceof EntityPlayer && !entity.getName().equalsIgnoreCase(mc.player.getName())) newnames.add(entity.getName());
if (!names.equals(newnames)) {
for (final String name : newnames) if (!names.contains(name)) ChatUtil.print("[ISeeYou] I locally see "+name);
for (final String name : names) if (!newnames.contains(name)) ChatUtil.print("[ISeeYou] I no longer locally see "+name);
for (final String name : newnames) if (!names.contains(name)) IngameLogger.chatPrint("[ISeeYou] I locally see "+name);
for (final String name : names) if (!newnames.contains(name)) IngameLogger.chatPrint("[ISeeYou] I no longer locally see "+name);
names.clear();
names.addAll(newnames);
}

View file

@ -6,7 +6,7 @@ import com.baseband.client.feature.category.Chat;
import com.baseband.client.registry.PlayerDB;
import com.baseband.client.registry.annotation.Config;
import com.baseband.client.registry.annotation.Description;
import com.baseband.client.util.interact.ChatUtil;
import com.baseband.client.util.interact.IngameLogger;
import net.minecraftforge.client.event.ClientChatReceivedEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
@ -35,7 +35,7 @@ public class TPAccept extends Feature {
String regex = "^" + this.regex.replaceAll("^\\^|\\$$", "") + "$";
String text = event.getMessage().getUnformattedText();
if(text.matches(regex) && (!onlyTrusted || PlayerDB.player(null, text.replaceAll(regex, "$1")).getBoolean("tpa") == Boolean.TRUE)) {
ChatUtil.simulateSend(text.replaceAll(regex, command), false);
IngameLogger.simulateSend(text.replaceAll(regex, command), false);
}
}

View file

@ -11,7 +11,7 @@ import com.baseband.client.registry.annotation.Description;
import com.baseband.client.registry.annotation.Gate;
import com.baseband.client.registry.annotation.Trigger;
import com.baseband.client.util.adapt.Marker;
import com.baseband.client.util.interact.ChatUtil;
import com.baseband.client.util.interact.IngameLogger;
@ClientCategory
public class AltControl extends Feature {
@ -43,28 +43,28 @@ public class AltControl extends Feature {
}
public void onRemoteSendChat(RemoteSendMessageEvent event) {
BaseBand.notify("[AltControl] Received a message to send.");
ChatUtil.simulateSend(event.message, false);
IngameLogger.notify("[AltControl] Received a message to send.");
IngameLogger.simulateSend(event.message, false);
}
public void onConfig(RemoteConfigEvent event) {
BaseBand.notify("[AltControl] Received a config.");
IngameLogger.notify("[AltControl] Received a config.");
String ip = this.ip;
boolean gui = BaseBand.isFeatureEnabled(ClickGUI.class);
boolean gui = FeatureManager.isFeatureEnabled(ClickGUI.class);
BaseBand.INSTANCE.cloneConfigFrom(event.fatTCN);
BaseBand.ifFeaturePresent(ClickGUI.class, f -> f.setEnabled(gui));
FeatureManager.ifFeaturePresent(ClickGUI.class, f -> f.setEnabled(gui));
this.ip = ip;
}
@Override
public void onCommand(String[] args) {
if(!enabled)
ChatUtil.print("Please first enable " + this + ".");
IngameLogger.chatPrint("Please first enable " + this + ".");
if(args.length == 0) {
ChatUtil.print("syntax: " + Client.prefix + this + " <message...>");
IngameLogger.chatPrint("syntax: " + Client.prefix + this + " <message...>");
return;
}
BaseBand.publish(new RemoteSendMessageEvent(String.join(" ", args)));

View file

@ -11,7 +11,7 @@ import com.baseband.client.registry.annotation.Config;
import com.baseband.client.registry.annotation.Description;
import com.baseband.client.registry.annotation.KeyBound;
import com.baseband.client.registry.annotation.Trigger;
import com.baseband.client.util.interact.ChatUtil;
import com.baseband.client.util.interact.IngameLogger;
import com.baseband.client.util.interact.RotationManager;
import com.baseband.client.util.interact.ServerDataManager;
import net.minecraft.entity.EntityLivingBase;
@ -40,7 +40,7 @@ public class Client extends Feature {
public void clearTargets() {
entityTarget = null;
playerTarget = null;
BaseBand.notify("§aCleared all targets.");
IngameLogger.notify("§aCleared all targets.");
}
@Config("ScreenshotUpload")
@ -57,7 +57,7 @@ public class Client extends Feature {
@Trigger("Save config")
public void saveConfig() {
Configuration.save();
BaseBand.notify("Config saved to disk");
IngameLogger.notify("Config saved to disk");
}
@ -67,7 +67,7 @@ public class Client extends Feature {
@Override
public String toString() {
return Setup.Name;
return FeatureManager.Name;
}
@Override
@ -88,11 +88,11 @@ public class Client extends Feature {
return;
}
disableLock = true;
ChatUtil.print("Unloading...");
IngameLogger.chatPrint("Unloading...");
MinecraftForge.EVENT_BUS.unregister(BaseBand.fmlEventHandlerInstance);
mc.displayGuiScreen(null);
BaseBand.enabled = false;
ChatUtil.print("Waiting for config...");
IngameLogger.chatPrint("Waiting for config...");
}
@Override
@ -116,7 +116,7 @@ public class Client extends Feature {
ServerDataManager.onTimePacket();
}
if(packet instanceof SPacketPlayerPosLook && lagNotify) { //TODO: if packetfly then ignore
BaseBand.notify("[LagNotify] §cLagback!");
IngameLogger.notify("[LagNotify] §cLagback!");
}
}

View file

@ -1,11 +1,10 @@
package com.baseband.client.feature.client;
import com.baseband.client.BaseBand;
import com.baseband.client.feature.Feature;
import com.baseband.client.feature.category.ClientCategory;
import com.baseband.client.registry.PlayerDB;
import com.baseband.client.registry.annotation.Config;
import com.baseband.client.util.interact.ChatUtil;
import com.baseband.client.util.interact.IngameLogger;
import de.tudbut.parsing.TCN;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
@ -27,21 +26,21 @@ public class MidClick extends Feature {
player.set("isTarget", player.getBoolean("isTarget") != Boolean.TRUE);
if(player.getBoolean("isTarget")) {
com.baseband.client.feature.client.Client.playerTarget = p;
BaseBand.notify("§cNow targeting " + p.getName());
IngameLogger.notify("§cNow targeting " + p.getName());
} else {
BaseBand.notify("§a§lNo longer§a targeting " + p.getName());
IngameLogger.notify("§a§lNo longer§a targeting " + p.getName());
}
}),
Friend((p) -> {
TCN player = Objects.requireNonNull(PlayerDB.player(p.getGameProfile().getId(), p.getGameProfile().getName()));
player.set("isFriend", player.getBoolean("isFriend") != Boolean.TRUE);
if(player.getBoolean("isFriend")) {
BaseBand.notify("§aMarked " + p.getName() + " as a friend.");
IngameLogger.notify("§aMarked " + p.getName() + " as a friend.");
} else {
BaseBand.notify("§c§lUn§cmarked " + p.getName() + " as a friend.");
IngameLogger.notify("§c§lUn§cmarked " + p.getName() + " as a friend.");
}
}),
Message((p) -> ChatUtil.openChat("/w " + p.getGameProfile().getName() + " ")),
Message((p) -> IngameLogger.openChat("/w " + p.getGameProfile().getName() + " ")),
;
public final Consumer<EntityPlayer> action;
PlayerAction(Consumer<EntityPlayer> action) {
@ -68,10 +67,10 @@ public class MidClick extends Feature {
Target((e) -> {
if(com.baseband.client.feature.client.Client.entityTarget != e) {
com.baseband.client.feature.client.Client.entityTarget = e;
BaseBand.notify("§cNow targeting entity ID " + e.getEntityId());
IngameLogger.notify("§cNow targeting entity ID " + e.getEntityId());
} else {
com.baseband.client.feature.client.Client.entityTarget = null;
BaseBand.notify("§aEntity target reset.");
IngameLogger.notify("§aEntity target reset.");
}
}),
;

View file

@ -1,6 +1,5 @@
package com.baseband.client.feature.client;
import com.baseband.client.BaseBand;
import com.baseband.client.feature.Feature;
import com.baseband.client.feature.category.ClientCategory;
import com.baseband.client.registry.PlayerDB;
@ -9,6 +8,7 @@ import com.baseband.client.registry.annotation.Description;
import com.baseband.client.registry.annotation.Gate;
import com.baseband.client.registry.annotation.Trigger;
import com.baseband.client.util.adapt.Marker;
import com.baseband.client.util.interact.IngameLogger;
import de.tudbut.parsing.TCN;
@ClientCategory
@ -44,7 +44,7 @@ public class Trust extends Feature {
@Override
public void onEnable() {
if(name.isEmpty()) {
BaseBand.notify("First set the name of a player to modify.");
IngameLogger.notify("First set the name of a player to modify.");
toggle();
}
TCN player = PlayerDB.player(null, name);

View file

@ -5,7 +5,7 @@ import com.baseband.client.feature.category.Combat;
import com.baseband.client.gui.GuiBBIngame;
import com.baseband.client.registry.annotation.*;
import com.baseband.client.util.adapt.Marker;
import com.baseband.client.util.interact.ChatUtil;
import com.baseband.client.util.interact.IngameLogger;
import com.baseband.client.util.interact.InventoryUtils;
import de.tudbut.tools.Lock;
import net.minecraft.client.gui.ScaledResolution;
@ -196,10 +196,10 @@ public class AutoTotem extends Feature {
if(totemSlots.isEmpty()) {
if(mode == Mode.Hyperswap) {
if(!replenishHyperswap())
ChatUtil.printHotbar("!! NO TOTEMS !!");
IngameLogger.printHotbar("!! NO TOTEMS !!");
}
else {
ChatUtil.printHotbar("!! NO TOTEMS !!");
IngameLogger.printHotbar("!! NO TOTEMS !!");
}
return;
}

View file

@ -4,17 +4,17 @@ import com.baseband.client.feature.Feature;
import com.baseband.client.feature.category.Command;
import com.baseband.client.feature.client.Client;
import com.baseband.client.registry.SetCommand;
import com.baseband.client.util.interact.ChatUtil;
import com.baseband.client.util.interact.IngameLogger;
import org.lwjgl.input.Keyboard;
import static com.baseband.client.BaseBand.features;
import static com.baseband.client.feature.FeatureManager.features;
@Command
public class Bind extends Feature {
@Override
public void onCommand(String[] args) {
if(args.length != 3) {
ChatUtil.print("syntax: " + Client.prefix + this + " <module> <binding> <key>");
IngameLogger.chatPrint("syntax: " + Client.prefix + this + " <module> <binding> <key>");
return;
}
String module = args[0];
@ -31,20 +31,20 @@ public class Bind extends Feature {
}
if(f == null) {
ChatUtil.print("Feature " + module + " is not present in this client.");
IngameLogger.chatPrint("Feature " + module + " is not present in this client.");
return;
}
int key = Keyboard.getKeyIndex(value);
if(key == 0) {
ChatUtil.print(value + " does not appear to be a valid key.");
IngameLogger.chatPrint(value + " does not appear to be a valid key.");
return;
}
if(f.setWithString(setting.replace('_', ' '), String.valueOf(key))) {
ChatUtil.print(module + ":" + setting + " has been set: KEY_" + value + "=" + key);
IngameLogger.chatPrint(module + ":" + setting + " has been set: KEY_" + value + "=" + key);
} else {
ChatUtil.print("This value is invalid for setting " + module + ":" + setting + " (or it doesn't exist).");
IngameLogger.chatPrint("This value is invalid for setting " + module + ":" + setting + " (or it doesn't exist).");
}
}

View file

@ -1,11 +1,10 @@
package com.baseband.client.feature.command;
import com.baseband.client.BaseBand;
import com.baseband.client.feature.Category;
import com.baseband.client.feature.Feature;
import com.baseband.client.feature.category.Command;
import com.baseband.client.feature.client.Client;
import com.baseband.client.util.interact.ChatUtil;
import com.baseband.client.util.interact.IngameLogger;
import de.tudbut.obj.TLMap;
import net.minecraft.util.text.Style;
import net.minecraft.util.text.TextComponentString;
@ -17,7 +16,7 @@ public class Help extends Feature {
@Override
public void onTick() {
if(type != null) {
ChatUtil.openChat(type);
IngameLogger.openChat(type);
type = null;
}
}
@ -25,87 +24,87 @@ public class Help extends Feature {
@Override
public void onCommand(String[] args) {
if(args.length == 0) {
ChatUtil.print("§c§lWelcome to the " + Setup.Name + " help system!");
ChatUtil.print("What would you like to see?");
ChatUtil.print("- guide (<- start with this)");
ChatUtil.print("- commands");
ChatUtil.print("- modules");
ChatUtil.print("");
ChatUtil.print("The beginning of the next command has already been typed out for you!");
IngameLogger.chatPrint("§c§lWelcome to the " + FeatureManager.Name + " help system!");
IngameLogger.chatPrint("What would you like to see?");
IngameLogger.chatPrint("- guide (<- start with this)");
IngameLogger.chatPrint("- commands");
IngameLogger.chatPrint("- modules");
IngameLogger.chatPrint("");
IngameLogger.chatPrint("The beginning of the next command has already been typed out for you!");
type = (Client.prefix + this + " ");
return;
}
if(args[0].equalsIgnoreCase("guide")) {
ChatUtil.print("§c§lGuide to the " + Setup.Name + " configuration system");
ChatUtil.print("This client's config is fully linked, meaning everything is kept track of automatically. " +
IngameLogger.chatPrint("§c§lGuide to the " + FeatureManager.Name + " configuration system");
IngameLogger.chatPrint("This client's config is fully linked, meaning everything is kept track of automatically. " +
"When you change something with the set command, it automatically changes in the GUI as well.");
ChatUtil.print("Everything you can do in the GUI can be done with a command. The help system can give you an " +
IngameLogger.chatPrint("Everything you can do in the GUI can be done with a command. The help system can give you an " +
"overview on what you can change. Just ask it for the §lmodules§r, for example.");
ChatUtil.print("To navigate " + Setup.Name + " by commands, you will also need the following:" +
"- " + Client.prefix + BaseBand.getFeature(Set.class) + ": this allows you to set any setting as if you were in the GUI\n" +
"- " + Client.prefix + BaseBand.getFeature(Bind.class) + ": this allows you to bind keys (they otherwise appear as numbers)\n" +
"- " + Client.prefix + BaseBand.getFeature(Trigger.class) + ": this allows you to trigger things (like a button)");
IngameLogger.chatPrint("To navigate " + FeatureManager.Name + " by commands, you will also need the following:" +
"- " + Client.prefix + FeatureManager.getFeature(Set.class) + ": this allows you to set any setting as if you were in the GUI\n" +
"- " + Client.prefix + FeatureManager.getFeature(Bind.class) + ": this allows you to bind keys (they otherwise appear as numbers)\n" +
"- " + Client.prefix + FeatureManager.getFeature(Trigger.class) + ": this allows you to trigger things (like a button)");
type = (Client.prefix + this + " modules");
return;
}
if(args[0].equalsIgnoreCase("commands")) {
ChatUtil.print("§c§l" + Setup.Name + " help system: Commands");
ChatUtil.print("§7Below you find a list of commands in the client:");
for (Feature feature : BaseBand.features) {
IngameLogger.chatPrint("§c§l" + FeatureManager.Name + " help system: Commands");
IngameLogger.chatPrint("§7Below you find a list of commands in the client:");
for (Feature feature : com.baseband.client.feature.FeatureManager.features) {
if(feature.category != Category.COMMAND)
continue;
TextComponentString comp = new TextComponentString(" " + feature.text);
Style style = new Style();
style.setClickEvent(new net.minecraft.util.text.event.ClickEvent(net.minecraft.util.text.event.ClickEvent.Action.SUGGEST_COMMAND, Client.prefix + this + " feature " + feature));
comp.setStyle(style);
ChatUtil.print(comp);
IngameLogger.chatPrint(comp);
}
return;
}
if(args[0].equalsIgnoreCase("modules")) {
ChatUtil.print("§c§l" + Setup.Name + " help system: Modules");
ChatUtil.print("§7Below you find a list of modules in the client:");
IngameLogger.chatPrint("§c§l" + FeatureManager.Name + " help system: Modules");
IngameLogger.chatPrint("§7Below you find a list of modules in the client:");
for (Category category : Category.values()) {
if(category == Category.COMMAND)
continue;
ChatUtil.print(" §lCategory " + category);
for (Feature feature : BaseBand.features) {
IngameLogger.chatPrint(" §lCategory " + category);
for (Feature feature : com.baseband.client.feature.FeatureManager.features) {
if(feature.category != category)
continue;
TextComponentString comp = new TextComponentString(" " + feature.text);
Style style = new Style();
style.setClickEvent(new net.minecraft.util.text.event.ClickEvent(net.minecraft.util.text.event.ClickEvent.Action.SUGGEST_COMMAND, Client.prefix + this + " feature " + feature));
comp.setStyle(style);
ChatUtil.print(comp);
IngameLogger.chatPrint(comp);
}
}
return;
}
if(args[0].equalsIgnoreCase("feature")) {
if(args.length != 2) {
ChatUtil.print("Invalid syntax.");
IngameLogger.chatPrint("Invalid syntax.");
return;
}
ChatUtil.print("§c§l" + Setup.Name + " help system: Feature " + args[1]);
for (Feature feature : BaseBand.features) {
IngameLogger.chatPrint("§c§l" + FeatureManager.Name + " help system: Feature " + args[1]);
for (Feature feature : com.baseband.client.feature.FeatureManager.features) {
if(feature.toString().replace(' ', '_').equalsIgnoreCase(args[1])) {
ChatUtil.print(feature.hover);
ChatUtil.print("The feature is " + (feature.enabled ? "§aenabled" : "§cdisabled") + ".");
ChatUtil.print("It has " + feature.handle.getContent().map.size() + " config entries:");
IngameLogger.chatPrint(feature.hover);
IngameLogger.chatPrint("The feature is " + (feature.enabled ? "§aenabled" : "§cdisabled") + ".");
IngameLogger.chatPrint("It has " + feature.handle.getContent().map.size() + " config entries:");
for (TLMap.Entry<String, Object> entry : feature.handle.getContent().map.entries()) {
TextComponentString comp = new TextComponentString(" " + entry.key + " = " + entry.val);
Style style = new Style();
style.setClickEvent(new net.minecraft.util.text.event.ClickEvent(net.minecraft.util.text.event.ClickEvent.Action.SUGGEST_COMMAND, Client.prefix + BaseBand.getFeature(Set.class) + " " + feature.toString().replace(' ', '_') + " " + entry.key.replace(' ', '_') + " "));
style.setClickEvent(new net.minecraft.util.text.event.ClickEvent(net.minecraft.util.text.event.ClickEvent.Action.SUGGEST_COMMAND, Client.prefix + FeatureManager.getFeature(Set.class) + " " + feature.toString().replace(' ', '_') + " " + entry.key.replace(' ', '_') + " "));
comp.setStyle(style);
ChatUtil.print(comp);
IngameLogger.chatPrint(comp);
}
return;
}
}
ChatUtil.print("This feature does not exist.");
IngameLogger.chatPrint("This feature does not exist.");
return;
}
ChatUtil.print("This action does not exist!");
IngameLogger.chatPrint("This action does not exist!");
}
@Override

View file

@ -5,12 +5,12 @@ import com.baseband.client.feature.category.Command;
import com.baseband.client.feature.client.Client;
import com.baseband.client.registry.ConfigHandle;
import com.baseband.client.registry.SetCommand;
import com.baseband.client.util.interact.ChatUtil;
import com.baseband.client.util.misc.GlobalUtil;
import com.baseband.client.util.interact.IngameLogger;
import com.baseband.client.util.misc.ImplUtil;
import java.util.HashMap;
import static com.baseband.client.BaseBand.features;
import static com.baseband.client.feature.FeatureManager.features;
@Command
public class Set extends Feature {
@ -18,20 +18,20 @@ public class Set extends Feature {
private static final HashMap<Integer, ConfigHandle> quickSet = new HashMap<>();
public static int addQuickSet(ConfigHandle handle) {
int n = GlobalUtil.RANDOM.nextInt(Integer.MAX_VALUE);
while(quickSet.containsKey(n)) n = GlobalUtil.RANDOM.nextInt(Integer.MAX_VALUE);
int n = ImplUtil.RANDOM.nextInt(Integer.MAX_VALUE);
while(quickSet.containsKey(n)) n = ImplUtil.RANDOM.nextInt(Integer.MAX_VALUE);
quickSet.put(n, handle);
return n;
}
public static void openQuickSet(int id, String field, boolean showCurrent) {
ChatUtil.openChat(Client.prefix + "set " + id + " " + field.replace(' ', '_') + " " + (showCurrent ? quickSet.get(id).getContent().getString(field) : ""));
IngameLogger.openChat(Client.prefix + "set " + id + " " + field.replace(' ', '_') + " " + (showCurrent ? quickSet.get(id).getContent().getString(field) : ""));
}
@Override
public void onCommand(String[] args) {
if(args.length < 3) {
ChatUtil.print("syntax: " + Client.prefix + this + " <module> <setting> <value...>");
IngameLogger.chatPrint("syntax: " + Client.prefix + this + " <module> <setting> <value...>");
return;
}
String module = args[0];
@ -57,16 +57,16 @@ public class Set extends Feature {
if(f == null) {
if(isQS)
ChatUtil.print("QuickSet " + module + " does not exist. This might be a bug.");
IngameLogger.chatPrint("QuickSet " + module + " does not exist. This might be a bug.");
else
ChatUtil.print("Feature " + module + " is not present in this client.");
IngameLogger.chatPrint("Feature " + module + " is not present in this client.");
return;
}
if(f.setWithString(setting.replace('_', ' '), value)) {
ChatUtil.print(module + ":" + setting + " has been set: " + value);
IngameLogger.chatPrint(module + ":" + setting + " has been set: " + value);
} else {
ChatUtil.print("This value is invalid for setting " + module + ":" + setting + " (or it doesn't exist).");
IngameLogger.chatPrint("This value is invalid for setting " + module + ":" + setting + " (or it doesn't exist).");
}
}

View file

@ -5,9 +5,9 @@ import com.baseband.client.feature.category.Command;
import com.baseband.client.feature.client.Client;
import com.baseband.client.gui.lib.component.Component;
import com.baseband.client.registry.annotation.Description;
import com.baseband.client.util.interact.ChatUtil;
import com.baseband.client.util.interact.IngameLogger;
import static com.baseband.client.BaseBand.features;
import static com.baseband.client.feature.FeatureManager.features;
@Command
@Description("Triggers some trigger on some module. This is equivalent to pressing the corresponding button in the GUI. Spaces can be replaced with underscores.")
@ -15,7 +15,7 @@ public class Trigger extends Feature {
@Override
public void onCommand(String[] args) {
if(args.length != 2) {
ChatUtil.print("syntax: " + Client.prefix + this + " <module> <trigger>");
IngameLogger.chatPrint("syntax: " + Client.prefix + this + " <module> <trigger>");
return;
}
String module = args[0];
@ -31,7 +31,7 @@ public class Trigger extends Feature {
}
if(f == null) {
ChatUtil.print("Feature " + module + " is not present in this client.");
IngameLogger.chatPrint("Feature " + module + " is not present in this client.");
return;
}
@ -41,7 +41,7 @@ public class Trigger extends Feature {
return;
}
}
ChatUtil.print("Trigger " + trigger + " is not present in module " + module + ".");
IngameLogger.chatPrint("Trigger " + trigger + " is not present in module " + module + ".");
}
@Override

View file

@ -1,6 +1,5 @@
package com.baseband.client.feature.movement;
import com.baseband.client.BaseBand;
import com.baseband.client.feature.Feature;
import com.baseband.client.feature.category.Movement;
import com.baseband.client.feature.client.Client;
@ -9,6 +8,7 @@ import com.baseband.client.registry.annotation.Description;
import com.baseband.client.registry.annotation.Gate;
import com.baseband.client.registry.annotation.Range;
import com.baseband.client.util.adapt.Marker;
import com.baseband.client.util.interact.IngameLogger;
import net.minecraft.entity.player.EntityPlayer;
@Movement
@ -49,27 +49,27 @@ public class ElytraBot extends Feature {
@Override
public void onEnable() {
if(!BaseBand.isFeatureEnabled(ElytraFly.class)) {
BaseBand.notify("§cElytraBot cannot work without ElytraFly.");
if(!FeatureManager.isFeatureEnabled(ElytraFly.class)) {
IngameLogger.notify("§cElytraBot cannot work without ElytraFly.");
toggle();
return;
}
BaseBand.getFeature(ElytraFly.class).blockMovement = true;
FeatureManager.getFeature(ElytraFly.class).blockMovement = true;
}
@Override
public void onDisable() {
if(!BaseBand.isFeaturePresent(ElytraFly.class)) {
if(!FeatureManager.isFeaturePresent(ElytraFly.class)) {
return;
}
BaseBand.getFeature(ElytraFly.class).blockMovement = false;
FeatureManager.getFeature(ElytraFly.class).blockMovement = false;
}
@Override
public void onTick() {
ElytraFly efly = BaseBand.getFeature(ElytraFly.class);
ElytraFly efly = FeatureManager.getFeature(ElytraFly.class);
if(!efly.enabled) {
BaseBand.notify("§cElytraBot cannot work without ElytraFly.");
IngameLogger.notify("§cElytraBot cannot work without ElytraFly.");
toggle();
return;
}
@ -94,7 +94,7 @@ public class ElytraBot extends Feature {
break a;
}
} catch (Exception ignored) {}
BaseBand.notify("§cInvalid ElytraBot target.");
IngameLogger.notify("§cInvalid ElytraBot target.");
toggle();
return;
} else {
@ -107,7 +107,7 @@ public class ElytraBot extends Feature {
break a;
}
}
BaseBand.notify("§cElytraBot couldn't find your target player.");
IngameLogger.notify("§cElytraBot couldn't find your target player.");
toggle();
return;
}

View file

@ -1,6 +1,5 @@
package com.baseband.client.feature.movement;
import com.baseband.client.BaseBand;
import com.baseband.client.event.Priority;
import com.baseband.client.event.events.MoveEvent;
import com.baseband.client.event.events.PacketEvent;
@ -60,12 +59,12 @@ public class Speed extends Feature {
text = toString();
}
if(enabled && BaseBand.getFeature(Timer.class).enabled) {
BaseBand.getFeature(Timer.class).timerLock = true;
BaseBand.getFeature(Timer.class).multiplierLock = 20f * 1.088f;
} else if (!enabled && BaseBand.getFeature(Timer.class).enabled){
BaseBand.getFeature(Timer.class).timerLock = false;
BaseBand.getFeature(Timer.class).multiplierLock = 20f;
if(enabled && FeatureManager.getFeature(Timer.class).enabled) {
FeatureManager.getFeature(Timer.class).timerLock = true;
FeatureManager.getFeature(Timer.class).multiplierLock = 20f * 1.088f;
} else if (!enabled && FeatureManager.getFeature(Timer.class).enabled){
FeatureManager.getFeature(Timer.class).timerLock = false;
FeatureManager.getFeature(Timer.class).multiplierLock = 20f;
}
}

View file

@ -7,7 +7,7 @@ import com.baseband.client.registry.annotation.Config;
import com.baseband.client.registry.annotation.Description;
import com.baseband.client.registry.annotation.Gate;
import static com.baseband.client.BaseBand.features;
import static com.baseband.client.feature.FeatureManager.features;
@Render
public class ClickGUI extends Feature {

View file

@ -9,7 +9,7 @@ import com.baseband.client.gui.GuiTheme;
import com.baseband.client.registry.annotation.*;
import com.baseband.client.util.adapt.Marker;
import com.baseband.client.util.interact.ServerDataManager;
import com.baseband.client.util.misc.GlobalUtil;
import com.baseband.client.util.misc.ImplUtil;
import com.baseband.client.util.render.Pixels;
import com.baseband.client.util.render.TextSplitter;
import net.minecraft.client.Minecraft;
@ -22,7 +22,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import java.util.*;
import static com.baseband.client.BaseBand.features;
import static com.baseband.client.feature.FeatureManager.features;
import static com.baseband.client.util.render.TextSplitter.*;
@Render
@ -67,7 +67,7 @@ public class HUD extends Feature {
}
public static void notify(String text, int time) {
GlobalUtil.LOGGER.info(text);
ImplUtil.LOGGER.info(text);
notifs.add(new Notification(text, time));
}
@ -164,7 +164,7 @@ public class HUD extends Feature {
public void text(RenderGameOverlayEvent.Text e) {
ScaledResolution sr = new ScaledResolution(mc);
TextSplitter.init(mc.fontRenderer);
GuiTheme.ITheme theme = BaseBand.getFeature(Client.class).getTheme();
GuiTheme.ITheme theme = FeatureManager.getFeature(Client.class).getTheme();
String infoString = "";
if(showInfo) {
@ -283,8 +283,8 @@ public class HUD extends Feature {
@Override
protected void setup() {
if(BaseBand.isFeaturePresent(ShowTPS.class)) {
subComponents.add(BaseBand.getFeature(ShowTPS.class));
if(FeatureManager.isFeaturePresent(ShowTPS.class)) {
subComponents.add(FeatureManager.getFeature(ShowTPS.class));
}
}

View file

@ -1,8 +1,8 @@
package com.baseband.client.feature.world;
import com.baseband.client.BaseBand;
import com.baseband.client.feature.Feature;
import com.baseband.client.feature.category.World;
import com.baseband.client.util.interact.IngameLogger;
import de.tudbut.tools.Lock;
import net.minecraft.client.gui.GuiGameOver;
@ -19,7 +19,7 @@ public class AutoRespawn extends Feature {
if (mc.currentScreen instanceof GuiGameOver && !lock.isLocked()) {
mc.player.respawnPlayer();
mc.displayGuiScreen(null);
BaseBand.notify("[AutoRespawn] Respawned.");
IngameLogger.notify("[AutoRespawn] Respawned.");
lock.lock(500);
}
}

View file

@ -1,13 +1,13 @@
package com.baseband.client.feature.world;
import com.baseband.client.BaseBand;
import com.baseband.client.feature.Feature;
import com.baseband.client.feature.category.World;
import com.baseband.client.feature.render.ClickGUI;
import com.baseband.client.registry.annotation.*;
import com.baseband.client.util.adapt.Marker;
import com.baseband.client.util.adapt.SimpleWorldGenerator;
import com.baseband.client.util.misc.GlobalUtil;
import com.baseband.client.util.interact.IngameLogger;
import com.baseband.client.util.misc.ImplUtil;
import com.baseband.client.util.render.Pixels;
import de.tudbut.tools.Lock;
import net.minecraft.block.Block;
@ -102,32 +102,32 @@ public class SeedOverlay extends Feature {
running = true;
canSetRD = false;
new Thread(() -> {
BaseBand.ifFeaturePresent(ClickGUI.class, gui -> gui.setEnabled(false));
FeatureManager.ifFeaturePresent(ClickGUI.class, gui -> gui.setEnabled(false));
long seed;
try {
seed = Long.parseLong(this.seed);
} catch (NumberFormatException e) {
seed = this.seed.hashCode();
}
BaseBand.notify("Creating world with seed " + seed + "...");
IngameLogger.notify("Creating world with seed " + seed + "...");
int rd = this.rd * 2 + 1;
genOverworld = SimpleWorldGenerator.overworld(mc.world.getWorldInfo(), seed, rd);
genNether = SimpleWorldGenerator.nether(mc.world.getWorldInfo(), seed, rd);
genEnd = SimpleWorldGenerator.end(mc.world.getWorldInfo(), seed, rd);
int length = rd * 16 * 256 * rd * 16;
BaseBand.notify("World generators acquired. Allocating render buffer with " + (length * 4 / 1024) + "KB space.");
IngameLogger.notify("World generators acquired. Allocating render buffer with " + (length * 4 / 1024) + "KB space.");
bufferPosition = new BlockPos((mc.player.chunkCoordX - this.rd) * 16, 0, (mc.player.chunkCoordZ - this.rd) * 16);
frontBuffer = new int[rd * 16][256][rd * 16];
backBuffer = new int[rd * 16][256][rd * 16];
GlobalUtil.LOGGER.info("Allocated.");
ImplUtil.LOGGER.info("Allocated.");
for (int x = 0; x < rd * 16; x++) {
for (int z = 0; z < rd * 16; z++) {
frontBuffer[x][0][z] = 0x800000ff;
backBuffer[x][0][z] = 0x800000ff;
}
}
GlobalUtil.LOGGER.info("Filled buffer with unloaded state.");
BaseBand.notify("Render buffer created. Starting...");
ImplUtil.LOGGER.info("Filled buffer with unloaded state.");
IngameLogger.notify("Render buffer created. Starting...");
setEnabled(true);
}, this + " init").start();
}
@ -149,7 +149,7 @@ public class SeedOverlay extends Feature {
// these should already be stopped!
if(updater.isAlive() || generator.isAlive()) {
GlobalUtil.LOGGER.warn(this + " threads were still running when stopping the world. This should not happen! Stopping them forcefully.");
ImplUtil.LOGGER.warn(this + " threads were still running when stopping the world. This should not happen! Stopping them forcefully.");
//noinspection deprecation
updater.stop();
//noinspection deprecation
@ -167,7 +167,7 @@ public class SeedOverlay extends Feature {
backBuffer = null;
canSetRD = true;
GlobalUtil.LOGGER.info("SeedOverlay completely disabled.");
ImplUtil.LOGGER.info("SeedOverlay completely disabled.");
}, this + " stopper").start();
}
@ -176,7 +176,7 @@ public class SeedOverlay extends Feature {
@Override
public void onEnable() {
if(frontBuffer == null) {
BaseBand.notify("Please input a |Seed| and trigger |Generate now|");
IngameLogger.notify("Please input a |Seed| and trigger |Generate now|");
toggle();
return;
}

View file

@ -5,6 +5,7 @@ import com.baseband.client.event.Priority;
import com.baseband.client.event.events.SelectEvent;
import com.baseband.client.feature.Feature;
import com.baseband.client.feature.category.World;
import com.baseband.client.util.interact.IngameLogger;
import com.baseband.client.util.type.Selection;
import net.minecraft.util.math.BlockPos;
@ -18,13 +19,13 @@ public class Select extends Feature {
if(end != null || begin == null) {
begin = b;
end = null;
BaseBand.notify("Selection reset.");
BaseBand.notify("Position 1: " + b.getX() + " " + b.getY() + " " + b.getZ());
IngameLogger.notify("Selection reset.");
IngameLogger.notify("Position 1: " + b.getX() + " " + b.getY() + " " + b.getZ());
BaseBand.publish(new SelectEvent(null));
return;
}
end = b;
BaseBand.notify("Position 2: " + b.getX() + " " + b.getY() + " " + b.getZ());
IngameLogger.notify("Position 2: " + b.getX() + " " + b.getY() + " " + b.getZ());
BaseBand.publish(new SelectEvent(new Selection(begin, end)));
}

View file

@ -1,6 +1,7 @@
package com.baseband.client.gui;
import com.baseband.client.BaseBand;
import com.baseband.client.feature.FeatureManager;
import com.baseband.client.feature.Feature;
import com.baseband.client.feature.render.ClickGUI;
import com.baseband.client.gui.lib.GUIManager;
@ -16,7 +17,7 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import static com.baseband.client.BaseBand.features;
import static com.baseband.client.feature.FeatureManager.features;
public class GuiRewrite extends GuiScreen {
@ -86,7 +87,7 @@ public class GuiRewrite extends GuiScreen {
@Override
public void onGuiClosed() {
super.onGuiClosed();
BaseBand.getFeature(ClickGUI.class).setEnabled(false);
FeatureManager.getFeature(ClickGUI.class).setEnabled(false);
for (Category category : categories) {
com.baseband.client.feature.Category c = com.baseband.client.feature.Category.fromName(category.text);
assert c != null;
@ -174,7 +175,7 @@ public class GuiRewrite extends GuiScreen {
}
// TMP fix for a strange bug that causes the mouse to be hidden
if (BaseBand.getFeature(ClickGUI.class).mouseFix) {
if (FeatureManager.getFeature(ClickGUI.class).mouseFix) {
drawRect(mouseX - 2, mouseY - 2, mouseX + 2, mouseY + 2, 0xffffffff);
}
int m = Mouse.getDWheel();

View file

@ -1,6 +1,6 @@
package com.baseband.client.gui.lib;
import com.baseband.client.BaseBand;
import com.baseband.client.feature.FeatureManager;
import com.baseband.client.feature.client.Client;
import com.baseband.client.gui.GuiTheme;
import com.baseband.client.gui.lib.component.Component;
@ -66,7 +66,7 @@ public class GUIManager {
}
public static void update() {
GuiTheme.ITheme theme = BaseBand.getFeature(Client.class).getTheme();
GuiTheme.ITheme theme = FeatureManager.getFeature(Client.class).getTheme();
fontColorOn = theme.getGreenColor();
fontColorOff = theme.getRedColor();
frameColor = theme.getFrameColor();

View file

@ -3,7 +3,7 @@ package com.baseband.client.gui.lib.component;
import com.baseband.client.feature.command.Set;
import com.baseband.client.gui.lib.GUIManager;
import com.baseband.client.registry.ConfigHandle;
import com.baseband.client.util.misc.GlobalUtil;
import com.baseband.client.util.misc.ImplUtil;
import net.minecraft.client.gui.Gui;
import org.lwjgl.input.Keyboard;
@ -79,7 +79,7 @@ public class IntSlider extends Component {
try {
f = (handle.getContent().getInteger(field) - adder) / (float) mapper;
} catch (NullPointerException e) {
GlobalUtil.LOGGER.debug(e.getStackTrace());
ImplUtil.LOGGER.debug(e.getStackTrace());
}
if(countdown > 0) {
--countdown;

View file

@ -3,7 +3,7 @@ package com.baseband.client.gui.lib.component;
import com.baseband.client.feature.command.Set;
import com.baseband.client.gui.lib.GUIManager;
import com.baseband.client.registry.ConfigHandle;
import com.baseband.client.util.misc.GlobalUtil;
import com.baseband.client.util.misc.ImplUtil;
import net.minecraft.client.gui.Gui;
import org.lwjgl.input.Keyboard;
@ -77,7 +77,7 @@ public class Slider extends Component {
try {
f = (handle.getContent().getFloat(field) - adder) / mapper;
} catch (NullPointerException e) {
GlobalUtil.LOGGER.debug(e.getStackTrace());
ImplUtil.LOGGER.debug(e.getStackTrace());
}
if(countdown > 0) {
--countdown;

View file

@ -2,7 +2,7 @@ package com.baseband.client.gui.lib.component;
import com.baseband.client.feature.command.Set;
import com.baseband.client.registry.ConfigHandle;
import com.baseband.client.util.misc.GlobalUtil;
import com.baseband.client.util.misc.ImplUtil;
public class ToggleButton extends Component {
@ -32,7 +32,7 @@ public class ToggleButton extends Component {
try {
green = handle.getContent().getBoolean(field);
} catch (NullPointerException e) {
GlobalUtil.LOGGER.debug(e.getStackTrace());
ImplUtil.LOGGER.debug(e.getStackTrace());
}
}

View file

@ -1,6 +1,6 @@
package com.baseband.client.mixins;
import com.baseband.client.BaseBand;
import com.baseband.client.feature.FeatureManager;
import com.baseband.client.feature.render.NoRender;
import net.minecraft.client.multiplayer.WorldClient;
import net.minecraft.client.renderer.EntityRenderer;
@ -17,7 +17,7 @@ public class MixinEntityRender {
@Redirect(method = "orientCamera", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/WorldClient;rayTraceBlocks(Lnet/minecraft/util/math/Vec3d;Lnet/minecraft/util/math/Vec3d;)Lnet/minecraft/util/math/RayTraceResult;"))
public RayTraceResult rayTraceBlocks(WorldClient world, Vec3d start, Vec3d end) {
if (BaseBand.isFeatureEnabled(NoRender.class) && BaseBand.getFeature(NoRender.class).cameraClip)
if (FeatureManager.isFeatureEnabled(NoRender.class) && FeatureManager.getFeature(NoRender.class).cameraClip)
return null;
else
return world.rayTraceBlocks(start, end);
@ -26,6 +26,6 @@ public class MixinEntityRender {
@Inject(method = "hurtCameraEffect", at = @At("HEAD"), cancellable = true)
public void hurtCameraEffect(float ticks, CallbackInfo info) {
if (BaseBand.isFeatureEnabled(NoRender.class) && BaseBand.getFeature(NoRender.class).hurtcam) info.cancel();
if (FeatureManager.isFeatureEnabled(NoRender.class) && FeatureManager.getFeature(NoRender.class).hurtcam) info.cancel();
}
}

View file

@ -1,6 +1,6 @@
package com.baseband.client.mixins;
import com.baseband.client.BaseBand;
import com.baseband.client.feature.FeatureManager;
import com.baseband.client.feature.world.AutoSignText;
import net.minecraft.client.gui.inventory.GuiEditSign;
import net.minecraft.tileentity.TileEntitySign;
@ -21,8 +21,8 @@ public class MixinGuiEditSign {
@Inject(method = "initGui", at = @At("RETURN"))
public void initGui(CallbackInfo callback) {
if(BaseBand.isFeatureEnabled(AutoSignText.class)) {
AutoSignText autoSignText = BaseBand.getFeature(AutoSignText.class);
if(FeatureManager.isFeatureEnabled(AutoSignText.class)) {
AutoSignText autoSignText = FeatureManager.getFeature(AutoSignText.class);
tileSign.signText[0] = new TextComponentString(autoSignText.signTextFirst);
tileSign.signText[1] = new TextComponentString(autoSignText.signTextSecond);
tileSign.signText[2] = new TextComponentString(autoSignText.signTextThird);

View file

@ -1,6 +1,6 @@
package com.baseband.client.mixins;
import com.baseband.client.BaseBand;
import com.baseband.client.feature.FeatureManager;
import com.baseband.client.feature.chat.ChatExtras;
import net.minecraft.client.gui.ChatLine;
import net.minecraft.client.gui.Gui;
@ -15,30 +15,30 @@ import java.util.List;
public class MixinGuiNewChat extends Gui {
@Redirect(method = "drawChat", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiNewChat;drawRect(IIIII)V"))
private void drawRectHook(int left, int top, int right, int bottom, int color) {
if(!BaseBand.isFeatureEnabled(ChatExtras.class)) {
if(!FeatureManager.isFeatureEnabled(ChatExtras.class)) {
Gui.drawRect(left, top, right, bottom, color);
return;
}
ChatExtras chatExtras = BaseBand.getFeature(ChatExtras.class);
ChatExtras chatExtras = FeatureManager.getFeature(ChatExtras.class);
Gui.drawRect(left, top, right, bottom, chatExtras.clearchat ? 0 : color);
}
@Redirect(method = "setChatLine", at = @At(value = "INVOKE", target = "Ljava/util/List;size()I", ordinal = 0, remap = false))
public int drawnChatLinesSize(List<ChatLine> list) {
if(!BaseBand.isFeatureEnabled(ChatExtras.class))
if(!FeatureManager.isFeatureEnabled(ChatExtras.class))
return list.size();
ChatExtras chatExtras = BaseBand.getFeature(ChatExtras.class);
ChatExtras chatExtras = FeatureManager.getFeature(ChatExtras.class);
return chatExtras.infinitechat ? -2147483647 : list.size();
}
@Redirect(method = "setChatLine", at = @At(value = "INVOKE", target = "Ljava/util/List;size()I", ordinal = 2, remap = false))
public int chatLinesSize(List<ChatLine> list) {
if(!BaseBand.isFeatureEnabled(ChatExtras.class))
if(!FeatureManager.isFeatureEnabled(ChatExtras.class))
return list.size();
ChatExtras chatExtras = BaseBand.getFeature(ChatExtras.class);
ChatExtras chatExtras = FeatureManager.getFeature(ChatExtras.class);
return chatExtras.infinitechat ? -2147483647 : list.size();
}
}

View file

@ -1,7 +1,7 @@
package com.baseband.client.mixins;
import com.baseband.client.BaseBand;
import com.baseband.client.feature.FeatureManager;
import com.baseband.client.feature.client.Client;
import com.baseband.client.util.net.ScreenshotHelper;
import net.minecraft.client.shader.Framebuffer;
@ -17,10 +17,10 @@ import java.io.File;
public class MixinScreenshotHelper {
@Inject(method = {"saveScreenshot(Ljava/io/File;Ljava/lang/String;IILnet/minecraft/client/shader/Framebuffer;)Lnet/minecraft/util/text/ITextComponent;"}, at = {@At(value = "HEAD")})
private static void saveScreenshot(File file, String string, int n, int n2, Framebuffer framebuffer, CallbackInfoReturnable<?> callbackInfoReturnable) {
if(!BaseBand.isFeatureEnabled(Client.class))
if(!FeatureManager.isFeatureEnabled(Client.class))
return;
Client client = BaseBand.getFeature(Client.class);
Client client = FeatureManager.getFeature(Client.class);
if (client.screenshotUpload) {
ScreenshotHelper eventClientScreenShot = new ScreenshotHelper(ScreenShotHelper.createScreenshot(n, n2, framebuffer));
eventClientScreenShot.start();

View file

@ -1,6 +1,6 @@
package com.baseband.client.registry;
import com.baseband.client.util.misc.GlobalUtil;
import com.baseband.client.util.misc.ImplUtil;
import de.tudbut.parsing.TCN;
import java.lang.reflect.Field;
@ -65,7 +65,7 @@ public class ConfigHandle implements SetCommand {
try {
updated(setting);
} catch(Exception e) {
GlobalUtil.LOGGER.info((Object) "Unable to setWithString", e);
ImplUtil.LOGGER.info((Object) "Unable to setWithString", e);
// reset
tcn.set(setting, original);
updated(setting);

View file

@ -1,13 +1,13 @@
package com.baseband.client.registry;
import com.baseband.client.Setup;
import com.baseband.client.feature.FeatureManager;
import de.tudbut.tools.Registry;
import java.io.IOException;
public class Configuration {
public final Registry registry = new Registry(Setup.get().RegistryFilename);
public final Registry registry = new Registry(FeatureManager.get().RegistryFilename);
private Configuration() throws IOException {
}

View file

@ -1,7 +1,7 @@
package com.baseband.client.util.adapt;
import com.baseband.client.BaseBand;
import com.baseband.client.Setup;
import com.baseband.client.feature.FeatureManager;
import net.minecraft.client.Minecraft;
import net.minecraft.nbt.CompressedStreamTools;
import net.minecraft.nbt.NBTTagCompound;
@ -135,7 +135,7 @@ public class SimpleWorldGenerator implements IChunkProvider {
@Override
@Nonnull
public String makeString() {
return Setup.get().Name + "." + this;
return FeatureManager.get().Name + "." + this;
}
@Override

View file

@ -1,7 +1,7 @@
package com.baseband.client.util.adapt;
import com.baseband.client.Setup;
import com.baseband.client.util.misc.GlobalUtil;
import com.baseband.client.feature.FeatureManager;
import com.baseband.client.util.misc.ImplUtil;
import de.tudbut.tools.ReflectUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.nbt.NBTTagCompound;
@ -138,7 +138,7 @@ public class WorldRecreationGenerator implements IChunkProvider {
public synchronized boolean tick() {
if(hasNewChunks) {
GlobalUtil.LOGGER.debug(this + ": Creating variations for {} MultiChunks.", realLoaded.size());
ImplUtil.LOGGER.debug(this + ": Creating variations for {} MultiChunks.", realLoaded.size());
int variations = 0;
for (Map.Entry<ChunkPos, MultiChunk> entry : realLoaded.entrySet()) {
entry.getValue().makeVariations();
@ -146,12 +146,12 @@ public class WorldRecreationGenerator implements IChunkProvider {
for (Map.Entry<ChunkPos, MultiChunk> entry : realLoaded.entrySet()) {
variations += entry.getValue().backVariations.size();
}
GlobalUtil.LOGGER.debug(this + ": Checking {} variations.", variations);
ImplUtil.LOGGER.debug(this + ": Checking {} variations.", variations);
for (Map.Entry<ChunkPos, MultiChunk> entry : realLoaded.entrySet()) {
ChunkPos pos = entry.getKey();
entry.getValue().findPreferred(mc.world.getChunk(pos.x, pos.z));
}
GlobalUtil.LOGGER.debug(this + ": Done.");
ImplUtil.LOGGER.debug(this + ": Done.");
hasNewChunks = false;
}
@ -173,7 +173,7 @@ public class WorldRecreationGenerator implements IChunkProvider {
}
private void onUnload(ChunkPos pos, Chunk chunk) {
GlobalUtil.LOGGER.debug(this + " is unloading chunk at {} {}", pos.x, pos.z);
ImplUtil.LOGGER.debug(this + " is unloading chunk at {} {}", pos.x, pos.z);
chunk.onUnload();
loaded.remove(pos);
realLoaded.remove(pos);
@ -182,7 +182,7 @@ public class WorldRecreationGenerator implements IChunkProvider {
@Override
@Nonnull
public String makeString() {
return Setup.get().Name + "." + this;
return FeatureManager.get().Name + "." + this;
}
@Override
@ -244,7 +244,7 @@ public class WorldRecreationGenerator implements IChunkProvider {
public MultiChunk(Chunk initial, WorldRecreationGenerator generator) {
pos = initial.getPos();
GlobalUtil.LOGGER.debug(this + ": MultiChunk at {} {} created.", pos.x, pos.z);
ImplUtil.LOGGER.debug(this + ": MultiChunk at {} {} created.", pos.x, pos.z);
this.generator = generator;
map = new ChunkPos[] {
new ChunkPos(pos.x + 0, pos.z - 1),
@ -397,7 +397,7 @@ public class WorldRecreationGenerator implements IChunkProvider {
variations = backVariations;
backVariations = new ArrayList<>();
}
GlobalUtil.LOGGER.debug(generator + ": preferred state of chunk {} {} is now {}", pos.x, pos.z, preferredState);
ImplUtil.LOGGER.debug(generator + ": preferred state of chunk {} {} is now {}", pos.x, pos.z, preferredState);
}
}

View file

@ -8,9 +8,9 @@ import baritone.api.process.ICustomGoalProcess;
import baritone.api.process.PathingCommand;
import baritone.api.process.PathingCommandType;
import com.baseband.client.BaseBand;
import com.baseband.client.Setup;
import com.baseband.client.feature.FeatureManager;
import com.baseband.client.event.events.BaritoneEvent;
import com.baseband.client.util.interact.ChatUtil;
import com.baseband.client.util.interact.IngameLogger;
import net.minecraft.util.math.Vec3d;
public class BaritoneManager {
@ -18,7 +18,7 @@ public class BaritoneManager {
static {
//FUTURE!
BaritoneAPI.getProvider().getPrimaryBaritone().getPathingControlManager().registerProcess(new PauseBaritoneProcess());
BaritoneAPI.getSettings().logger.value = ChatUtil::print;
BaritoneAPI.getSettings().logger.value = IngameLogger::chatPrint;
}
public static IBaritone getBaritone() {
@ -81,7 +81,7 @@ public class BaritoneManager {
@Override
public String displayName0() {
return Setup.get().Name + " Pause";
return FeatureManager.get().Name + " Pause";
}
}
}

View file

@ -1,6 +1,6 @@
package com.baseband.client.util.baritone;
import com.baseband.client.util.misc.GlobalUtil;
import com.baseband.client.util.misc.ImplUtil;
public class BaritonePresenceManager {
@ -20,12 +20,12 @@ public class BaritonePresenceManager {
}
if (IS_BARITONE_PRESENT) {
GlobalUtil.LOGGER.info("Baritone is present!");
ImplUtil.LOGGER.info("Baritone is present!");
try {
BaritoneManager.getBaritone();
} catch (Throwable e) {
GlobalUtil.LOGGER.warn("Baritone is allegedly present but cannot seem to load!");
ImplUtil.LOGGER.warn("Baritone is allegedly present but cannot seem to load!");
IS_BARITONE_PRESENT = false;
}
}

View file

@ -1,6 +1,6 @@
package com.baseband.client.util.interact;
import com.baseband.client.BaseBand;
import com.baseband.client.feature.FeatureManager;
import com.baseband.client.feature.render.Freecam;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityOtherPlayerMP;
@ -49,7 +49,7 @@ public class FreecamPlayer extends EntityOtherPlayerMP
public void onLivingUpdate()
{
if(mc.world == null) {
BaseBand.getFeature(Freecam.class).setEnabled(false);
FeatureManager.getFeature(Freecam.class).setEnabled(false);
return;
}
mc.renderChunksMany = false;

View file

@ -1,6 +1,9 @@
package com.baseband.client.util.interact;
import com.baseband.client.Setup;
import com.baseband.client.feature.FeatureManager;
import com.baseband.client.feature.client.Client;
import com.baseband.client.feature.render.HUD;
import com.baseband.client.util.misc.ImplUtil;
import com.mojang.realmsclient.gui.ChatFormatting;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiChat;
@ -11,18 +14,18 @@ import net.minecraft.util.text.TextFormatting;
import java.util.Random;
public class ChatUtil {
public class IngameLogger {
//forge sucks balls so hard omg
public static void print(String s) {
public static void chatPrint(String s) {
if(Minecraft.getMinecraft().player != null) {
Minecraft.getMinecraft().player.sendMessage(new TextComponentString(ChatFormatting.LIGHT_PURPLE + Setup.get().Name.toLowerCase() + "~ " + ChatFormatting.RESET + s));
Minecraft.getMinecraft().player.sendMessage(new TextComponentString(ChatFormatting.LIGHT_PURPLE + FeatureManager.get().Name.toLowerCase() + "~ " + ChatFormatting.RESET + s));
}
}
public static void print(ITextComponent comp) {
public static void chatPrint(ITextComponent comp) {
Minecraft mc = Minecraft.getMinecraft();
if (mc.ingameGUI != null) {
ITextComponent text = new TextComponentString(Setup.get().Name.toLowerCase() + "~ ").setStyle(new Style().setColor(TextFormatting.LIGHT_PURPLE)).appendSibling(comp);
ITextComponent text = new TextComponentString(FeatureManager.get().Name.toLowerCase() + "~ ").setStyle(new Style().setColor(TextFormatting.LIGHT_PURPLE)).appendSibling(comp);
//noinspection DataFlowIssue
comp.getStyle().setParentStyle(null);
mc.ingameGUI.getChatGUI().printChatMessageWithOptionalDeletion(text, new Random().nextInt());
@ -63,4 +66,22 @@ public class ChatUtil {
Minecraft.getMinecraft().player.sendChatMessage(msg);
}
public static void notify(String text) {
Client c = FeatureManager.getFeature(Client.class);
if(FeatureManager.isFeatureEnabled(HUD.class) && c.notificationDest != Client.NotificationDest.Chat) {
HUD.notifs.add(new HUD.Notification(text));
if(c.notificationDest == Client.NotificationDest.Both)
chatPrint(text);
else
ImplUtil.LOGGER.info(text);
} else
chatPrint(text);
}
public static void notifyAll(String text) {
if(FeatureManager.isFeatureEnabled(HUD.class)) {
HUD.notifs.add(new HUD.Notification(text));
}
chatPrint(text);
}
}

View file

@ -1,7 +1,7 @@
package com.baseband.client.util.interact;
import com.baseband.client.BaseBand;
import com.baseband.client.Setup;
import com.baseband.client.feature.FeatureManager;
import com.baseband.client.util.adapt.ServerPing;
import de.tudbut.tools.Lock;
import net.minecraft.client.network.NetworkPlayerInfo;
@ -55,7 +55,7 @@ public class ServerDataManager {
}
if(pinger == null || !pinger.isAlive()) {
pinger = new Thread(ServerDataManager::getPing, Setup.get().Name + " server pinger");
pinger = new Thread(ServerDataManager::getPing, FeatureManager.get().Name + " server pinger");
pinger.start();
}
}

View file

@ -6,7 +6,7 @@ import org.apache.logging.log4j.Logger;
import java.lang.reflect.Method;
import java.security.SecureRandom;
public class GlobalUtil {
public class ImplUtil {
public static final Logger LOGGER = LogManager.getLogger("BaseBand");
public static final SecureRandom RANDOM = new SecureRandom();
public static final Runnable SHUTDOWN = () -> {

View file

@ -1,6 +1,6 @@
package com.baseband.client.util.net;
import com.baseband.client.BaseBand;
import com.baseband.client.util.interact.IngameLogger;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import net.minecraft.client.Minecraft;
@ -38,7 +38,7 @@ public class ScreenshotHelper extends Thread {
private static void copyAndPrint(StringSelection stringSelection, String string) {
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, stringSelection);
BaseBand.notify("Image uploaded to: " + string);
IngameLogger.notify("Image uploaded to: " + string);
}
@Override

View file

@ -1,6 +1,6 @@
package com.baseband.client.util.net;
import com.baseband.client.util.misc.GlobalUtil;
import com.baseband.client.util.misc.ImplUtil;
import de.tudbut.net.ws.Client;
import de.tudbut.net.ws.ConnectionHandler;
@ -15,8 +15,8 @@ public class WebServiceClient {
client = new Client("azidoazideazi.de", 30000);
//client.addReceiveHook(READER);
} catch (IOException e) {
GlobalUtil.LOGGER.fatal(e);
GlobalUtil.SHUTDOWN.run();
ImplUtil.LOGGER.fatal(e);
ImplUtil.SHUTDOWN.run();
}
}

View file

@ -0,0 +1,17 @@
package com.baseband.client.util.type;
import java.util.ArrayList;
public class KeyManager {
public static final ArrayList<KeyBind> keyBinds = new ArrayList<>();
public static void registerKeyBind(KeyBind key) {
keyBinds.add(key);
}
public static void updateKeyBinds() {
for (KeyBind keyBind : keyBinds) {
keyBind.onTick();
}
}
}