堆叠袭击农场原作者
Gamepiaynmo:黑の秋风
本文是学(chao)习(xi)堆叠袭击农场时提出的一些问题和通过查阅资料自行解决问题的方法的记录,如有错误,敬请指正
本文中使用了少量源码片段,仅供学习交流使用,请勿随意散布
“是村庄”的判定不只是由村民来负责,也与世界本身有关,当产生方块变化时,世界就会动一次POI系统net\minecraft\server\level\ServerLevel.java
(我之前一直以为这是由村民来做的草,原因应该是看了av51877122,太久以前看的记忆模糊,然后把“在POI系统中”和“获得POI”弄混了emmmm)
现在来看这个由世界管的才是真正的POI系统,而通过/data get entity Brain.memories.minecraft:job_site得到的,也就是gnembon视频讲的“获得”的POI应该只是村民AI;“被村民占据”不等同于“在POI系统中”,前者是后者的充分不必要条件
那么GP大佬专栏里的“袭击状态”直接影响的应该只是复位而不是牵引了,牵引时,工作方块开始移动变为b36,就从POI系统中被清除,袭击就被牵引走了;结束移动时,又回到了POI系统,只是没有村民占有。怪不得他的牵引模块时序那么紧,我还想村民忘掉工作方块不需要时间吗233
复位依然需要关注村民的状态。由于POI在存档中是以类似ID形式而非通过坐标储存,因此如果将工作方块推走再推回,即使村民的记忆中那个位置的确是它的工作方块,那里的方块状态也与开始无异,但这个方块在POI系统中的ID与村民记忆中是不同的,这个坐标先remove了一次,再add了一次POI,并且没有被村民占有过(脑补出了一个机器人waifu被重置的准ntr剧情www
为了让装置复位,必须让村民先忘记先前的POI,再记忆一个新的。记忆新的POI没有状态要求,但忘记POI必须在工作状态下
(存疑)每只村民从视线被遮挡到退出恐慌的时间和从视线被打开到进入恐慌的时间似乎都是独有而固定的,至少是有一定的顺序
村民从恐慌状态退出时,会直接根据时间决定接下来的活动,如果是工作时间,即可忘记POInet\minecraft\world\entity\ai\behavior\VillagerCalmDown.java
net\minecraft\world\entity\ai\Brain.java
村民搜寻POI为每40gt一次(?)net\minecraft\world\entity\ai\sensing\SecondaryPoiSensor.java
net\minecraft\world\entity\ai\sensing\Sensor.java
可能想到了一种新的牵引方法,测试样机制作中~失败了
袭击怪不在袭击中的时间超过30gt才会被从袭击中移除,这意味着如果处理系统太快,反而会得不到不祥之兆。如果要调整处理系统和牵引系统的时差就太麻烦了,考虑让怪物在最上方的牵引模块y+96以上待1.5秒。好像不需要net\minecraft\world\entity\raid\Raid.java
草,我研究了这么久为什么老是断袭击,结果就是因为高度算错了
最高的牵引模块工作方块不应该在24+96=120,不应该在24+96+1=121,而至少要放到1+24+96+1=122
植树问题果然是我的一生之敌