1.12 监听火焰方块生成的事件

Billy_tang


Minecraft版本: 1.12.2

我想在有火焰方块生成时执行一个方法,就像原版地狱传送门生成一样。
原版是在火焰方块的onBlockAdded中执行的trySpawnPortal。
请问我有什么方法实现这个目的?


FledgeXu


首先火焰不是一个方块。
其次你应该去翻看Event类的子类,看看有没有你需要的方法,mod 开发是事件驱动的。


Billy_tang


火焰不是方块吗?我确实看到了Block类下的BlockFire子类。
对于Event子类来说,我只找到玩家放置方块的事件,没有找到自然生成方块的事件。所以我不知道该怎么监听。


FledgeXu


那是我弄错了。
看上去没有直接的火焰生成的方法,那你只能hack原版的BlcokFire类了。


Billy_tang


好的。请问有什么方法能够操作原版源码?看起来我只需要在原版的方法后加一句话就行。


FledgeXu


因为你要修改的是原版的方法,估计得用ASM了。


Billy_tang


我去大致了解了一下ASM,并模仿一个范例MOD写好了这一段的代码部分。
但是。。我不太会配置它的环境。。不会将它变成依赖库。
我使用的是IDE是Eclipse。
请问您能提供一些帮助吗?


FledgeXu


如果你要把它变成依赖库得修改build.gradle
你去看一眼默认的build.gradle里有一个dependencies按照注释填进去就好了。


Snownee



Billy_tang


非常感谢!


Snownee


不过我想知道你在实现什么功能?


Billy_tang


有火焰方块生成时能触发一个事件,检测周围的方块,就像地狱门生成一样。我不知道有什么简单方法。


Snownee


如果周围的方块是你自己的,可以覆写neighborChanged方法


Billy_tang


是原版的方块:frowning_face:


Billy_tang


确实用Mixin的Inject实现了我的目标。
不过我打算改成自己的方块了。总感觉改原版不是那么稳定,兼容性也会差一点。
谢谢提供覆写neighborChanged这个方法。


FledgeXu


解决了的话,选个楼层作为答案吧。


system


该主题在最后一个回复创建后7天后自动关闭。不再允许新的回复。