机甲 - 多实体碰撞检测盒API

机甲 - 多实体碰撞检测盒API

用于为单个实体实现多个碰撞体碰撞箱的 Fabric API

游戏机制

一个简单的 API,用于让自定义实体实现多个碰撞箱。

设置

将 Modrinth Maven 和正确版本的模组添加到你的 build.gradle 文件中:

repositories {
	maven { url 'https://api.modrinth.com/maven' }
}

dependencies {
	modImplementation "maven.modrinth:mecha-api:VERSION_GOES_HERE"
}

用法

在你的自定义实体类中实现 MultiCollidable,并重写 getColliders 来为实体添加额外的碰撞体。

示例

以下示例代码为一个实体添加了 2 个碰撞体,每个都是台阶大小:

public CustomEntity extends Entity implements MultiCollidable {
    public List<VoxelShape> getColliders() {
        List<VoxelShape> colliders = new ArrayList<>();
        BlockPos pos = this.blockPos();
        double x = pos.getX();
        double y = pos.getY();
        double z = pos.getZ();
        colliders.add(VoxelShapes.cuboid(x, y, z, x+1, y+0.5, z+1));
        colliders.add(VoxelShapes.cuboid(x, y+0.5, z, x+1, y+1, z+1));
        return colliders;
    }
}

对于 0.1.2 及更新版本,现在还提供了一个自定义实体类型 DynamicBoundingBoxEntity,它拥有基于 getColliders() 返回列表的动态边界箱:

public CustomEntity extends DynamicBoundingBoxEntity {
    // 该实体的边界箱将动态调整大小
    // 以适配此函数返回的碰撞体
    @Override
    public List<VoxelShape> getColliders() { ... }
}