A simple API for enabling custom entities to implement more than one collision box.
Setup
Add the Modrinth Maven and the right version of the mod to your build.gradle file:
repositories {
maven { url 'https://api.modrinth.com/maven' }
}
dependencies {
modImplementation "maven.modrinth:mecha-api:VERSION_GOES_HERE"
}
Usage
Implement MultiCollidable in your custom entity class, and override getColliders to add extra colliders to the entity.
Example
The following example code adds 2 colliders to an entity, each the size of a slab:
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;
}
}
For 0.1.2 and newer, there is now also a custom entity type, DynamicBoundingBoxEntity, which has a dynamic bounding box based on the list returned by getColliders():
public CustomEntity extends DynamicBoundingBoxEntity {
// The bounding box of this entity will dynamically resize
// to fit the colliders returned by this function
@Override
public List<VoxelShape> getColliders() { ... }
}
| Version | Minecraft | Loader | Download |
|---|---|---|---|
|
MECHA 0.1.2 - Fabric 1.19.4+ 0.1.2 |
1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1
|
fabric
|
Download |
|
MECHA 0.1.1 - Fabric 1.20 0.1.1+1.20 |
1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6
|
fabric
|
Download |
|
MECHA 0.1.1 - Fabric 1.19.4 0.1.1+1.19.4 |
1.19.4
|
fabric
|
Download |
|
MECHA 0.1.0 - Fabric 1.20.x 0.1.0+1.20 |
1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6
|
fabric
|
Download |
|
MECHA 0.1.0 - Fabric 1.19.4 0.1.0+1.19.4 |
1.19.4
|
fabric
|
Download |