# 如果你注册了全新 ArgumentTypeInfo，你需要知道的事

考虑到 TeaCon 2023 出现了两次同类问题，特撰写此教程以供不时之需：

在 Minecraft 1.20 和 1.20.1 的 Forge 下，你要注册两遍 `ArgumentTypeInfo`：


1. 第一遍是给 `ForgeRegistry<ArgumengType<?>>` 的，你可以用 `DeferredRegister`，也可以考虑直接走事件
2. 第二遍是给 `ArgumentTypeInfos` 的。你需要调用这个类下的 `registerByClass` 方法。注意这个方法是 Forge 自己加的。在别的地方（NeoForge 除外）是没有的。

两次注册缺一不可。若缺失一次注册，可能会引发各种难以调试的问题。

参考代码（来自 [AreaControl](https://github.com/teaconmc/AreaControl/blob/1.20-forge/src/main/java/org/teacon/areacontrol/AreaControlPreSetup.java)）：

```java
@Mod.EventBusSubscriber(modid = "area_control", bus = Mod.EventBusSubscriber.Bus.MOD)
public class AreaControlPreSetup {

    // 这个记得要注册进 Mod 的事件总线，也就是 FMLJavaModLoadingContext.get().getModEventBus() 那个。
    static final DeferredRegister<ArgumentTypeInfo<?, ?>> ARG_TYPES = DeferredRegister.create(ForgeRegistries.COMMAND_ARGUMENT_TYPES, "area_control");

    static final RegistryObject<ArgumentTypeInfo<AreaPropertyArgument, ?>> AREA_PROPERTY_ARG_TYPE = ARG_TYPES.register("area_property", () -> SingletonArgumentInfo.contextFree(AreaPropertyArgument::areaProperty));
    static final RegistryObject<ArgumentTypeInfo<DirectionArgument, ?>> DIRECTION_ARG_TYPE = ARG_TYPES.register("direction", () -> SingletonArgumentInfo.contextFree(DirectionArgument::direction));

    static final RegistryObject<ArgumentTypeInfo<GroupArgument, ?>> GROUP_ARG_TYPE = ARG_TYPES.register("group", () -> SingletonArgumentInfo.contextFree(GroupArgument::group));

    @SubscribeEvent
    public static void setup(FMLCommonSetupEvent event) {
        ArgumentTypeInfos.registerByClass(AreaPropertyArgument.class, AREA_PROPERTY_ARG_TYPE.get());
        ArgumentTypeInfos.registerByClass(DirectionArgument.class, DIRECTION_ARG_TYPE.get());
        ArgumentTypeInfos.registerByClass(GroupArgument.class, GROUP_ARG_TYPE.get());

        AreaSelectorOption.register();
    }
}
```

---

**Documents**

- [TeaCon 2023 最终整合包下载地址](https://wiki.teacon.cn/s/2023/doc/teacon-2023-YTTGpQfDVx)
- [TeaCon 2023 展示服务器游览指南](https://wiki.teacon.cn/s/2023/doc/teacon-2023-dUHyCo34sX)
- [「言传身教」奖项评选材料](https://wiki.teacon.cn/s/2023/doc/44cm6kia5lyg6lqr5pwz44cn5aww6ag56ke6ycj5p2q5paz-OdEmjmjsSp)
- [一些教程：2023 年版](https://wiki.teacon.cn/s/2023/doc/2023-yZ8Ifv1mfY)
- [评审/试玩员须知](https://wiki.teacon.cn/s/2023/doc/6ke5a6hlivleeoqewrmomhuefpq-ByPgkTGdq0)
- [选手公示栏](https://wiki.teacon.cn/s/2023/doc/6ycj5oml5yws56s65qcp-lAfinGn66d)
- [建筑服救火记录](https://wiki.teacon.cn/s/2023/doc/5bu6562r5pyn5pwr54gr6k6w5b2v-fkxYkA7PhG)
- [龙井 FAQ](https://wiki.teacon.cn/s/2023/doc/faq-RxvgUOkabT)
- [给选手看的架构图](https://wiki.teacon.cn/s/2023/doc/57uz6ycj5oml55yl55qe5p625p6e5zu-l1w4YmTjkB)
- [展示服启动器兼容性说明](https://wiki.teacon.cn/s/2023/doc/5bgv56s65pyn5zcv5yqo5zmo5yw85a655ocn6k05pio-JGDwifXOLu)