Add /god command
This commit is contained in:
parent
af6132a3e7
commit
4899a2c14d
2 changed files with 77 additions and 0 deletions
|
@ -85,6 +85,8 @@ public class RccServer implements ModInitializer {
|
||||||
CommandRegistrationCallback.EVENT.register(TellCommand::register);
|
CommandRegistrationCallback.EVENT.register(TellCommand::register);
|
||||||
CommandRegistrationCallback.EVENT.register(ReplyCommand::register);
|
CommandRegistrationCallback.EVENT.register(ReplyCommand::register);
|
||||||
FlyCommand.register(dispatcher, registryAccess, environment);
|
FlyCommand.register(dispatcher, registryAccess, environment);
|
||||||
|
GodCommand.register(dispatcher, registryAccess, environment);
|
||||||
|
});
|
||||||
|
|
||||||
ServerLifecycleEvents.SERVER_STARTED.register(server -> {
|
ServerLifecycleEvents.SERVER_STARTED.register(server -> {
|
||||||
luckPerms = LuckPermsProvider.get();
|
luckPerms = LuckPermsProvider.get();
|
||||||
|
|
75
src/main/java/cc/reconnected/server/commands/GodCommand.java
Normal file
75
src/main/java/cc/reconnected/server/commands/GodCommand.java
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
package cc.reconnected.server.commands;
|
||||||
|
|
||||||
|
import com.mojang.brigadier.CommandDispatcher;
|
||||||
|
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||||
|
import me.lucko.fabric.api.permissions.v0.Permissions;
|
||||||
|
import net.minecraft.command.CommandRegistryAccess;
|
||||||
|
import net.minecraft.command.CommandSource;
|
||||||
|
import net.minecraft.server.command.CommandManager;
|
||||||
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
|
import net.minecraft.text.Style;
|
||||||
|
import net.minecraft.text.Text;
|
||||||
|
import net.minecraft.util.Formatting;
|
||||||
|
|
||||||
|
import static net.minecraft.server.command.CommandManager.argument;
|
||||||
|
import static net.minecraft.server.command.CommandManager.literal;
|
||||||
|
|
||||||
|
public class GodCommand {
|
||||||
|
public static void register(CommandDispatcher<ServerCommandSource> dispatcher, CommandRegistryAccess registryAccess, CommandManager.RegistrationEnvironment environment) {
|
||||||
|
var rootCommand = literal("god")
|
||||||
|
.requires(Permissions.require("rcc.command.god", 3))
|
||||||
|
.executes(context -> {
|
||||||
|
if (!context.getSource().isExecutedByPlayer()) {
|
||||||
|
context.getSource().sendFeedback(() -> Text.of("This command can only be executed by players!"), false);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
var player = context.getSource().getPlayer();
|
||||||
|
context.getSource().sendFeedback(() -> toggleGod(player), true);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
})
|
||||||
|
.then(argument("player", StringArgumentType.word())
|
||||||
|
.suggests((context, builder) -> {
|
||||||
|
var playerManager = context.getSource().getServer().getPlayerManager();
|
||||||
|
return CommandSource.suggestMatching(
|
||||||
|
playerManager.getPlayerNames(),
|
||||||
|
builder);
|
||||||
|
})
|
||||||
|
.executes(context -> {
|
||||||
|
var playerName = StringArgumentType.getString(context, "player");
|
||||||
|
var player = context.getSource().getServer().getPlayerManager().getPlayer(playerName);
|
||||||
|
if(player == null) {
|
||||||
|
context.getSource().sendFeedback(() -> Text.literal("Player not found").setStyle(Style.EMPTY.withColor(Formatting.RED)), false);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
context.getSource().sendFeedback(() -> toggleGod(player), true);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}));
|
||||||
|
|
||||||
|
dispatcher.register(rootCommand);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Text toggleGod(ServerPlayerEntity player) {
|
||||||
|
var abilities = player.getAbilities();
|
||||||
|
|
||||||
|
abilities.invulnerable = !abilities.invulnerable;
|
||||||
|
//player.setInvulnerable(!player.isInvulnerable());
|
||||||
|
player.sendAbilitiesUpdate();
|
||||||
|
|
||||||
|
return Text.literal(
|
||||||
|
abilities.invulnerable ?
|
||||||
|
"God mode enabled" :
|
||||||
|
"God mode disabled"
|
||||||
|
)
|
||||||
|
.append(" for ")
|
||||||
|
.append(player.getDisplayName())
|
||||||
|
.setStyle(Style.EMPTY.withColor(
|
||||||
|
abilities.invulnerable ?
|
||||||
|
Formatting.GREEN :
|
||||||
|
Formatting.RED
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue