部件接口体系
基本信息
| 属性 | 值 |
|---|---|
| 包 | uk.co.qmunity.lib.part |
| Java 文件 | 27 |
| 其中接口 | 21 |
| 其中非接口 | 6(3 类 + 1 抽象类 + 1 final 类 + 1 枚举) |
| 玩家可见 | 否(纯 API) |
功能
IPart 是本库的核心契约:一个「部件」占据多方块方块内的一个格子,
下游模组实现该接口即可让部件参与渲染、碰撞、红石与交互。
IPart 本身 extends IWorldLocation(IPart.java:28),提供
getTile()、getWorld()、getPos()、getSide()、getPartType()
等通用操作。
21 个接口逐个列出
按 part 包下 public interface 声明实读,非按命名猜测:
| 接口 | 语义 |
|---|---|
IPart |
主接口,部件通用契约 |
IMicroblock |
微方块能力 |
ITilePartHolder |
部件容器宿主(由 TileMultipart 实现) |
IPartCenter |
中心部件 |
IPartFactory |
部件工厂(供注册表反序列化用) |
IPartFace |
面向(面朝向) |
IPartCollidable |
碰撞 |
IPartOccluding |
光照遮挡 |
IPartThruHole |
允许打洞穿透 |
IPartSolid |
实心 |
IPartInteractable |
交互 |
IPartSelectable |
可被选择 |
IPartSelectableCustom |
自定义选择 |
IPartPlacement |
放置规则 |
IPartCustomPlacement |
自定义放置 |
IPartRenderPlacement |
渲染放置 |
IPartRedstone |
红石 |
IPartTicking |
刻 |
IPartUpdateListener |
更新监听 |
IPartRandomDisplayTick |
随机显示刻 |
IPartWAILAProvider |
WAILA 信息提供者 |
6 个非接口文件
它们不是接口,容易因命名误判:
| 文件 | 实测类型 | 行号 |
|---|---|---|
PartBase |
public abstract class ... implements IPart |
PartBase.java:31 |
PartNormallyOccluded |
public final class ... extends PartBase implements IPartOccluding |
PartNormallyOccluded.java:11 |
PartPlacementDefault |
public class ... implements IPartPlacement |
PartPlacementDefault.java:8 |
PartPlacementFace |
public class ... implements IPartPlacement |
PartPlacementFace.java:9 |
PartRegistry |
public class |
PartRegistry.java:6 |
MicroblockShape |
public enum |
MicroblockShape.java:3 |
已知缺陷
- 命名具有误导性:
PartPlacementDefault/PartPlacementFace/PartNormallyOccluded三个类的名字与IPartPlacement/IPartOccluding接口几乎同名,但它们是具体实现类而非接口。按「文件名以I开头即接口」 或按名字猜类型都会判错。
相关条目
- PartBase 与部件注册表 -
PartBase与PartRegistry的用法 - 多方块 TileEntity -
ITilePartHolder的实现方