在阅读之前:
我已经测试过了,这段代码仍然有效。但我不喜欢那里的错误,问题只是,是否有另一种方法,因为我现在的代码将来可能无法工作。
我一直在关注此处链接的有关如何创建 Minecraft Mod 的教程系列一段时间,直到我陷入第 9 集。
教程系列(可以推荐给每一个新人): https://www.youtube.com/watch?v=LpoSy091wYI&list=PLKGarocXCE1HrC60yuTNTGRoZc6hf5Uvl&index=1
我被困在第(9)集:
https://www.youtube.com/watch?v=_tD0-CHZIeE&list=PLKGarocXCE1HrC60yuTNTGRoZc6hf5Uvl&index=9
本集讲述如何为 Minecraft 制作新作物。 在视频中4:20左右,他添加了一行代码,出现了我遇到的错误。
他解释说,这条线是为了让纹理中不可见的像素在游戏中的 3D 模型中实际上不可见。
但问题是:每次我尝试写出该代码时都会出现错误。
它总是说,这是错误的,但我不太明白为什么。 IDE 还说,错误的代码是 “标记为删除”
代码行如下所示:
@Mod.EventBusSubscriber(modid = MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public static class ClientModEvents {
@SubscribeEvent
public static void onClientSetup(FMLClientSetupEvent event) {
ItemBlockRenderTypes.setRenderLayer(ModBlocks.BLUEBERRY_CROP.get(), RenderType.cutout());
}
}
位于项目的主类中,名为:
TestMod.java
我指的确切行是这一行:
ItemBlockRenderTypes.setRenderLayer(ModBlocks.BLUEBERRY_CROP.get(), RenderType.cutout());
错误始终出现在
.setRenderLayer()
的正下方,因此它表明这是不正确的。
在视频中,预览中也没有删除线,但在我的代码中却是。
我也尝试过使用其他类型的
.setRenderlayer()
,但没有成功。
所以我的问题是:
如果有人想复制这个:我正在使用 IntelliJ-IDEA,Temurium 17 SDK 并且 Mod 在 Minecraft 1.19(.0)
上运行在 1.19+ 中,不再建议在代码中设置渲染类型。相反,您应该通过 JSON 文件来完成此操作,如下所示:
{
"parent": "minecraft:block/crop",
"textures": {
"crop": "examplemod:block/blueberry_crop"
},
"render_type": "minecraft:cutout"
}
render_type
有很多变体,例如minecraft:solid
(默认)、minecraft:cutout
(大多数植物都需要它)、minecraft:translucent
(对于彩色玻璃等方块来说需要它)等等.
有关
render_type
的更多信息可以在 Forge 官方文档中找到。