白细胞

白细胞

服务端区域防护,可通过API或命令控制。

管理

白细胞

白细胞是一个简单的 Fabric 世界保护模组,提供与 player-roles 的可选集成。

白细胞世界保护的基础是“权威机构”。一个权威机构负责向其范围内的玩家应用特定规则。每个权威机构都有一个唯一名称、一个优先级(“等级”)以及一组玩家排除项。

创建权威机构

要创建一个空的权威机构,请运行:/protect add <名称>。
或者,可以创建权威机构以在特定区域内应用,例如:

  • /protect add <名称> with universe(全局应用)
  • /protect add <名称> with <维度>(在特定维度内应用)
  • /protect add <名称> with <最小值> <最大值>(在两个方块坐标之间的长方体区域内应用)

之后可以使用 /protect remove <名称> 移除权威机构。

设置规则

白细胞提供了可在权威机构内应用的多种规则。这些规则包括:

  • break 控制玩家是否可以破坏方块
  • place 控制玩家是否可以放置方块
  • block_drops 控制方块被破坏时是否掉落物品
  • interact_blocks 控制玩家是否可以与方块互动
  • interact_entities 控制玩家是否可以与实体互动
  • interact 控制与方块和实体的全局互动
  • attack 控制玩家是否可以攻击其他实体
  • pvp 控制玩家是否可以攻击其他玩家
  • portals 控制玩家是否可以建造传送门
  • crafting 控制玩家是否可以合成物品
  • fall_damage 控制玩家是否受到摔落伤害
  • hunger 控制玩家是否会感到饥饿
  • throw_items 控制玩家是否可以从背包中投掷物品
  • pickup_items 控制物品是否可以被玩家或其他实体拾取
  • unstable_tnt 控制 TNT 放置时是否自动点燃
  • ignite_tnt 控制 TNT 是否可以被点燃
  • spawn_withers 控制是否能够召唤凋灵
  • fire_tick 控制权威机构内火势蔓延是否启用。如果未设置,则默认为游戏规则
  • fluid_flow 控制流体是否流动
  • ice_melt 控制冰和霜冰是否融化

要在权威机构上将规则设置为 allow 或 deny,请使用 /protect set rule <权威机构> <规则> <结果>。

例如:/protect set example place deny 将禁止在名为 example 的权威机构内放置方块。

制作形状

通常,您可能希望保护一个形状不规则、不仅仅是简单方盒的区域。 为此,可以将多个简单形状组合成一个更复杂的形状,用于应用规则。

首先,运行:/protect shape start。这将开始构建一个形状。
接下来,要向此形状添加基本体,请运行:

  • /protect shape add universe 将宇宙添加到该形状中
  • /protect shape add <维度> 将维度添加到该形状中
  • /protect shape add <最小值> <最大值> 将两个方块坐标之间的长方体添加到该形状中

可以多次运行这些命令来组合您的形状。

完成形状组合后,可以运行:/protect shape finish <名称> to <权威机构>。 这将向指定的权威机构添加一个具有给定名称的形状。

之后可以使用 /protect shape remove <名称> from <权威机构> 移除该形状。

设置等级

在处理多个权威机构时,您可能希望一个权威机构优先于另一个。 例如,您可能希望一个全局权威机构在所有地方禁止恶意破坏,除特定建筑区域外。

这就是等级的用武之地:等级是任意数字,数字越大表示优先级越高,数字越小表示优先级越低。 假设一个权威机构的等级为 -1,那么另一个重叠的、等级为 10 的权威机构将覆盖前者的规则。

可以使用:/protect set level <权威机构> <等级> 设置权威机构的等级。

添加排除项

权威机构的规则可能不希望适用于所有人。 在这种情况下,可以排除特定玩家或整个 角色 受特定权威机构的影响。

通过运行:/protect exclusion add <权威机构> player <名称> 或 /protect exclusion add <权威机构> role <名称> 来实现。

这些排除项之后可以使用 /protect exclusion remove 移除。

综合运用:一个示例

内容真多!让我们通过一个简单示例来综合运用所学知识。

我们的示例服务器希望拥有全局防恶意破坏保护,但在生存维度和自由建造区域除外。 我们还想通过角色来排除某些玩家在自由建造区域内建造。

考虑两个维度:minecraft:overworld 和 example:survival,以及角色 builders。

首先,创建一个名为 global 的权威机构。由于我们大多数时候希望在所有地方都受保护,因此全局应用保护,然后在特定区域专门覆盖它是合理的。

  • /protect add global with universe

接下来,我们可以在此权威机构上设置规则:

  • /protect set rule global place deny
  • /protect set rule global break deny

完成!现在,让我们在我们的生存维度中覆盖此行为。

  • /protect add survival with example:survival
  • /protect set rule survival place allow
  • /protect set rule survival break allow

但是等等……!模组如何知道应用 global 还是 survival 的规则,因为 global 也适用于生存维度? 这里,我们可以利用等级:权威机构的默认等级为 0,数值越大表示优先级越高。
所以:让我们将 global 权威机构的等级设置为 -1,这样我们以后添加的任何内容默认都会覆盖它。

  • /protect set level global -1

现在我们可以类似地将自由建造区域也添加为排除项!假设我们有两个自由建造区域,取名为 free_build_1 和 free_build_2。 首先,我们应该创建一个适用于两者的空白权威机构,因为它们具有相同的规则。

  • /protect add free_build
  • /protect set rule free_build place allow
  • /protect set rule free_build break allow

接下来,让我们为 free_build_1 组合形状:

  • /protect shape start
  • /protect shape add -10 0 -10 10 255 10
    ... 并将其添加到我们的权威机构中
  • /protect shape finish free_build_1 to free_build

然后对 free_build_2 重复相同操作:

  • /protect shape start
  • /protect shape add -100 0 -10 90 255 10
    ... 并将其添加到我们的权威机构中
  • /protect shape finish free_build_2 to free_build

完成!现在自由建造区域应该可以由任何玩家编辑——但我们要创建排除项,以便我们可以“封禁”玩家进入这些区域。 让我们使用 free_build_banned 角色来实现:

  • /protect exclusion add free_build role free_build_banned

至此,我们的所有保护都应该设置好了!:)

测试!查询和检查规则

好的,我们已经设置好了权威机构,但是如何轻松检查设置了哪些规则以及由谁设置呢?

几个命令可能会有所帮助:

  • /protect test:测试在给定位置适用的所有规则,并显示它们源自哪个权威机构
  • /protect list:列出世界中的所有权威机构
  • /protect display <权威机构>:显示指定权威机构的规则和形状