100铁粒
| 求一个模组,把末影人的判定框改成2格,Java基岩都行 |
|
Pehkui(或 Pehkui Rebuilt):最常用的实体大小调整库,支持通过命令调整实体的碰撞箱宽度和高度,Fabric/Forge/NeoForge 都有对应版本。理论上可以通过 /scale 命令单独设定末影人的判定框尺寸,但需要手动调试参数,并不是现成的“2格”预设。 · CustomHitboxLib:支持为任意实体附加自定义碰撞箱,可以通过数据包 JSON 配置,不需要写代码。对于 Java 版玩家来说,这个方案可能更灵活,但同样需要自己定义尺寸。 · Cute Mob Models:这个模组有一个选项可以让末影人的碰撞箱适应模型大小,但它是调整模型而不是单独改判定框,和“2格”的需求不完全匹配。 |
|
帕帕: 先说清楚一点:末影人默认碰撞箱是 0.6 宽 × 2.9 高,你要的 2 格是改高度。改小之后模型还是 3 格高,会穿天花板、卡在方块外面,这是正常的视觉错位,只看判定框不受影响。 基岩版:行为包覆盖实体定义 不用写代码,一个行为包就够。新建文件夹,结构是: 代码 复制 EndermanBox/ ├── manifest.json └── entities/ └── enderman.json manifest.json(两个 uuid 各填一个不重复的值,随便找个 UUID 生成器生成,min_engine_version 按你的 26.x 填高一点也没问题): json 复制 { "format_version": 2, "header": { "name": "Enderman Hitbox 2", "description": "把末影人碰撞箱高度改成 2 格", "uuid": "在这里填一个UUID", "version": [1, 0, 0], "min_engine_version": [1, 21, 0] }, "modules": [ { "type": "data", "uuid": "在这里填另一个不同的UUID", "version": [1, 0, 0] } ] } entities/enderman.json——行为包对同一个 identifier 只覆盖你写出来的组件,其余沿用原版,所以只给 collision_box 就行: json 复制 { "format_version": "1.21.0", "minecraft:entity": { "description": { "identifier": "minecraft:enderman", "is_spawnable": true, "is_summonable": true }, "components": { "minecraft:collision_box": { "width": 0.6, "height": 2.0 } } } } 把 EndermanBox 文件夹塞进 behavior_packs,新建或编辑世界时在行为包里勾上它。装完进游戏对着末影人开碰撞箱显示(设置里「显示碰撞箱」或 /gamemode 外的辅助),应该是 2 格高。想改成能钻 1.5 格就把 height 继续调小;width 也能一起改,比如 0.4。另外顺带说一句,format_version 比你的版本老一点没关系,别比游戏版本新就行。 Java 版:Fabric Mixin 改尺寸 按 Fabric 1.21.x + Java 21 写。尺寸来自 EntityType 里注册时的固定值,EndermanEntity 本身没覆写,所以从父类 Entity 的 getDefaultDimensions 下手最省事。 src/main/resources/fabric.mod.json: json 复制 { "schemaVersion": 1, "id": "endermanbox", "version": "1.0.0", "name": "Enderman Hitbox 2", "environment": "*", "mixins": ["endermanbox.mixins.json"], "depends": { "fabricloader": ">=0.15.0", "minecraft": "~1.21" } } src/main/resources/endermanbox.mixins.json: json 复制 { "required": true, "package": "com.example.endermanbox.mixin", "compatibilityLevel": "JAVA_21", "mixins": ["EntityMixin"], "injectors": { "defaultRequire": 1 } } src/main/java/com/example/endermanbox/mixin/EntityMixin.java: java 复制 package com.example.endermanbox.mixin; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityDimensions; import net.minecraft.entity.EntityPose; import net.minecraft.entity.mob.EndermanEntity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(Entity.class) public abstract class EntityMixin { @Inject(method = "getDefaultDimensions", at = @At("HEAD"), cancellable = true) private void endermanbox$shrinkEnderman(EntityPose pose, CallbackInfoReturnable<EntityDimensions> cir) { if ((Object) this instanceof EndermanEntity) { // 原版是 0.6 x 2.9 cir.setReturnValue(EntityDimensions.fixed(0.6F, 2.0F)); } } } 关键点: 注入的是 HEAD + cancellable,直接换掉返回值,不动原版其他实体的尺寸。 1.20.5 之前没有 getDefaultDimensions,那会儿是 Entity#getDimensions(Pose),把方法名和参数类型换掉、@Mixin 不变就行;如果你用的映射里搜不到这两个名字,在 IDE 里点进 Entity 看它现在是哪个方法。 进游戏前记得用 ./gradlew runClient 测,F3+B 开碰撞箱看高度。 眼睛高度(getStandingEyeHeight,原版 2.55)没改,如果你想精确点,在同一个 mixin 里对 EndermanEntity 再注入一次返回 1.7 之类。 不想装模组的偷懒办法 Java 1.20.5 以后所有生物都有 generic.scale 属性,一条命令就能等比缩: 代码 复制 /attribute @e[type=minecraft:enderman,limit=1] minecraft:generic.scale base set 0.69 2.9 × 0.69 ≈ 2.0,判定框正好 2 格,但宽度和模型一起缩,看着是个小号末影人,而且只对已经存在的实体生效。只适合临时测试,长期用还是上面两个方案。 你说的 2 格,是想让末影人能钻 2 格高的洞,还是想让刀更容易砍到?如果是后者,其实改宽度(width 调大一点点)比改高度效果更明显。 |
| 近期发现有多个网站冒用「苦力怕论坛」的名称,在百度等搜索引擎上排在官网前面。这些网站与本站无关,请注意辨别。 官方网址只有一个:https://klpbbs.com 已发现的仿冒网站(不完全统计) kulipalu***wz.sh.cn kulipa***gwz.hl.cn kulipa***angwz.com.cn qiche***bal.com.cn 这些网站会套用「苦力怕论坛」「Minecraft 中文社区」之类的标题和介绍,但不是本站,也没有本站的账号和资源。 请大家注意 只在 klpbbs.com 登录。不要在其他网站输入苦力怕论坛的账号和密码。 不要从仿冒站或第三方下载站下载资源和安装包,以免拿到被篡改的文件。 已经在仿冒站输入过密码的,请尽快到 [设置 → 密码安全] 修改密码。 搜索时认准网址 klpbbs.com,或把官网加入收藏夹。 苦力怕论坛管理团队 2026-11-14 |