本帖最后由 zjx475 于 2019-10-7 21:43 编辑
很想知道像LittleBlock一类的mod是如何实现的。我目前方块渲染没有太大问题(一个一个大方块渲染),但如何保留方块的功能,使得方块可以交互?
比如,一个方块内包括了8个小方块,有工作台,熔炉等,玩家右击时通过点击位置触发不同事件。(注意那一个个小方块是随机的,玩家自己摆的,功能不确定,只能获得方块类型)
很想知道像LittleBlock一类的mod是如何实现的。我目前方块渲染没有太大问题(一个一个大方块渲染),但如何保留方块的功能,使得方块可以交互?
比如,一个方块内包括了8个小方块,有工作台,熔炉等,玩家右击时通过点击位置触发不同事件。(注意那一个个小方块是随机的,玩家自己摆的,功能不确定,只能获得方块类型)
如果你说的是EIO那样的一个方块里有多个管道,可以看看EIO的做法(1.12的EIO只要CCL不要小方块了),如果说的是一个方块像个魔方一样分成多个小方块,那你可能高估MC了。
那请问有人有1.12的LittleBlock模组吗?
我目前方块渲染没有太大问题(一个一个大方块渲染)
所以楼主现在有渲染 multipart 的能力。这非常好。
一个方块内包括了8个小方块,有工作台,熔炉等
在 Minecraft 的底层世界里,世界最小的组成单位是一个 1x1x1 的方块。既然我们要继续分下去,那我们需要自己保存这些数据。换言之,这 8 个小方块所在的地方,有一个 TileEntity。
玩家右击时通过点击位置触发不同事件
onBlockActivated 传入了三个 float 可以帮你确定玩家右键单击了方块的哪一个点。不过你仍然需要做一次 ray tracing(以玩家眼睛位置为起点,经右键点击的点的射线)来确定玩家点到了什么地方。
3TUSK 发表于 2020-3-10 05:39
所以楼主现在有渲染 multipart 的能力。这非常好。
这样还有问题,如果直接调用那些方块的onblockactivated,很多会进行检查,如箱子右击事件必须需要这个位置的TileEntity是它自己的TileEntity...
所以我觉得还是把方块右击的事件设置为有限的几种吧。类似按钮的功能可以实现,打开GUI什么的就别想了...
zjx475 发表于 2020-3-24 10:37
这样还有问题,如果直接调用那些方块的onblockactivated,很多会进行检查,如箱子右击事件必须需要这个位 ...
那就 TileEntity 里套 TileEntity。