3,417
个编辑
MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
无编辑摘要 |
|||
| 第64行: | 第64行: | ||
public class RegistryHandler { | public class RegistryHandler { | ||
//这里T即为你的注册项类型,可以为Item、Block等等。 | |||
//DeferredRegister字段的命名一般习惯上是这样的:把注册项类型名称全大写,再加S,如DeferredRegister<Item>一般会被命名为ITEMS。 | |||
//create方法的第一个参数可以是ResourceKey<Registry<T>>、ResourceLocation或Registry<T>。 | |||
public static final DeferredRegister<T> DEFERRED_REGISTER_T = DeferredRegister.create(BuiltInRegistries.xxx, TutorialMod.MODID); | |||
//第一个参数为该注册对象的注册名,第二个参数可以是一个Function<ResourceLocation, ? extends S>,也可以是一个Supplier<? extends S>。 | |||
//一般而言填一个Supplier更为常见。 | |||
//这个lambda就是DeferredRegister的精髓所在了:实现游戏对象的惰性初始化,或许这个字段被加载得较早,但是lambda里的方法要到RegisterEvent被发布才被调用,这个DeferredHolder才真正可用。 | |||
public static final DeferredHolder<T, S extends T> MY_REGISTRY_OBJECT = DEFERRED_REGISTER_T.register("example_name", () -> ...); | |||
... | |||
//将我们的DeferredRegister注册进MOD总线,一般是在Mod主类构造器中调用它。 | |||
public static void register(IEventBus bus) { | |||
DEFERRED_REGISTER_T.register(bus); | |||
} | |||
} | } | ||