FakeBlock
概览
FakeBlock 仅向选定的玩家显示 Sponge 结构文件(.schem)。方块通过数据包发送:真实世界从不会被修改,因此站在同一位置的两位玩家可以看到两种不同的建筑。结构可以跟随某个 TypeWriter 受众(任务步骤、手持物品、区域),作为过场动画播放,或者由玩家使用“存储方块”物品放置。
方块可以设置为在客户端侧可破坏。破坏由服务器校验,可以掉落战利品,可以通过物品白名单或黑名单加以限制,并按玩家保存在构件中,这样建筑在重新连接后仍保持被破坏的状态。
功能
- 按玩家区分的建筑 — 向某个受众、过场动画观看者或放置它的玩家显示结构。
- 三种锚点 — 固定的世界位置、同一维度中每个 BTC Sky 岛屿上相同的偏移,或 Dungeon 实例内的位置。
- 渐进式放置 — 方块按
LINEAR、HELICAL或RANDOM顺序、以可配置的速率出现,或瞬间出现。 - 可视距离与淡出距离 — 在一定距离之外隐藏建筑,并使其逐渐淡出。
- 客户端侧破坏 — 经服务器校验的破坏,可选战利品、白名单和黑名单。
- 持久化状态 — 被破坏的方块和已放置的实例按玩家或按分组存储在构件中。
- 存储方块 — 给予玩家一个物品,放置时会展开为一个结构,可设为一次性或可取回。
安装
- 在服务器上安装 PacketEvents。
- 将 FakeBlock 的 JAR 放入
plugins/Typewriter/extensions/并重启服务器。 - 将你的
.schem文件复制到plugins/Typewriter/schematics/。添加新文件后请运行/fakeblock reload。
快速上手
向到达某个任务步骤的玩家显示一座废墟桥:
- 在 TypeWriter 网页面板中,打开一个**清单(manifest)**页面,添加一个 Schematic Audience 条目。
- 将
schematic设为文件名,例如bridge_ruined.schem,并将centerLocation设为粘贴原点。 - 用一个与任务步骤匹配的受众筛选器(例如事实或任务受众)包裹它,这样只有这些玩家能看到它。
- 若要让玩家清理废墟,请启用
breakable,必要时设置dropLoot,并在stateArtifact中链接一个 Schematic State 构件,以便记住被破坏的方块。 - 发布页面,并带着一位符合该受众的玩家走到该位置。
若要让玩家自己放置建筑,请使用 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
- Schematic BlockPlace a schematic as a block
受众2
- Blockify Schematic AudienceDisplay a schematic clientside for an audience with breakable blocks support
- Holding Item AudienceFilters an audience based on if they are holding a specific item
过场动画1
- Blockify Schematic CinematicPaste a schematic (client-side) during a cinematic for the player
构件1
- Schematic State ArtifactArtifact for storing fake block state
故障排查
什么都没有出现。 请检查 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 始终优先。