跳到正文

ragdolls

作者:fentbuscoding

添加类似 Garry's Mod 风格的布娃娃效果。

收藏

截图

介绍

介绍由机器翻译自 Modrinth 原页面,仅供参考。

Ragdolls

任何生物死亡时,都会变成受物理效果驱动的布娃娃,而不是播放原版那种“倒下并变红”的动画。
适用于原版生物、玩家和大多数模组生物,因为它会读取生物绘制时使用的模型,而不是依赖每种生物各自的代码。

Fabric,Minecraft 1.21–1.21.11 和 26.1–26.3。安装到游戏中即可;任何服务器都能使用,包括原版服务器。
服务器也安装后,所有玩家看到的尸体都会落在同一位置(参见 多人游戏)。
各版本更新内容:CHANGELOG.md。

安装

  1. 安装 Fabric Loader,并将 Fabric API 放入你的 mods 文件夹。
  2. 从 dist/ 中选择对应 Minecraft 版本的 jar,复制到 mods:

| Minecraft 版本 | Jar |
|—|—|
| 1.21、1.21.1 | ragdolls-1.5.0+mc1.21.1.jar |
| 1.21.2、1.21.3 | ragdolls-1.5.0+mc1.21.3.jar |
| 1.21.4 | ragdolls-1.5.0+mc1.21.4.jar |
| 1.21.5 | ragdolls-1.5.0+mc1.21.5.jar |
| 1.21.6、1.21.7、1.21.8 | ragdolls-1.5.0+mc1.21.8.jar |
| 1.21.9、1.21.10 | ragdolls-1.5.0+mc1.21.10.jar |
| 1.21.11 | ragdolls-1.5.0+mc1.21.11.jar |
| 26.1、26.1.1、26.1.2 | ragdolls-1.5.0+mc26.1.2.jar |
| 26.2 | ragdolls-1.5.0+mc26.2.jar |
| 26.3 | ragdolls-1.5.0+mc26.3.jar |

  1. 可选:添加 Mod Menu,即可在“模组 → Ragdolls”下方找到设置按钮。
  2. 多人游戏可选:也将相同的 jar(以及 Fabric API)放入服务器的 mods 文件夹。

多人游戏

如果服务器没有安装此模组,每位玩家都会各自模拟每具尸体,因此朋友看到的落点
会略有不同。服务器安装后,尸体状态会同步:

  • 每具尸体由一名玩家负责模拟(通常是最先报告尸体的人,也就是目击生物死亡的人),并在尸体移动时每秒约 10 次发送位置。其他玩家看到的尸体会平滑跟随。
  • 任何人仍然可以击打尸体;击打动作会传给负责模拟该尸体的玩家。
  • 如果该玩家离开或走远,能看到尸体的另一名玩家会从尸体当前位置接手。
  • 被炸飞的肢体、烧焦效果和烟雾也会同步。
  • 如果玩家的生物模型与其他人不同(例如资源包修改了僵尸模型),则会自行模拟一份尸体。
  • 单人游戏和局域网地图已内置服务器端功能。

在设置中关闭 多人游戏同步 即可停用。没有安装此功能的服务器仍可使用该模组。

兼容性

生物死亡瞬间,布娃娃会复制游戏实际绘制的内容,因此大多数改变生物外观的模组都能正常兼容。
已在游戏中使用 1.21.1、26.2 和 26.3 搭配以下模组测试:

| 模组 | 结果 |
|—|—|
| Entity Model Features + Entity Texture Features(EMF/ETF) | 资源包中的自定义模型和材质(已使用 Fresh Animations 测试)会保留原有外观和死亡时的姿势。Tissou’s Zombie Pack 等资源包也使用这些模组。 |
| Geckolib 盔甲(已使用 Fantasy Armor 测试) | 头盔、角、羽饰和披风会留在身体上,并随对应的肢体一起掉落。 |
| Visual Health | 伤口会保留在身体和盔甲上,包括末影人身上发光的伤口。 |
| Guard Villagers | 守卫会像其他生物一样变成布娃娃(已在 26.2 测试;死亡时会掉落武器)。 |
| 其他模组中原版风格的盔甲 | 效果与原版盔甲相同。 |

不通过原版模型部件绘制的其他内容(例如其他 Geckolib 渲染、饰品/挂件渲染、自定义盔甲
渲染器)会作为原始几何体复制,并附着到最近的身体部位。手持物品也会留在手上。

目前无法兼容:Curios 在 1.21+ 仅支持 NeoForge,Better Blood Overlay 仅支持 Forge 1.20.1;
本模组是适用于 1.21+ 的 Fabric 模组。Fabric 上的同类模组(Trinkets、Accessories)使用上面相同的渲染路径。

如果模组生物没有变成布娃娃,请使用 -Dragdolls.debug=true 启动游戏:日志会显示捕获到了哪些内容。

效果风格

在设置界面中选择一种风格,也可以使用 /ragdolls style <name>:

| 风格 | 效果 |
|—|—|
| GMod | 经典 Source 引擎式软趴趴效果。死亡瞬间就会瘫软。 |
| GTA(Euphoria) | 会努力站稳、踉跄、挥舞手臂,约 2.5 秒后才会瘫软。 |
| 写实 | 沉重、摩擦力大,击退较弱。会倒在原地。 |
| Skyrim | Bethesda 风格的物理效果。你杀死的东西都会飞上天。 |
| Roblox(经典) | Oof。身体会散架成独立的碎块。 |
| 卡通 | 像橡胶一样柔软、有弹性,效果夸张。 |
| 月球 | 低重力。尸体会缓缓飘落。 |
| 木板 | 僵硬得像木板。生物会像雕像一样倾倒。 |
| 自定义 | 调整任何物理滑块后都会切换到此风格。 |

单个生物的专属风格

可以为任何生物单独设置风格,例如卡通风格的鸡、Roblox 风格的骷髅,以及其他所有生物使用 GMod 风格。
在 设置 → 单个生物风格… 中设置(会列出所有生物),或使用
/ragdolls mobstyle <style|default> <mob>,例如 /ragdolls mobstyle cartoon minecraft:chicken。
/ragdolls mobstyle list 可查看当前设置。模组生物也适用;使用它们的 ID,例如 somemod:goblin。

效果说明

  • 每个身体部位(头、手臂、腿、尾巴、蜘蛛腿等)都是独立的刚体,并通过带有弯曲限制的球形关节连接。
  • 身体会与方块碰撞(包括台阶、楼梯和栅栏),并受摩擦力影响滑动,也能在水中漂浮。
  • 尸体之间也会相互碰撞:它们会堆成一团,倒下的尸体会撞动已经躺着的尸体,肢体不会陷进自己的躯干,也不会穿过另一条腿。
  • 布娃娃会保留致命一击的动量。如果是你杀死了它,它就会朝你攻击的方向飞出去。
  • 用左键击打布娃娃,让它们飞出去。
  • 爆炸(TNT、苦力怕、床、末地水晶以及其他任何爆炸)会将尸体炸飞并使其旋转。距离较近时,爆炸会直接炸掉肢体、把身体烧焦,并使其冒烟燃烧几秒钟。水可以灭火。被爆炸杀死的生物也会受到相同效果。
  • 走进布娃娃会把它推开。
  • 盔甲、羊毛、发光的眼睛、披风和肩上的鹦鹉都会附着在对应的身体部位上。
  • 布娃娃会保留 45 秒,然后沉入地面。静止的布娃娃会停止模拟,以节省 CPU 资源。

命令

  • /ragdolls menu 打开设置界面(无需 Mod Menu)。
  • /ragdolls style <gmod|gta|realistic|skyrim|roblox|cartoon|moon|plank> 切换风格。
  • /ragdolls mobstyle <style|default> <mob> 为某种生物设置专属风格;/ragdolls mobstyle list 可查看当前设置。
  • /ragdolls clear 移除所有布娃娃。
  • /ragdolls toggle 开启或关闭模组。
  • /ragdolls reload 重新读取 config/ragdolls.json。

设置

所有设置都可以在设置界面中调整,悬停时会显示说明,并保存到 config/ragdolls.json:
重力、关节弯曲限制、摩擦力、弹性、关节刚度、空气阻力、击退、死亡飞出力度、
肌肉(强度和持续时间)、手臂摆动、平衡、散架、爆炸强度、
爆炸炸断肢体、爆炸烧焦身体、击打力度、尸体存留时间和尸体数量上限。

blacklist(仅在 JSON 文件中)列出继续使用原版死亡效果的实体 ID。默认值为盔甲架。

限制说明

  • 在 1.21.9 及更高版本中,末影人死亡时手里拿着的方块很可能不会保留(方块和物品的加入队列方式不同;尚未测试)。
  • 身体部位之间的碰撞通过各部位的角和边计算,因此两条细肢体正好交叉成 X 形时仍可能互相穿过。
  • 末影龙使用原版死亡效果。
  • 在 1.21.2–1.21.8 中,游戏不会告知客户端爆炸的大小,因此所有爆炸都会按 TNT 规模处理。

构建

gradlew build

需要 JDK 25(Minecraft 26.x 需要 Java 25;1.21 的 jar 仍使用 Java 21 构建)。
会为每个 Minecraft 版本范围构建一个 jar,输出到 dist/。添加 -Ponly=1.21.4 可仅构建一个版本。

截图

screenshots/ 中的图片是在实际游戏中通过仅供开发使用的脚本拍摄的(src/devshots,不会包含在发布版 jar 中)。
脚本会创建地图、布置场景、保存截图,然后退出:

gradlew :1.21.1:runClient -Ponly=1.21.1 -Pshots

截图会保存到 versions/1.21.1/run/screenshots/。也可以用 26.1.2、26.2 或 26.3 替换 1.21.1
,效果相同;src/devshots_v1*–devshots_v4 中包含脚本所需、且在不同版本间有所变化的少数游戏调用。

也可以添加 -Pcompat,用其他模组布置场景(Geckolib 盔甲、Guard Villagers、Fresh Animations、Visual Health)。
在 1.21.1 中,模组来自 compat_mods 中的 versions/1.21.1/gradle.properties;其他版本则放入
versions/<mc>/run/mods,并使用 .tools/compat-mods.sh(Fresh Animations 还需要在对应游戏的 options.txt 中启用)。

多人游戏测试

在同一台电脑上打开两个真实游戏窗口:第一个窗口创建局域网地图,第二个窗口以“Bob”的身份加入。主机杀死
一排生物并堆起尸体;两边都在相同游戏刻记录每具布娃娃的位置,并同时截图。

gradlew :1.21.1:runClient -Ponly=1.21.1 -Psynctest
gradlew :1.21.1:runClient2 -Ponly=1.21.1 -Psynctest

等第一个窗口的日志显示 SYNCTEST PUBLISHED 后再启动第二个窗口。两边都添加 -Pnosync,即可查看未启用同步时的区别。

代码结构

每个 jar 都由 src/common 以及 versions/<mc>/gradle.properties 中列出的文件夹构建:

| 文件夹 | 版本 | 内容 |
|—|—|—|
| common | 全部 | 物理效果、风格、配置、设置界面、命令 |
| render_entity | 1.21–1.21.1 | 旧版实体渲染器的钩子 |
| render_state | 1.21.2–1.21.8 | 使用渲染状态进行绘制的渲染器钩子 |
| submit | 1.21.9+ | 监视死亡生物加入待绘制队列的模型 |
| camera_v1、camera_v2 | 1.21.9–1.21.11、26.1+ | 使用模型队列的渲染器钩子(26.1 中移动了它们使用的一个类) |
| model_capture | 1.21–1.21.8 | 监视绘制过程中的模型部件 |
| state_duck | 1.21.2+ | 记录渲染状态对应的生物 |
| events_v1、events_world、events_level | ≤ 1.21.8、1.21.9–1.21.11、26.1+ | Fabric 世界渲染钩子 |
| p1–p6 | 1.21.1、1.21.2–1.21.10、1.21.11、26.1.x、26.2、26.3 | 名称较短的 Minecraft 方法 |

Minecraft 26.1 及更高版本使用易读名称,因此这些版本的 jar 无需重映射即可构建。

常见问题

ragdolls 支持哪些 Minecraft 版本?

ragdolls 支持 Minecraft Java 版 1.21–26.3,共 17 个版本,可用的加载器:Fabric。下载时注意选择和你游戏版本一致的文件。

ragdolls 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:仅客户端。

评论

登录后评论和评分

fentbuscoding 的其他作品

查看全部 →