当你在《我的界制世界》里想做个山羊人时 会发生什么

凌晨三点盯着工作台,突然觉得游戏里的作山山羊太普通了——这个念头让我彻底睡不着了。翻遍整个中文社区,羊人发现关于山羊人改造的界制讨论居然都是零散的只言片语,那就自己动手吧。作山

先搞清楚游戏里的羊人山羊到底什么样

原版山羊其实藏着不少彩蛋。它们会:

  • 用头槌撞掉任何1.5格高度以下的界制方块(包括玩家)
  • 7%概率产下尖叫山羊变种
  • 跳跃高度是普通生物的两倍
行为特征数据值
冲撞伤害1-4点(简单模式)
寻路范围半径16格内随机移动

为什么山羊适合改造?

相比其他生物,山羊的作山物理引擎很特别。去年测试1.17版本时就发现,羊人当它们从高处坠落时,界制系统会先计算蹄子着地的作山判定,这个特性后来被马匹继承了。羊人这意味着...

改造方案A:用指令实现半人形态

凌晨四点实验出的界制可行方案:

  • 先用/summon goat生成基础模型
  • 关键指令:/data merge entity @e[type=goat,limit=1] { Passengers:[{ id:"minecraft:armor_stand"}]}

这时候会出现个滑稽场景——山羊背上骑着个盔甲架。别急,作山继续输入:

execute as @e[type=armor_stand] run data merge @s {     Small:0b,羊人    Marker:0b,    Pose:{ Head:[30f,0f,0f]},    ArmorItems:[{ },{ },{ id:"minecraft:leather_chestplate",Count:1b},{ }]}

遇到的坑

第三次咖啡续杯时发现个致命问题:山羊碰撞箱和盔甲架会互相挤压。解决方法是在盔甲架的NBT里加上Invisible:1b,但这样又看不到上半身了——最后折中方案是用发光状态效果。

方案B:资源包暴力修改

更适合普通玩家的方法:

  1. 解压游戏jar文件找到goat.png
  2. 用PS把村民贴图上半身嫁接上去
  3. 注意修改goat.obj模型文件里的UV映射

实测最麻烦的是处理山羊角的动画参数。在animation/goat.animation.json里,头部的旋转轴心和人类模型完全不同,这里需要:

原始参数修改值
rotation:[0,0,0]rotation:[15,-20,5]
pivot:[0,14,0]pivot:[0,18,-2]

让山羊人真正"活过来"

天亮时分突然想到:既然都做到这步了,不如加点交互逻辑。用数据包实现了:

  • 当玩家手持小麦时,山羊人会像村民一样举起双手
  • 被雷劈中时触发狂暴模式(调用掠夺者AI)
  • 满月夜晚有概率发出僵尸音效(纯粹为了恶趣味)

最满意的设计是借用了幻翼的scan_interval参数,让山羊人会定期扭头观察玩家——这个在Minecraft基岩版居然比Java版更容易实现。

窗外鸟叫的时候,测试版山羊人已经能完成:跳上屋顶→用头槌撞碎玻璃→对着朝阳发出羊叫这一整套行为树。保存世界时突然想到《Mob Talk》模组作者说过的话:"生物改造的乐趣,就在于让代码产生意外的生命力。"