Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement

关于驯服狼的繁殖归属问题[]

关于关于驯服狼的繁殖归属问题,在游戏中设定应该确实是在两个玩家间随机分配的。在英文wiki上的解释是“最终会归属于年长的那只驯服狼的主人”,这个可以证实是错误的。我最近注意到我身边有许多玩家也发现了这个问题。

经过我的实际测试(JE-1.19.3)之后,发现在繁殖条件(狼的出生时间、驯服顺序、喂养顺序、喂养者)不变的情况下,两只驯服狼得出的结果一致,由此可知不同主人的驯服狼之间的繁殖并不能通过这些条件来控制。

与巡查员Anterdc99讨论的过程中,他提醒我还有距离上不同的情况。

我再次进行测试后发现他是正确的,测试方法是繁殖前将其中一个玩家传送至Y=10000、XZ不变的位置,繁殖结果不显示出随机性。这里可以得出结论:如果有一个玩家距离自己的狼过远,那么所繁殖出的幼狼必然是另一个玩家(测试过两个主人都离狼过远而让第三个玩家喂养的情况。幼狼不会认第三者做主人的,甚至在它们的主人回来前不会进行繁殖)。

而后,IBuckeeet有了新的结论,他发现当喂食后两狼已进入“求爱模式”时,一个玩家要是在繁殖成功之前令他的狼坐下,那么繁殖出来的幼狼必将会跟随另一个玩家。

我也再次进行了验证发现确实如此。

此外,我发现当两狼在水中时,如果一个玩家退出游戏,繁殖结果也必然是还存在游戏中的玩家的。而如果两个玩家都已不在游戏中,第三玩家尝试繁殖后幼狼会随机选择原有的两个玩家之一做为主人。

我还在基岩版(1.19.51)测试后,发现此上所有特性均与基岩版无关,在基岩版中无论什么情况繁殖结果必然是在两个玩家主人中随机选择一个的。

我发现有许多人对此有不同的意见,故在此发起讨论。如果我这里有什么错误或者你有新的发现的话,欢迎在此讨论~

--II Pixel Cube II留言) 2022年12月30日 (五) 13:27 (UTC)II Pixel Cube II

这个问题其实要比表面上复杂的多,涉及到上一代MC生物AI的问题。接下来我会用代码说明其原理(1.19.3,Mojang Mapping)。
首先先说一下繁殖的原理,生物AI的“BreedGoal”决定了生物的繁殖行为,此AI通过调用动物的“getBreedOffspring”方法创建繁殖出的生物,而这个繁殖出来的生物将跟随目前正在调用此AI的生物的主人。也就是说,繁殖双方谁先调用了BreedGoal,繁殖出来的动物就属于谁的主人
通常来说,调用方谁更优先是随机的,但是在你上方说的几种情况中,导致了繁殖生物AI出现了调用顺序。
  • 如果一个已驯服生物的主人离此生物距离过远且没有坐下,生物会尝试向主人走动或传送至主人。由于跟随AI(“FollowOwnerGoal”)与BreedGoal同时占据生物的MOVE和LOOK控制,在这两个AI中,生物只能选择一个;又因为FollowOwnerGoal的优先级(6)优先于BreedGoal(7),所以生物会选择尝试跟随主人,而不是去进行繁殖,AI被跟随主人这个任务固定,所以此方不会主动去繁殖,相对应的另一方如果不受此限制,则可以先调用BreedGoal,因此解释了“玩家距离自己的狼过远,那么所繁殖出的幼狼必然属于另一个玩家”。这个东西的验证你也已经做过了:如果主人不在身边,在它们的主人回来前不会进行繁殖。
  • 生物坐下也是类似的情况。由于生物坐下相当于禁用MOVE控制,所以也同时禁用了BreedGoal,剩下的推理和上方相同。
  • 最后的那个情况我暂时没有找到什么根据,应该也类似于上面的流程:生物的BreedGoal被禁用或优先级较低,所以被另一方抢先调用。
总而言之这是个非常复杂的AI问题,情况太多了--Nickid2018留言) 2022年12月30日 (五) 14:10 (UTC)
狼:我对主人的爱大过我对象,发情也拦不住(
感谢,一个专业的回答。
所以在大于BreedGoal优先级的行为选择器被触发时或BreedGoal被禁用时都会影响生物的繁殖行为和繁殖结果。目前会影响BreedGoal和玩家相关的似乎也就“跟随”和“坐下”这两种情况了,也许...还有“受伤”?
最后情况我猜测和 FloatGoal(水面漂浮)有关,我对ai并不算太了解,但我想其他生物的繁殖应该也能参考这个思路来获得可控的结果。
--II Pixel Cube II留言) 2022年12月30日 (五) 16:31 (UTC)
理论上来说只要优先于BreedGoal且占用MOVE或LOOK控制的AI都可能会对繁殖行为造成影响。在狼这个例子里面,满足这些条件的AI有:WolfPanicGoal、SitWhenOrderedToGoal、WolfAvoidEntityGoal、LeapAtTargetGoal、MeleeAttackGoal和FollowOwnerGoal,这其中只需要有一项AI满足其运行条件并占用MOVE或LOOK控制,BreedGoal就不能发挥作用。而FloatGoal并不能阻止BreedGoal,它只占用JUMP控制,所以应该是因为其他AI导致了最后一种情况的发生。
其他生物的繁殖也大概遵循上述规律,但是由于MC中生物AI有两种,所以对于使用另一种AI的生物上述判断不适用,它们使用生物记忆-行为控制而不是Goal和Target--Nickid2018留言) 2022年12月30日 (五) 16:56 (UTC)
Advertisement