feat: allow to set specific state via toggle cmd

This commit is contained in:
əlemi 2023-02-27 03:46:28 +01:00
parent 38d183a775
commit e992b27d04
Signed by: alemi
GPG key ID: A4895B84D311642C

View file

@ -1,9 +1,8 @@
package ftbsc.bscv.modules;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.ArgumentType;
import com.mojang.brigadier.arguments.BoolArgumentType;
import ftbsc.bscv.BoSCoVicino;
import net.minecraft.command.CommandSource;
import net.minecraft.command.Commands;
import net.minecraftforge.common.ForgeConfigSpec;
@ -34,17 +33,29 @@ public abstract class Module {
.comment(String.format("Enables %s", this.name))
.define("enabled", false);
// TODO: can this be made an util or moved somewhere else?
dispatcher.register(
Commands.literal(this.name.toLowerCase())
.then(
Commands.literal("toggle")
.then(
Commands.argument("state", BoolArgumentType.bool())
.executes( ctx -> {
boolean value = ctx.getArgument("state", Boolean.class);
if (this.enabled.get() ^ value) { // must change
if (value) { this.enable(); }
else { this.disable(); }
}
return 1;
})
)
.executes(ctx -> {
this.toggle();
return 1;
})
)
.executes(ctx -> {
log(String.format("=[ %s ]%s", this.name, this.enabled.get() ? "+" : ""));
log(String.format("%s [%s]", this.name, this.enabled.get() ? "ON" : "OFF"));
// TODO: print all mod options!
return 1;
})