跳到主要内容

FakeBlock

基于数据包的虚假方块和客户端结构文件。

私有v0.1.0世界与建造
依赖TypeWriter0.9.0-beta-177 (BTC build)PacketEventsBTC Sky可选Dungeon可选

专为 BornToCraft 服务器网络打造。此扩展仅作参考文档,不对外分发。

概览​

FakeBlock 仅向选定的玩家显示 Sponge 结构文件(.schem)。方块通过数据包发送:真实世界从不会被修改,因此站在同一位置的两位玩家可以看到两种不同的建筑。结构可以跟随某个 TypeWriter 受众(任务步骤、手持物品、区域),作为过场动画播放,或者由玩家使用“存储方块”物品放置。

方块可以设置为在客户端侧可破坏。破坏由服务器校验,可以掉落战利品,可以通过物品白名单或黑名单加以限制,并按玩家保存在构件中,这样建筑在重新连接后仍保持被破坏的状态。

功能​

  • 按玩家区分的建筑 — 向某个受众、过场动画观看者或放置它的玩家显示结构。
  • 三种锚点 — 固定的世界位置、同一维度中每个 BTC Sky 岛屿上相同的偏移,或 Dungeon 实例内的位置。
  • 渐进式放置 — 方块按 LINEAR、HELICAL 或 RANDOM 顺序、以可配置的速率出现,或瞬间出现。
  • 可视距离与淡出距离 — 在一定距离之外隐藏建筑,并使其逐渐淡出。
  • 客户端侧破坏 — 经服务器校验的破坏,可选战利品、白名单和黑名单。
  • 持久化状态 — 被破坏的方块和已放置的实例按玩家或按分组存储在构件中。
  • 存储方块 — 给予玩家一个物品,放置时会展开为一个结构,可设为一次性或可取回。

安装​

  1. 在服务器上安装 PacketEvents。
  2. 将 FakeBlock 的 JAR 放入 plugins/Typewriter/extensions/ 并重启服务器。
  3. 将你的 .schem 文件复制到 plugins/Typewriter/schematics/。添加新文件后请运行 /fakeblock reload。

快速上手​

向到达某个任务步骤的玩家显示一座废墟桥:

  1. 在 TypeWriter 网页面板中,打开一个**清单(manifest)**页面,添加一个 Schematic Audience 条目。
  2. 将 schematic 设为文件名,例如 bridge_ruined.schem,并将 centerLocation 设为粘贴原点。
  3. 用一个与任务步骤匹配的受众筛选器(例如事实或任务受众)包裹它,这样只有这些玩家能看到它。
  4. 若要让玩家清理废墟,请启用 breakable,必要时设置 dropLoot,并在 stateArtifact 中链接一个 Schematic State 构件,以便记住被破坏的方块。
  5. 发布页面,并带着一位符合该受众的玩家走到该位置。
由玩家放置

若要让玩家自己放置建筑,请使用 Schematic Block 动作:它会给予 spawnItem,放置该物品即可展开结构。singleUse 和 ownerOnlyRetrieval 决定它是否可以被再次拾起。

工作原理​

命令​

所有命令都需要 typewriter.fakeblock.admin。别名:/fb、/schematicblock。

命令说明
/fakeblock list列出所有已放置的结构实例。
/fakeblock info <instance-id>显示某个实例的详细信息。
/fakeblock undo <instance-id>移除一个已放置的实例。
/fakeblock count [player]统计发送给某位玩家的假方块数量。
/fakeblock reset <player> [entry-id]为某位玩家恢复真实方块,可针对所有条目或某一个条目。
/fakeblock reload从磁盘重新加载结构。
/fakeblock debug输出调试信息。

权限​

权限授予
typewriter.fakeblock.admin所有 /fakeblock 命令。

条目​

5 个条目,由扩展源码生成。

动作1
受众2
过场动画1
构件1

故障排查​

什么都没有出现。 请检查 schematic 中的文件名(包含 .schem 扩展名),以及文件是否位于 plugins/Typewriter/schematics/。运行 /fakeblock reload,然后确认玩家在 viewDistance 范围内并且符合该受众。

建筑出现在错误的位置。 使用 positionMode: ISLAND_DIMENSION 时,dimensionOffset 相对于 dimensionTemplateId 中该维度的岛屿;使用 INSTANCE_DIMENSION 时,建筑只会显示在处于激活状态的 Dungeon 实例内(instanceId 中指定的那个,或在其为空时为任意实例),instanceOffset 给出其在实例世界中的坐标。只有 CLASSIC 使用 centerLocation。

重启后被破坏的方块又恢复了。 请在 stateArtifact(受众)或 position(动作)中链接一个 Schematic State 构件。没有它,破坏只存在于内存中。

玩家无法破坏任何东西。 breakable 必须开启。非空的 whitelist 只允许所列出的物品;blacklist 始终优先。

相关扩展​

  • BTC Sky — 通过 ISLAND_DIMENSION 实现相对岛屿的放置。
  • Dungeon — INSTANCE_DIMENSION 所使用的地下城实例。