
水杨苷:方块鳞片
轻松便捷地调整和旋转方块大小(包含BER和碰撞箱)
查看大图轻松便捷地通过单一界面调整方块的大小和旋转(包括其方块实体渲染器和碰撞箱)。
这是一个适用于 Minecraft Forge 1.20.1 的库模组。让你的 Block 实现 IScalableBlock 和/或 IRotatableBlock,它将自动获得缩放/旋转的模型渲染、方块实体渲染器(BER)渲染和 VoxelShape 碰撞检测,无需逐个注册方块混入。
功能
- 单一接口,全面缩放:实现
IScalableBlock,返回一个SBSProp配置,完成。 - 单一接口,全面旋转:实现
IRotatableBlock,返回一个SBSRProp配置,方块可围绕任意轴以任意角度旋转。 - 方块模型渲染:在模型烘焙时,通过
BakedModel代理变换 BakedQuad 顶点,确保与 Embeddium 和 Oculus 等渲染替换模组兼容。 - 方块实体渲染:通过向
BlockEntityRenderDispatcher注入混入(Mixin),方块实体(如箱子、告示牌等)与其父方块一起缩放和旋转。 - 碰撞箱缩放和平移:启用
scaleShape时,VoxelShape 会自动变换;智能平移以匹配旋转后的模型中心。 - 复合变换:方块可同时实现两个接口——先应用旋转,再应用缩放。
- 可配置枢轴点:可围绕方块内的任意锚点进行缩放和旋转。
- 零配置:无需混入配置、JSON 或数据生成。纯 API。
使用
public class MyBlock extends Block implements IScalableBlock, IRotatableBlock {
@Override
public SBSProp getScaleConfig(BlockState state) {
// 缩放至 50%,围绕方块中心,包含碰撞箱
return new SBSProp(0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, true);
}
@Override
public SBSRProp getRotationConfig(BlockState state) {
// 绕 Y 轴旋转 45°,以方块为中心
return new SBSRProp(45f, Direction.Axis.Y, 0.5f, 0.5f, 0.5f);
}
@Override
public VoxelShape getShape(BlockState state,
BlockGetter level,
BlockPos pos,
CollisionContext ctx) {
VoxelShape rotatedShape = getTranslatedShape(state, level, pos, ctx,
super.getShape(state, level, pos, ctx));
return getScaledShape(state, level, pos, ctx, rotatedShape);
}
}
SBSProp 参数
| 字段 | 描述 |
|---|---|
scaleX / Y / Z |
每个轴的缩放倍数(1.0 = 原始大小) |
pivotX / Y / Z |
方块坐标中的锚点(0~1,0.5 = 中心) |
scaleShape |
是否同时缩放碰撞 VoxelShape |
SBSRProp 参数
| 字段 | 描述 |
|---|---|
degree |
旋转角度(度) |
axis |
旋转轴(Direction.Axis.X / Y / Z) |
pivotX / Y / Z |
方块坐标中的锚点(0~1,0.5 = 中心) |
兼容性
本模组设计为与 Embeddium 和 Oculus 兼容。任何不兼容问题都欢迎反馈。
反馈
如果你有问题或需要提交 PR,请先发送简要描述至 3485874663@qq.com,你将通过用户名和密码被重定向到一个 Gitea 网站。你可以在那里继续处理问题或 PR。
正在加载版本记录…

正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。