add experimental features
This commit is contained in:
parent
87f01f596f
commit
e5376425ea
10 changed files with 88 additions and 5 deletions
|
@ -33,6 +33,7 @@ public class DevStub implements IFMLLoadingPlugin {
|
|||
LoadHandler.data.set("release-branch", false);
|
||||
LoadHandler.data.set("branch", "[dev]");
|
||||
LoadHandler.data.set("username", "root");
|
||||
LoadHandler.data.set("load-experimental", true);
|
||||
LoadHandler.data.set("disabled-modules", new TCNArray());
|
||||
TCNArray array = new TCNArray();
|
||||
LoadHandler.data.set("do-not-join", array);
|
||||
|
|
|
@ -7,6 +7,8 @@ import de.com.baseband.client.feature.modules.chat.*;
|
|||
import de.com.baseband.client.feature.modules.client.*;
|
||||
import de.com.baseband.client.feature.modules.combat.AutoKill;
|
||||
import de.com.baseband.client.feature.modules.combat.AutoTotem;
|
||||
import de.com.baseband.client.feature.modules.experimental.NoParticles;
|
||||
import de.com.baseband.client.feature.modules.experimental.PlayerSelector;
|
||||
import de.com.baseband.client.feature.modules.movement.*;
|
||||
import de.com.baseband.client.feature.modules.ingame.AutoRespawn;
|
||||
import de.com.baseband.client.feature.modules.ingame.InteractionTweaks;
|
||||
|
@ -65,10 +67,12 @@ public class Setup {
|
|||
new MidClick(),
|
||||
new Nametags(),
|
||||
new NoFall(),
|
||||
new NoParticles(),
|
||||
new NoRender(),
|
||||
new NoSlowDown(),
|
||||
new Notifier(),
|
||||
new Ping(),
|
||||
new PlayerSelector(),
|
||||
new RenderFun(),
|
||||
new Say(),
|
||||
new SeedOverlay(),
|
||||
|
|
|
@ -17,6 +17,7 @@ public enum Category {
|
|||
RENDER("Render", Render.class),
|
||||
INGAME("World & Interactions", Ingame.class),
|
||||
CLIENT("Client", ClientCategory.class),
|
||||
EXPERIMENTAL("Experimental", Experimental.class),
|
||||
COMMAND("Commands", Command.class, false),
|
||||
BACKGROUND("Background", Background.class, false),
|
||||
;
|
||||
|
|
|
@ -55,6 +55,11 @@ public abstract class Feature extends ToggleButton implements SetCommand {
|
|||
required.addAll(Arrays.asList(requiredAnnotation.value()));
|
||||
}
|
||||
|
||||
final void preInit() {
|
||||
category = Category.fromCategory(getClass());
|
||||
enabled = defaultEnable();
|
||||
}
|
||||
|
||||
// feature methods
|
||||
|
||||
protected boolean defaultEnable() {
|
||||
|
@ -110,9 +115,6 @@ public abstract class Feature extends ToggleButton implements SetCommand {
|
|||
public final void register(Minecraft mc) {
|
||||
this.mc = mc;
|
||||
|
||||
category = Category.fromCategory(getClass());
|
||||
enabled = defaultEnable();
|
||||
|
||||
this.text = toString();
|
||||
|
||||
subComponents.clear();
|
||||
|
@ -324,7 +326,7 @@ public abstract class Feature extends ToggleButton implements SetCommand {
|
|||
protected boolean tryEnable() {
|
||||
for (Class<? extends Feature> feature : required) {
|
||||
if(!Features.isFeatureEnabled(feature)) {
|
||||
BaseBand.notify("§c" + this + " cannot work without " + feature + ".");
|
||||
BaseBand.notify("§c" + this + " cannot work without " + Features.getFeature(feature) + ".");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -342,6 +344,8 @@ public abstract class Feature extends ToggleButton implements SetCommand {
|
|||
public boolean canExist() {
|
||||
if(LoadHandler.data.getArray("disabled-modules").contains(toString()))
|
||||
return false;
|
||||
if(category == Category.EXPERIMENTAL && LoadHandler.data.getBoolean("load-experimental") != Boolean.TRUE)
|
||||
return false;
|
||||
for (Class<? extends Feature> feature : required) {
|
||||
if(!Features.willFeatureExist(feature)) {
|
||||
return false;
|
||||
|
|
|
@ -15,7 +15,8 @@ public class Features {
|
|||
ArrayList<Feature> filteredFeatures = new ArrayList<>(Arrays.asList(Setup.get().Features));
|
||||
for (int i = 0; i < filteredFeatures.size(); i++) {
|
||||
Feature value = filteredFeatures.get(i);
|
||||
value.Setup = de.com.baseband.client.Setup.get();
|
||||
value.Setup = Setup.get();
|
||||
value.preInit();
|
||||
try {
|
||||
if (!value.canExist()) {
|
||||
filteredFeatures.remove(i--);
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
package de.com.baseband.client.feature.category;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Target(ElementType.TYPE)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface Experimental {
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package de.com.baseband.client.feature.modules.experimental;
|
||||
|
||||
import de.com.baseband.client.event.events.PacketEvent;
|
||||
import de.com.baseband.client.feature.Feature;
|
||||
import de.com.baseband.client.feature.category.Experimental;
|
||||
import net.minecraft.network.play.server.SPacketParticles;
|
||||
|
||||
@Experimental
|
||||
public class NoParticles extends Feature {
|
||||
|
||||
public void onPacket(PacketEvent.Receive event) {
|
||||
if(event.getPacket() instanceof SPacketParticles) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TBM:NoParticles";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package de.com.baseband.client.feature.modules.experimental;
|
||||
|
||||
import de.com.baseband.client.feature.Feature;
|
||||
import de.com.baseband.client.feature.category.Experimental;
|
||||
import de.com.baseband.client.feature.modules.render.HUD;
|
||||
import de.com.baseband.client.registry.annotation.Requires;
|
||||
|
||||
@Experimental
|
||||
@Requires(HUD.class)
|
||||
public class PlayerSelector extends Feature {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "PlayerSelector";
|
||||
}
|
||||
}
|
|
@ -158,6 +158,12 @@ public class Loader implements Util {
|
|||
.option("Configure BaseBand", x -> {
|
||||
x.data.setIfAbsent("disabled-modules", new TCNArray());
|
||||
x.newScreen()
|
||||
.option(ClientBootUtil.toggleLabel(x.data.getBoolean("load-experimental") == Boolean.TRUE, "Experimental features"),
|
||||
ClientBootUtil.toggle(
|
||||
() -> x.data.getBoolean("load-experimental"),
|
||||
"Experimental features",
|
||||
() -> x.data.set("load-experimental", true),
|
||||
() -> x.data.set("load-experimental", false)))
|
||||
.option(ClientBootUtil.moduleToggleLabel(x, "Spotify"), ClientBootUtil.moduleToggle("Spotify"))
|
||||
.option(ClientBootUtil.moduleToggleLabel(x, "Baritone"), ClientBootUtil.moduleToggle("Baritone"))
|
||||
.option(ClientBootUtil.moduleToggleLabel(x, "AltControl"), ClientBootUtil.moduleToggle("AltControl"))
|
||||
|
|
|
@ -4,8 +4,26 @@ import de.com.baseband.clientboot.CBCallback;
|
|||
import de.com.baseband.clientboot.ClientBoot;
|
||||
import de.tudbut.parsing.TCNArray;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class ClientBootUtil {
|
||||
|
||||
public static String toggleLabel(boolean cond, String name) {
|
||||
return !cond ? "Enable " + name : "Disable " + name;
|
||||
}
|
||||
|
||||
public static CBCallback toggle(Supplier<Boolean> condition, String name, Runnable enable, Runnable disable) {
|
||||
return x -> {
|
||||
if(condition.get() == Boolean.TRUE) {
|
||||
x.currentOption().name = name + " disabled.";
|
||||
disable.run();
|
||||
} else {
|
||||
x.currentOption().name = name + " enabled.";
|
||||
enable.run();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static CBCallback moduleToggle(String module) {
|
||||
return x -> {
|
||||
TCNArray disabledModules = x.data.getArray("disabled-modules");
|
||||
|
|
Loading…
Add table
Reference in a new issue