superb-warfare/src/main/java/com/atsuishio/superbwarfare/command/ConfigCommand.java
2025-04-23 00:04:55 +08:00

87 lines
5.2 KiB
Java

package com.atsuishio.superbwarfare.command;
import com.atsuishio.superbwarfare.config.server.ExplosionConfig;
import com.atsuishio.superbwarfare.config.server.MiscConfig;
import com.atsuishio.superbwarfare.config.server.VehicleConfig;
import com.atsuishio.superbwarfare.network.message.receive.ClientTacticalSprintSyncMessage;
import com.mojang.brigadier.arguments.BoolArgumentType;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.network.chat.Component;
import net.neoforged.neoforge.network.PacketDistributor;
public class ConfigCommand {
public static LiteralArgumentBuilder<CommandSourceStack> get() {
return Commands.literal("config").requires(s -> s.hasPermission(0))
.then(Commands.literal("explosionDestroy").requires(s -> s.hasPermission(2)).then(Commands.argument("value", BoolArgumentType.bool()).executes(context -> {
var value = BoolArgumentType.getBool(context, "value");
ExplosionConfig.EXPLOSION_DESTROY.set(value);
ExplosionConfig.EXPLOSION_DESTROY.save();
context.getSource().sendSuccess(() -> Component.translatable(value ? "commands.config.explosion_destroy.enabled" : "commands.config.explosion_destroy.disabled"), true);
return 0;
})))
.then(Commands.literal("collisionDestroy").requires(s -> s.hasPermission(2))
.then(Commands.literal("none").executes(context -> {
VehicleConfig.COLLISION_DESTROY_BLOCKS.set(false);
VehicleConfig.COLLISION_DESTROY_HARD_BLOCKS.set(false);
VehicleConfig.COLLISION_DESTROY_BLOCKS_BEASTLY.set(false);
VehicleConfig.COLLISION_DESTROY_BLOCKS.save();
VehicleConfig.COLLISION_DESTROY_HARD_BLOCKS.save();
VehicleConfig.COLLISION_DESTROY_BLOCKS_BEASTLY.save();
context.getSource().sendSuccess(() -> Component.translatable("commands.config.collision_destroy.none"), true);
return 0;
}))
.then(Commands.literal("soft").executes(context -> {
VehicleConfig.COLLISION_DESTROY_BLOCKS.set(true);
VehicleConfig.COLLISION_DESTROY_HARD_BLOCKS.set(false);
VehicleConfig.COLLISION_DESTROY_BLOCKS_BEASTLY.set(false);
VehicleConfig.COLLISION_DESTROY_BLOCKS.save();
VehicleConfig.COLLISION_DESTROY_HARD_BLOCKS.save();
VehicleConfig.COLLISION_DESTROY_BLOCKS_BEASTLY.save();
context.getSource().sendSuccess(() -> Component.translatable("commands.config.collision_destroy.soft"), true);
return 0;
}))
.then(Commands.literal("hard").executes(context -> {
VehicleConfig.COLLISION_DESTROY_BLOCKS.set(true);
VehicleConfig.COLLISION_DESTROY_HARD_BLOCKS.set(true);
VehicleConfig.COLLISION_DESTROY_BLOCKS_BEASTLY.set(false);
VehicleConfig.COLLISION_DESTROY_BLOCKS.save();
VehicleConfig.COLLISION_DESTROY_HARD_BLOCKS.save();
VehicleConfig.COLLISION_DESTROY_BLOCKS_BEASTLY.save();
context.getSource().sendSuccess(() -> Component.translatable("commands.config.collision_destroy.hard"), true);
return 0;
}))
.then(Commands.literal("beastly").executes(context -> {
VehicleConfig.COLLISION_DESTROY_BLOCKS.set(true);
VehicleConfig.COLLISION_DESTROY_HARD_BLOCKS.set(true);
VehicleConfig.COLLISION_DESTROY_BLOCKS_BEASTLY.set(true);
VehicleConfig.COLLISION_DESTROY_BLOCKS.save();
VehicleConfig.COLLISION_DESTROY_HARD_BLOCKS.save();
VehicleConfig.COLLISION_DESTROY_BLOCKS_BEASTLY.save();
context.getSource().sendSuccess(() -> Component.translatable("commands.config.collision_destroy.beastly"), true);
return 0;
}))
)
.then(Commands.literal("tacticalSprint").requires(s -> s.hasPermission(2)).then(Commands.argument("value", BoolArgumentType.bool()).executes(context -> {
var value = BoolArgumentType.getBool(context, "value");
MiscConfig.ALLOW_TACTICAL_SPRINT.set(value);
MiscConfig.ALLOW_TACTICAL_SPRINT.save();
PacketDistributor.sendToAllPlayers(new ClientTacticalSprintSyncMessage(value));
context.getSource().sendSuccess(() -> Component.translatable(value ? "commands.config.tactical_sprint.enabled" : "commands.config.tactical_sprint.disabled"), true);
return 0;
})));
}
}