3,417
个编辑
MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
(创建页面,内容为“方块的基类是<code>net.minecraft.world.level.block.Block</code>类,和物品一样,简单的方块可以直接new这个类;拥有额外的逻辑的则需要先继承再实例化。 public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(TutorialMod.MODID); public static final DeferredBlock<Block> EXAMPLE_BLOCK = BLOCKS.registerSimpleBlock("example_block", BlockBehaviour.Properties.of(). ...); Block类接受一个Block…”) |
|||
| (未显示同一用户的2个中间版本) | |||
| 第11行: | 第11行: | ||
public static final DeferredItem<BlockItem> EXAMPLE_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(MyBlockClass.EXAMPLE_BLOCK); | public static final DeferredItem<BlockItem> EXAMPLE_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(MyBlockClass.EXAMPLE_BLOCK); | ||
方块的本地化键名格式是<code>block.<modid>.<registry_name></code>,如上述示例代码中注册的EXAMPLE_BLOCK的本地化键名为<code>block.tutorialmod.example_block</code>。 | |||
== blockstates和模型文件 == | == blockstates和模型文件 == | ||
| 第50行: | 第50行: | ||
事实上,任何物品都可以通过模型文件继承方块模型来获得一个方块的外观。 | 事实上,任何物品都可以通过模型文件继承方块模型来获得一个方块的外观。 | ||
=== 数据生成 === | |||
对应的DataProvider实现类为BlockStateProvider,同样提供了大量辅助方法如#simpleBlock、#simpleBlockWithItem等,思路和物品模型datagen类似,这里就不赘述了,读者可自行翻阅BlockStateProvider的源码。 | |||
== 方块类型(MapCodec<? extends Block>) == | == 方块类型(MapCodec<? extends Block>) == | ||
你可能注意到了,原版的Block子类都定义了一个public static final的MapCodec字段(有关Codec和MapCodec,详见第10章),即所谓的“方块类型”;还覆写了#codec方法。并且这些方块类型都被注册进了注册表BuiltInRegistries.BLOCK_TYPE。 | 你可能注意到了,原版的Block子类都定义了一个public static final的MapCodec字段(有关Codec和MapCodec,详见第10章),即所谓的“方块类型”;还覆写了#codec方法。并且这些方块类型都被注册进了注册表BuiltInRegistries.BLOCK_TYPE。 | ||
由于方块目前仍是固有注册项,并未数据驱动化,因此这东西其实没啥用。不过为了和原版统一,你也可以为你的Block子类加上方块类型。如果你的方块子类的构造方法只接受一个BlockBehaviour.Properties,那么可以直接用#simpleCodec来得到一个MapCodec;如果构造方法不止这一个参数,你需要使用RecordCodecBuilder# | 由于方块目前仍是固有注册项,并未数据驱动化,因此这东西其实没啥用。不过为了和原版统一,你也可以为你的Block子类加上方块类型。如果你的方块子类的构造方法只接受一个BlockBehaviour.Properties,那么可以直接用#simpleCodec来得到一个MapCodec;如果构造方法不止这一个参数,你需要使用RecordCodecBuilder#mapCodec来创建MapCodec,方块属性参数的Codec填BlockBehaviour#propertiesCodec。 | ||