Add /gm command for playground
This commit is contained in:
1 parent
4b2d57a0ee
commit
124241182c
2 files changed
+26
-1
No files matched your search
@@ -1,6 +1,7 @@
|
|||||||
package io.ib67.sfcraft.module.room;
|
package io.ib67.sfcraft.module.room;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
import com.mojang.brigadier.Command;
|
||||||
import com.mojang.brigadier.CommandDispatcher;
|
import com.mojang.brigadier.CommandDispatcher;
|
||||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||||
import com.mojang.brigadier.context.CommandContext;
|
import com.mojang.brigadier.context.CommandContext;
|
||||||
@@ -22,6 +23,7 @@ import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
|
|||||||
import net.fabricmc.fabric.api.util.TriState;
|
import net.fabricmc.fabric.api.util.TriState;
|
||||||
import net.minecraft.command.CommandRegistryAccess;
|
import net.minecraft.command.CommandRegistryAccess;
|
||||||
import net.minecraft.command.CommandSource;
|
import net.minecraft.command.CommandSource;
|
||||||
|
import net.minecraft.command.argument.GameModeArgumentType;
|
||||||
import net.minecraft.network.packet.s2c.play.TeamS2CPacket;
|
import net.minecraft.network.packet.s2c.play.TeamS2CPacket;
|
||||||
import net.minecraft.scoreboard.Team;
|
import net.minecraft.scoreboard.Team;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
@@ -103,10 +105,32 @@ public class CreativeRoomModule extends ServerModule {
|
|||||||
private void registerCommand(CommandDispatcher<ServerCommandSource> dispatcher,
|
private void registerCommand(CommandDispatcher<ServerCommandSource> dispatcher,
|
||||||
CommandRegistryAccess registry, CommandManager.RegistrationEnvironment env) {
|
CommandRegistryAccess registry, CommandManager.RegistrationEnvironment env) {
|
||||||
dispatcher.register(
|
dispatcher.register(
|
||||||
LiteralArgumentBuilder.<ServerCommandSource>literal("playground")
|
LiteralArgumentBuilder.<ServerCommandSource>literal("playgrd")
|
||||||
.requires(it -> it.isExecutedByPlayer() && SFConsts.COMMAND_PLAYGROUND.hasPermission(it.getPlayer()))
|
.requires(it -> it.isExecutedByPlayer() && SFConsts.COMMAND_PLAYGROUND.hasPermission(it.getPlayer()))
|
||||||
.executes(this::gotoPlayground)
|
.executes(this::gotoPlayground)
|
||||||
);
|
);
|
||||||
|
dispatcher.register(
|
||||||
|
CommandManager.literal("gm")
|
||||||
|
.then(CommandManager.argument("mode", GameModeArgumentType.gameMode())
|
||||||
|
.requires(it -> it.isExecutedByPlayer() && SFConsts.COMMAND_PLAYGROUND_GAMEMODE.hasPermission(it.getPlayer()))
|
||||||
|
.executes(this::onGameMode)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int onGameMode(CommandContext<ServerCommandSource> ctx) {
|
||||||
|
var src = ctx.getSource();
|
||||||
|
if (src instanceof ServerCommandSource source && source.getPlayer() != null) {
|
||||||
|
var p = source.getPlayer();
|
||||||
|
var mode = ctx.getArgument("mode", GameMode.class);
|
||||||
|
if (p.getServerWorld().getRegistryKey().equals(CreativeSpaceRoom.WORLD)) {
|
||||||
|
p.changeGameMode(mode);
|
||||||
|
p.sendMessage(Text.of("Your gamemode has been changed to "+mode.asString()));
|
||||||
|
}else{
|
||||||
|
p.sendMessage(Text.of("You can only use this in playground!"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Command.SINGLE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int gotoPlayground(CommandContext<ServerCommandSource> serverCommandSourceCommandContext) {
|
private int gotoPlayground(CommandContext<ServerCommandSource> serverCommandSourceCommandContext) {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ public class SFConsts {
|
|||||||
public static final Permission<PlayerEntity> COMMAND_LISTPERM = ofSFCPermission("command.listperm", false);
|
public static final Permission<PlayerEntity> COMMAND_LISTPERM = ofSFCPermission("command.listperm", false);
|
||||||
public static final Permission<PlayerEntity> COMMAND_LISTGEO = ofSFCPermission("command.listgeo", false);
|
public static final Permission<PlayerEntity> COMMAND_LISTGEO = ofSFCPermission("command.listgeo", false);
|
||||||
public static final Permission<PlayerEntity> COMMAND_PLAYGROUND = ofSFCPermission("command.playground", true);
|
public static final Permission<PlayerEntity> COMMAND_PLAYGROUND = ofSFCPermission("command.playground", true);
|
||||||
|
public static final Permission<PlayerEntity> COMMAND_PLAYGROUND_GAMEMODE = ofSFCPermission("command.playground.gamemode", true);
|
||||||
public static final Permission<PlayerEntity> COMMAND_RECO = ofSFCPermission("command.reco", true);
|
public static final Permission<PlayerEntity> COMMAND_RECO = ofSFCPermission("command.reco", true);
|
||||||
|
|
||||||
public static Permission<PlayerEntity> ofSFCPermission(String key, boolean byDefault) {
|
public static Permission<PlayerEntity> ofSFCPermission(String key, boolean byDefault) {
|
||||||
|
|||||||
Reference in new issue
Block a user