本站为非官方 Pylon 文档站,大量内容均为 AI 生成·前往官方文档站● ● ●This is an unofficial Pylon documentation site, most content is AI-generated·Visit Official Docs● ● ●中文开发者交流·加入 QQ 群● ● ●本站为非官方 Pylon 文档站,大量内容均为 AI 生成·前往官方文档站● ● ●This is an unofficial Pylon documentation site, most content is AI-generated·Visit Official Docs● ● ●中文开发者交流·加入 QQ 群● ● ●
Pylon 中文文档
开发文档参考方块

方块接口

了解 Rebar 提供的各种方块接口及其用法

最后更新时间

方块接口

Rebar 内置了很多接口,可以给方块添加各种自定义行为,比如:

如何使用接口 X?

  1. 检查此站点上是否有任何文档(向下滚动)。
  2. 阅读接口的 JavaDocs 和相关方法的文档。
  3. 在 Pylon 或其他附属组件中查找使用该接口的示例。
  4. 在 Pylon Discord 上寻求帮助。

举个例子,假设你想在右键点击方块时生成粒子效果,可以用 RebarInteractBlock 来实现:

ExampleBlock.java
public class ExampleBlock extends RebarBlock implements RebarInteractBlock {

    // ...

    @Override
    public void onInteract(@NotNull PlayerInteractEvent event, @NotNull EventPriority priority) {
        if (!event.getAction().isRightClick()
                || event.getPlayer().isSneaking()
                || event.getHand() != EquipmentSlot.HAND
        ) {
            return;
        }

        new ParticleBuilder(Particle.CAMPFIRE_COSY_SMOKE)
                .location(getBlock().getLocation().toCenterLocation().add(0, 0.7, 0))
                .count(smokeCount)
                .extra(0.1) // speed
                .spawn();
    }
}

postLoad 方法

很多方块接口需要存储持久数据。Rebar 没有让你自己在 write 方法和加载构造函数里手动存取数据,而是提供了一套统一机制,把数据写入方块的 PDC。

但这带来一个副作用:当加载构造函数被调用时,方块接口的数据还没加载完。所以作为基本原则,不要在加载构造函数里调用任何依赖方块接口数据的方法。正确做法是覆写 postLoad 方法,把需要在加载后执行的逻辑放在那里。postLoad 会在所有关联的方块接口都完成数据加载之后才被调用。

postInitialise 另外还有个 postInitialise 方法,功能和 postLoad 一样,区别是它也会在 place 构造函数之后被调用。

接口快速参考

交互接口

与玩家产生交互时会触发相关逻辑的接口

杂项接口

不属于任何特定类别的接口。

物流接口

让方块和物流系统(包括 cargo)对接的接口。

如果你希望机器兼容 cargo 插入器/提取器,需要实现 RebarLogisticBlock

接口Javadocs
RebarCargoBlockJavadocs :material-arrow-right:
RebarLogisticBlockJavadocs :material-arrow-right:

流体接口

让方块和流体系统对接的接口。

没特殊需求的话,优先用 RebarFluidBufferBlockRebarFluidTankRebarFluidBlock 接口比较抽象,设计上追求最大灵活性,需要你自己实现流体存储逻辑。

接口Javadocs
RebarFluidBlockJavadocs :material-arrow-right:
RebarFluidBufferBlockJavadocs :material-arrow-right:
RebarFluidTankJavadocs :material-arrow-right:

处理器接口

跟踪进程的接口,例如燃料量或配方进度。

接口Javadocs
RebarProcessorJavadocs :material-arrow-right:
RebarRecipeProcessorJavadocs :material-arrow-right:

多方块接口

把方块变成多方块的接口。

大多数多方块用 RebarSimpleMultiblock 就够了。更复杂的多方块可以用 [RebarMultiblock],不过它设计上追求最大灵活度,所以功能很基础——不提供虚影方块,也不处理旋转等。

得益于底层实现方式,多方块几乎没有性能开销(可能和你想的不一样)。即使是非常大的多方块,对性能的影响也很小。

接口Javadocs
RebarMultiblockJavadocs :material-arrow-right:
RebarSimpleMultiblockJavadocs :material-arrow-right:

实体接口

与实体产生交互的接口。

接口Javadocs
RebarEntityChangedBlockJavadocs :material-arrow-right:
RebarEntityHolderBlockJavadocs :material-arrow-right:

剔除接口

允许您的方块与 Rebar 的剔除系统交互的接口。

接口Javadocs
RebarCulledBlockJavadocs :material-arrow-right:
RebarGroupCulledBlockJavadocs :material-arrow-right:
RebarEntityCulledBlockJavadocs :material-arrow-right:
RebarEntityGroupCulledBlockJavadocs :material-arrow-right:

原版接口

暴露原版方块功能的接口。比如你加了一个信标方块,想在信标停用时执行一些逻辑,就可以用 RebarBeacon

目录