SwizzleArgument.java

net.minecraft.commands.arguments.coordinates.SwizzleArgument

信息

  • 全限定名:net.minecraft.commands.arguments.coordinates.SwizzleArgument
  • 类型:public class
  • 包:net.minecraft.commands.arguments.coordinates
  • 源码路径:src/main/java/net/minecraft/commands/arguments/coordinates/SwizzleArgument.java
  • 起始行号:L15
  • 实现:ArgumentType<EnumSet<Direction.Axis>>
  • 职责:

    TODO

字段/常量

  • EXAMPLES

    • 类型: Collection<String>
    • 修饰符: private static final
    • 源码定位: L16
    • 说明:

      TODO

  • ERROR_INVALID

    • 类型: SimpleCommandExceptionType
    • 修饰符: private static final
    • 源码定位: L17
    • 说明:

      TODO

内部类/嵌套类型

构造器

方法

下面的方法块按源码顺序生成。

public static SwizzleArgument swizzle() @ L19

  • 方法名:swizzle
  • 源码定位:L19
  • 返回类型:SwizzleArgument
  • 修饰符:public static

参数:

说明:

TODO

public static EnumSet<Direction.Axis> getSwizzle(CommandContext<CommandSourceStack> context, String name) @ L23

  • 方法名:getSwizzle
  • 源码定位:L23
  • 返回类型:EnumSet<Direction.Axis>
  • 修饰符:public static

参数:

  • context: CommandContext
  • name: String

说明:

TODO

public EnumSet<Direction.Axis> parse(StringReader reader) @ L27

  • 方法名:parse
  • 源码定位:L27
  • 返回类型:EnumSet<Direction.Axis>
  • 修饰符:public

参数:

  • reader: StringReader

说明:

TODO

public Collection<String> getExamples() @ L49

  • 方法名:getExamples
  • 源码定位:L49
  • 返回类型:Collection
  • 修饰符:public

参数:

说明:

TODO

代码

public class SwizzleArgument implements ArgumentType<EnumSet<Direction.Axis>> {
    private static final Collection<String> EXAMPLES = Arrays.asList("xyz", "x");
    private static final SimpleCommandExceptionType ERROR_INVALID = new SimpleCommandExceptionType(Component.translatable("arguments.swizzle.invalid"));
 
    public static SwizzleArgument swizzle() {
        return new SwizzleArgument();
    }
 
    public static EnumSet<Direction.Axis> getSwizzle(CommandContext<CommandSourceStack> context, String name) {
        return context.getArgument(name, EnumSet.class);
    }
 
    public EnumSet<Direction.Axis> parse(StringReader reader) throws CommandSyntaxException {
        EnumSet<Direction.Axis> result = EnumSet.noneOf(Direction.Axis.class);
 
        while (reader.canRead() && reader.peek() != ' ') {
            char c = reader.read();
 
            Direction.Axis axis = switch (c) {
                case 'x' -> Direction.Axis.X;
                case 'y' -> Direction.Axis.Y;
                case 'z' -> Direction.Axis.Z;
                default -> throw ERROR_INVALID.createWithContext(reader);
            };
            if (result.contains(axis)) {
                throw ERROR_INVALID.createWithContext(reader);
            }
 
            result.add(axis);
        }
 
        return result;
    }
 
    @Override
    public Collection<String> getExamples() {
        return EXAMPLES;
    }
}

引用的其他类