Remove Custom Brigadier argument
This commit is contained in:
@@ -1,35 +0,0 @@
|
||||
package id.dartokloning.lobbysystems;
|
||||
|
||||
import com.mojang.brigadier.StringReader;
|
||||
import com.mojang.brigadier.arguments.ArgumentType;
|
||||
import com.mojang.brigadier.context.CommandContext;
|
||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||
|
||||
/**
|
||||
* Brigadier argument type for Minecraft resource/dimension identifiers such as
|
||||
* {@code minecraft:lobby}. Vanilla Brigadier's word() does not accept ':',
|
||||
* while greedyString() consumes following arguments. This parser reads exactly
|
||||
* one whitespace-delimited token and therefore works correctly in the middle
|
||||
* of commands such as /ls gamemode set <dimension> <mode>.
|
||||
*/
|
||||
public final class DimensionIdArgumentType implements ArgumentType<String> {
|
||||
private DimensionIdArgumentType() {
|
||||
}
|
||||
|
||||
public static DimensionIdArgumentType dimensionId() {
|
||||
return new DimensionIdArgumentType();
|
||||
}
|
||||
|
||||
public static String getDimensionId(CommandContext<?> context, String name) {
|
||||
return context.getArgument(name, String.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parse(StringReader reader) throws CommandSyntaxException {
|
||||
int start = reader.getCursor();
|
||||
while (reader.canRead() && !Character.isWhitespace(reader.peek())) {
|
||||
reader.skip();
|
||||
}
|
||||
return reader.getString().substring(start, reader.getCursor());
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.commands.Commands;
|
||||
import net.minecraft.commands.SharedSuggestionProvider;
|
||||
import net.minecraft.commands.arguments.IdentifierArgument;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
@@ -148,26 +149,26 @@ public final class LobbySystemsMod implements ModInitializer {
|
||||
true,
|
||||
true))))
|
||||
.then(Commands.literal("gamerule")
|
||||
.then(Commands.argument("dimension", DimensionIdArgumentType.dimensionId())
|
||||
.then(Commands.argument("dimension", IdentifierArgument.id())
|
||||
.suggests((ctx, builder) -> SharedSuggestionProvider.suggestResource(
|
||||
ctx.getSource().getServer().levelKeys().stream().map(ResourceKey::identifier), builder))
|
||||
.executes(ctx -> listGameRules(
|
||||
ctx.getSource(),
|
||||
ctx.getSource().getServer(),
|
||||
DimensionIdArgumentType.getDimensionId(ctx, "dimension"),
|
||||
IdentifierArgument.getId(ctx, "dimension").toString(),
|
||||
1))
|
||||
.then(Commands.literal("--page")
|
||||
.then(Commands.argument("page", IntegerArgumentType.integer(1))
|
||||
.executes(ctx -> listGameRules(
|
||||
ctx.getSource(),
|
||||
ctx.getSource().getServer(),
|
||||
DimensionIdArgumentType.getDimensionId(ctx, "dimension"),
|
||||
IdentifierArgument.getId(ctx, "dimension").toString(),
|
||||
IntegerArgumentType.getInteger(ctx, "page")))))))
|
||||
.then(Commands.literal("gamemode")
|
||||
.then(Commands.literal("list")
|
||||
.executes(ctx -> listDimensionGameModes(ctx.getSource())))
|
||||
.then(Commands.literal("set")
|
||||
.then(Commands.argument("dimension", DimensionIdArgumentType.dimensionId())
|
||||
.then(Commands.argument("dimension", IdentifierArgument.id())
|
||||
.suggests((ctx, builder) -> SharedSuggestionProvider.suggestResource(
|
||||
ctx.getSource().getServer().levelKeys().stream().map(ResourceKey::identifier), builder))
|
||||
.then(Commands.argument("mode", StringArgumentType.word())
|
||||
@@ -176,21 +177,21 @@ public final class LobbySystemsMod implements ModInitializer {
|
||||
.executes(ctx -> setDimensionGameMode(
|
||||
ctx.getSource(),
|
||||
ctx.getSource().getServer(),
|
||||
DimensionIdArgumentType.getDimensionId(ctx, "dimension"),
|
||||
IdentifierArgument.getId(ctx, "dimension").toString(),
|
||||
StringArgumentType.getString(ctx, "mode"))))))
|
||||
.then(Commands.literal("remove")
|
||||
.then(Commands.argument("dimension", DimensionIdArgumentType.dimensionId())
|
||||
.then(Commands.argument("dimension", IdentifierArgument.id())
|
||||
.suggests((ctx, builder) -> SharedSuggestionProvider.suggestResource(
|
||||
ctx.getSource().getServer().levelKeys().stream().map(ResourceKey::identifier), builder))
|
||||
.executes(ctx -> removeDimensionGameMode(
|
||||
ctx.getSource(),
|
||||
DimensionIdArgumentType.getDimensionId(ctx, "dimension")))))
|
||||
.then(Commands.argument("dimension", DimensionIdArgumentType.dimensionId())
|
||||
IdentifierArgument.getId(ctx, "dimension").toString()))))
|
||||
.then(Commands.argument("dimension", IdentifierArgument.id())
|
||||
.suggests((ctx, builder) -> SharedSuggestionProvider.suggestResource(
|
||||
ctx.getSource().getServer().levelKeys().stream().map(ResourceKey::identifier), builder))
|
||||
.executes(ctx -> showDimensionGameMode(
|
||||
ctx.getSource(),
|
||||
DimensionIdArgumentType.getDimensionId(ctx, "dimension")))))
|
||||
IdentifierArgument.getId(ctx, "dimension").toString()))))
|
||||
.then(Commands.literal("portal")
|
||||
.then(Commands.literal("create")
|
||||
.then(Commands.argument("name", StringArgumentType.word())
|
||||
|
||||
Reference in New Issue
Block a user