ArgumentTypeInfos.java

net.minecraft.commands.synchronization.ArgumentTypeInfos

信息

  • 全限定名:net.minecraft.commands.synchronization.ArgumentTypeInfos
  • 类型:public class
  • 包:net.minecraft.commands.synchronization
  • 源码路径:src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java
  • 起始行号:L67
  • 职责:

    TODO

字段/常量

  • BY_CLASS
    • 类型: Map<Class<?>,ArgumentTypeInfo<?,?>>
    • 修饰符: private static final
    • 源码定位: L68
    • 说明:

      TODO

内部类/嵌套类型

构造器

方法

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

private static <A extends ArgumentType<?>,T extends ArgumentTypeInfo.Template<A>> ArgumentTypeInfo<A,T> register(Registry<ArgumentTypeInfo<?,?>> registry, String id, Class<?extends A> brigadierType, ArgumentTypeInfo<A,T> info) @ L70

参数:

  • registry: Registry<ArgumentTypeInfo>
  • id: String
  • brigadierType: Class<?extends A>
  • info: ArgumentTypeInfo<A,T>

说明:

TODO

public static ArgumentTypeInfo<?,?> bootstrap(Registry<ArgumentTypeInfo<?,?>> registry) @ L77

  • 方法名:bootstrap
  • 源码定位:L77
  • 返回类型:ArgumentTypeInfo
  • 修饰符:public static

参数:

  • registry: Registry<ArgumentTypeInfo>

说明:

TODO

private static <T extends ArgumentType<?>> Class<T> fixClassType(Class<?super T> cls) @ L144

  • 方法名:fixClassType
  • 源码定位:L144
  • 返回类型:<T extends ArgumentType<?>> Class
  • 修饰符:private static

参数:

  • cls: Class<?super T>

说明:

TODO

public static boolean isClassRecognized(Class<?> cls) @ L148

  • 方法名:isClassRecognized
  • 源码定位:L148
  • 返回类型:boolean
  • 修饰符:public static

参数:

  • cls: Class<?>

说明:

TODO

public static <A extends ArgumentType<?>> ArgumentTypeInfo<A,?> byClass(A argumentType) @ L152

  • 方法名:byClass
  • 源码定位:L152
  • 返回类型:<A extends ArgumentType> ArgumentTypeInfo
  • 修饰符:public static

参数:

  • argumentType: A

说明:

TODO

public static <A extends ArgumentType<?>> ArgumentTypeInfo.Template<A> unpack(A argumentType) @ L161

参数:

  • argumentType: A

说明:

TODO

代码

public class ArgumentTypeInfos {
    private static final Map<Class<?>, ArgumentTypeInfo<?, ?>> BY_CLASS = Maps.newHashMap();
 
    private static <A extends ArgumentType<?>, T extends ArgumentTypeInfo.Template<A>> ArgumentTypeInfo<A, T> register(
        Registry<ArgumentTypeInfo<?, ?>> registry, String id, Class<? extends A> brigadierType, ArgumentTypeInfo<A, T> info
    ) {
        BY_CLASS.put(brigadierType, info);
        return Registry.register(registry, id, info);
    }
 
    public static ArgumentTypeInfo<?, ?> bootstrap(Registry<ArgumentTypeInfo<?, ?>> registry) {
        register(registry, "brigadier:bool", BoolArgumentType.class, SingletonArgumentInfo.contextFree(BoolArgumentType::bool));
        register(registry, "brigadier:float", FloatArgumentType.class, new FloatArgumentInfo());
        register(registry, "brigadier:double", DoubleArgumentType.class, new DoubleArgumentInfo());
        register(registry, "brigadier:integer", IntegerArgumentType.class, new IntegerArgumentInfo());
        register(registry, "brigadier:long", LongArgumentType.class, new LongArgumentInfo());
        register(registry, "brigadier:string", StringArgumentType.class, new StringArgumentSerializer());
        register(registry, "entity", EntityArgument.class, new EntityArgument.Info());
        register(registry, "game_profile", GameProfileArgument.class, SingletonArgumentInfo.contextFree(GameProfileArgument::gameProfile));
        register(registry, "block_pos", BlockPosArgument.class, SingletonArgumentInfo.contextFree(BlockPosArgument::blockPos));
        register(registry, "column_pos", ColumnPosArgument.class, SingletonArgumentInfo.contextFree(ColumnPosArgument::columnPos));
        register(registry, "vec3", Vec3Argument.class, SingletonArgumentInfo.contextFree(Vec3Argument::vec3));
        register(registry, "vec2", Vec2Argument.class, SingletonArgumentInfo.contextFree(Vec2Argument::vec2));
        register(registry, "block_state", BlockStateArgument.class, SingletonArgumentInfo.contextAware(BlockStateArgument::block));
        register(registry, "block_predicate", BlockPredicateArgument.class, SingletonArgumentInfo.contextAware(BlockPredicateArgument::blockPredicate));
        register(registry, "item_stack", ItemArgument.class, SingletonArgumentInfo.contextAware(ItemArgument::item));
        register(registry, "item_predicate", ItemPredicateArgument.class, SingletonArgumentInfo.contextAware(ItemPredicateArgument::itemPredicate));
        register(registry, "color", ColorArgument.class, SingletonArgumentInfo.contextFree(ColorArgument::color));
        register(registry, "hex_color", HexColorArgument.class, SingletonArgumentInfo.contextFree(HexColorArgument::hexColor));
        register(registry, "component", ComponentArgument.class, SingletonArgumentInfo.contextAware(ComponentArgument::textComponent));
        register(registry, "style", StyleArgument.class, SingletonArgumentInfo.contextAware(StyleArgument::style));
        register(registry, "message", MessageArgument.class, SingletonArgumentInfo.contextFree(MessageArgument::message));
        register(registry, "nbt_compound_tag", CompoundTagArgument.class, SingletonArgumentInfo.contextFree(CompoundTagArgument::compoundTag));
        register(registry, "nbt_tag", NbtTagArgument.class, SingletonArgumentInfo.contextFree(NbtTagArgument::nbtTag));
        register(registry, "nbt_path", NbtPathArgument.class, SingletonArgumentInfo.contextFree(NbtPathArgument::nbtPath));
        register(registry, "objective", ObjectiveArgument.class, SingletonArgumentInfo.contextFree(ObjectiveArgument::objective));
        register(registry, "objective_criteria", ObjectiveCriteriaArgument.class, SingletonArgumentInfo.contextFree(ObjectiveCriteriaArgument::criteria));
        register(registry, "operation", OperationArgument.class, SingletonArgumentInfo.contextFree(OperationArgument::operation));
        register(registry, "particle", ParticleArgument.class, SingletonArgumentInfo.contextAware(ParticleArgument::particle));
        register(registry, "angle", AngleArgument.class, SingletonArgumentInfo.contextFree(AngleArgument::angle));
        register(registry, "rotation", RotationArgument.class, SingletonArgumentInfo.contextFree(RotationArgument::rotation));
        register(registry, "scoreboard_slot", ScoreboardSlotArgument.class, SingletonArgumentInfo.contextFree(ScoreboardSlotArgument::displaySlot));
        register(registry, "score_holder", ScoreHolderArgument.class, new ScoreHolderArgument.Info());
        register(registry, "swizzle", SwizzleArgument.class, SingletonArgumentInfo.contextFree(SwizzleArgument::swizzle));
        register(registry, "team", TeamArgument.class, SingletonArgumentInfo.contextFree(TeamArgument::team));
        register(registry, "item_slot", SlotArgument.class, SingletonArgumentInfo.contextFree(SlotArgument::slot));
        register(registry, "item_slots", SlotsArgument.class, SingletonArgumentInfo.contextFree(SlotsArgument::slots));
        register(registry, "resource_location", IdentifierArgument.class, SingletonArgumentInfo.contextFree(IdentifierArgument::id));
        register(registry, "function", FunctionArgument.class, SingletonArgumentInfo.contextFree(FunctionArgument::functions));
        register(registry, "entity_anchor", EntityAnchorArgument.class, SingletonArgumentInfo.contextFree(EntityAnchorArgument::anchor));
        register(registry, "int_range", RangeArgument.Ints.class, SingletonArgumentInfo.contextFree(RangeArgument::intRange));
        register(registry, "float_range", RangeArgument.Floats.class, SingletonArgumentInfo.contextFree(RangeArgument::floatRange));
        register(registry, "dimension", DimensionArgument.class, SingletonArgumentInfo.contextFree(DimensionArgument::dimension));
        register(registry, "gamemode", GameModeArgument.class, SingletonArgumentInfo.contextFree(GameModeArgument::gameMode));
        register(registry, "time", TimeArgument.class, new TimeArgument.Info());
        register(registry, "resource_or_tag", fixClassType(ResourceOrTagArgument.class), new ResourceOrTagArgument.Info<Object>());
        register(registry, "resource_or_tag_key", fixClassType(ResourceOrTagKeyArgument.class), new ResourceOrTagKeyArgument.Info<Object>());
        register(registry, "resource", fixClassType(ResourceArgument.class), new ResourceArgument.Info<Object>());
        register(registry, "resource_key", fixClassType(ResourceKeyArgument.class), new ResourceKeyArgument.Info<Object>());
        register(registry, "resource_selector", fixClassType(ResourceSelectorArgument.class), new ResourceSelectorArgument.Info<Object>());
        register(registry, "template_mirror", TemplateMirrorArgument.class, SingletonArgumentInfo.contextFree(TemplateMirrorArgument::templateMirror));
        register(registry, "template_rotation", TemplateRotationArgument.class, SingletonArgumentInfo.contextFree(TemplateRotationArgument::templateRotation));
        register(registry, "heightmap", HeightmapTypeArgument.class, SingletonArgumentInfo.contextFree(HeightmapTypeArgument::heightmap));
        register(registry, "loot_table", ResourceOrIdArgument.LootTableArgument.class, SingletonArgumentInfo.contextAware(ResourceOrIdArgument::lootTable));
        register(
            registry,
            "loot_predicate",
            ResourceOrIdArgument.LootPredicateArgument.class,
            SingletonArgumentInfo.contextAware(ResourceOrIdArgument::lootPredicate)
        );
        register(
            registry, "loot_modifier", ResourceOrIdArgument.LootModifierArgument.class, SingletonArgumentInfo.contextAware(ResourceOrIdArgument::lootModifier)
        );
        register(registry, "dialog", ResourceOrIdArgument.DialogArgument.class, SingletonArgumentInfo.contextAware(ResourceOrIdArgument::dialog));
        return register(registry, "uuid", UuidArgument.class, SingletonArgumentInfo.contextFree(UuidArgument::uuid));
    }
 
    private static <T extends ArgumentType<?>> Class<T> fixClassType(Class<? super T> cls) {
        return (Class<T>)cls;
    }
 
    public static boolean isClassRecognized(Class<?> cls) {
        return BY_CLASS.containsKey(cls);
    }
 
    public static <A extends ArgumentType<?>> ArgumentTypeInfo<A, ?> byClass(A argumentType) {
        ArgumentTypeInfo<?, ?> result = BY_CLASS.get(argumentType.getClass());
        if (result == null) {
            throw new IllegalArgumentException(String.format(Locale.ROOT, "Unrecognized argument type %s (%s)", argumentType, argumentType.getClass()));
        } else {
            return (ArgumentTypeInfo<A, ?>)result;
        }
    }
 
    public static <A extends ArgumentType<?>> ArgumentTypeInfo.Template<A> unpack(A argumentType) {
        return byClass(argumentType).unpack(argumentType);
    }
}

引用的其他类

  • EntityArgument

    • 引用位置: 方法调用/构造调用
    • 关联成员: EntityArgument.Info(), Info()
  • ScoreHolderArgument

    • 引用位置: 方法调用/构造调用
    • 关联成员: Info(), ScoreHolderArgument.Info()
  • TimeArgument

    • 引用位置: 方法调用/构造调用
    • 关联成员: Info(), TimeArgument.Info()
  • ArgumentTypeInfo

    • 引用位置: 参数/字段/返回值
  • SingletonArgumentInfo

    • 引用位置: 方法调用
    • 关联成员: SingletonArgumentInfo.contextAware(), SingletonArgumentInfo.contextFree()
  • DoubleArgumentInfo

    • 引用位置: 构造调用
    • 关联成员: DoubleArgumentInfo()
  • FloatArgumentInfo

    • 引用位置: 构造调用
    • 关联成员: FloatArgumentInfo()
  • IntegerArgumentInfo

    • 引用位置: 构造调用
    • 关联成员: IntegerArgumentInfo()
  • LongArgumentInfo

    • 引用位置: 构造调用
    • 关联成员: LongArgumentInfo()
  • StringArgumentSerializer

    • 引用位置: 构造调用
    • 关联成员: StringArgumentSerializer()
  • Registry

    • 引用位置: 参数/方法调用
    • 关联成员: Registry.register()