-
Notifications
You must be signed in to change notification settings - Fork 1
Home
本文档年久失修,其中内容很可能已经过时。请谨慎阅读。
AreaControl 是针对 TeaCon2020/2021/2022/…… 的实际需求制作的区域保护 Mod,长期目标是一套功能灵活的 Forge/Fabric 下的服务器领地解决方案。
这里是它的临时说明书。
请注意,安装本 Mod 的服务器可能会搭配使用权限控制 Mod/插件实现一些不一样的规则,如有冲突请以实际的服务器为准!
在 AreaControl 中,领地是一块长方体区域,由两个方块坐标决定:背面左下角和正面右上角。所以,要申领领地,需要确定这两个坐标。
- 首先确定好要申领的区域。
- 然后,拿着「领地标记物品」右键敲击这个区域角落的一个方块。
这个物品默认是原版木棍,但可以由配置文件更改,所以你应该使用命令/ac help
来确定应该用什么物品。
你的快捷栏上方此时会提示你敲击了什么地方。如果你客户端装有 AreaControl,此时你敲击的地方会有一层金色高亮。 - 接着还是用原版木棍,敲击对角线上另一端的方块。两个方块最终可以确定一个长方体区域。
同样的,快捷栏上方会有提示你敲击了什么地方。如果你客户端装有 AreaControl,此时你敲击的两个地方所组成的长方体区域会有一层金色高亮。 - 输入命令
/ac claim marked
并执行。AreaControl 会自动确认你标记的范围是否有效,并根据情况给出相应的提示(成功或失败)。
在 AreaControl 中,一个区块定义为 x 轴和 z 轴除以 16 后均相同的区域,包含 y 轴的全部范围。
- 首先确定好要申领的区块并站在上面。
- 输入命令
/ac claim chunk
并执行。
如果有需要,你还可以一次性申领多个区块。
- 首先面朝北方,你可以打开 F3 调试界面确认这一点。
- 计算好需要申领的区块范围,确定这些区块在东西和南北方向。
- 输入命令
/ac claim chunk <东西方向延伸的区块数量> <南北方向延伸的区块数量>
并执行。
举例,当你面朝北方时,/ac claim chunk 3 3
会申领一块占地 9 区块的领地,你此时会站在这个新领地的西北角上的区块中,领地范围向东和南两个方向延伸。
类似的,/ac claim chunk -2 -2
会申领一块占地 4 区块的领地,而你此时会站在这个新领地的东南角上的区块中,领地范围向西和北两个方向上延伸。
执行命令 /ac current
可知。
需要特别注意的是,领地是可以互相嵌套的——如果你在某一块领地里,同时这块领地在另一块更大的领地里,你会同时看到这两块领地的信息。
/ac current range expand [up/down/north/south/west/east] [方块数量]
方块数量如果是正数,意味着扩张。方块数量如果是负数,意味着收缩。
方块数量如果是零,意味着啥都不会发生。
如果你还没申领领地,只是标错了位置:你可以直接去敲正确的位置,AreaControl 只会记录你敲的最后两个位置;你也可以执行 /ac claim cancel
取消你选中的范围。
/ac claim cancel
还有两个同义词:/ac desel
和 /ac deselect
,三个命令效果一致。
如果你已经申领领地,然后才发现圈错了:站在圈错的领地里执行命令 /ac unclaim
放弃该领地。请注意,如果你在互相嵌套的领地里,放弃领地的顺序是从内到外的。
如果你圈错了很多领地:为防止误操作,目前暂不考虑提供批量放弃领地的命令。你仍然可以通过 /ac mine
提供的快捷方式快速到达你的领地内。
执行命令 /ac nearby
即可得知。
AreaControl 会以服务器视距为基准找出你附近的领地,并在聊天栏中给出数量、各自的范围以及点击就可以执行 /tp
命令的「按钮」。
如果你客户端装有 AreaControl,你附近的领地会有一层碧绿色高亮,而嵌套在领地中的领地则会以青蓝色高亮。
执行命令 /ac mine
即可得知你名下的领地。
领地保护控制可由 /ac current properties set [属性名] [属性值]
修改。执行该指令时需要站在目标领地中。
你可以通过 /ac current
(上面提到过了)得知你是不是站在目标领地中。
你可以通过 /ac current properties
查看当前领地所有属性的值,或者通过 /ac current properties set [属性名]
查看特定属性的值。
你还可以通过 /ac current properties unset [属性名] [属性值]
彻底清空特定的属性。
领地的属性是层叠的:假如领地 A 禁止爆炸,但领地 A 的子领地 B 和 C 没有规定,则在 B 和 C 中会采用 A 的值(即禁止爆炸)。
但如果领地 B 允许爆炸,则你在领地 B 中爆炸会有效果,在 C 中则没有,因为 C 没有设置是否禁止爆炸,因此采用了 A 的设置。
你可以利用这一点快速完成你的领地的属性配置——只需要在最外层设置就可以对所有里面的子领地生效了。
目前可用的属性如下表:
属性名 | 值 | 效果 |
---|---|---|
area.allow_spawn |
true /false
|
允许/禁止任何实体生成,玩家实体除外。注意,此属性也会影响物品掉落等机制,如若需要允许物品掉落,请将领地内的 area.allow_spawn.minecraft:item 设置为 true 。类似的,如果你需要允许下落方块,请将 area.allow_spawn.minecraft:falling_block 设置为 true 。 |
area.allow_special_spawn |
true /false
|
|
area.allow_pvp |
true /false
|
允许/禁止玩家攻击玩家(PvP)。请注意,这个属性不能阻止虚空伤害等无视 invulnerable 标签的伤害,以确保在服务器实体数量异常时 /kill 等命令仍可以正常工作。 |
area.allow_attack |
true /false
|
允许/禁止玩家攻击不是玩家的实体(PvE)。请注意,这个属性不能阻止虚空伤害等无视 invulnerable 标签的伤害,以确保在服务器实体数量异常时 /kill 等命令仍可以正常工作。 |
area.allow_interact_entity_specific |
true /false
|
允许/禁止玩家与实体的“某一部分”进行交互。 |
area.allow_interact_entity |
true /fasle
|
允许/禁止玩家与实体进行交互。和上面那个有微妙差异,具体差异暂时不明确。 |
area.allow_break_block |
true /false
|
允许/禁止玩家破坏方块。 |
area.allow_click_block |
true /false
|
允许/禁止玩家通过左键点击方块交互。 |
area.allow_activate_block |
true /false
|
允许/禁止玩家通过右键点击方块交互。 |
area.allow_possess.[物品注册名] |
true /false
|
允许/禁止玩家持有特定物品。「持有」的定义是「在玩家背包中出现」。暂时不能兼容例如 Curios 等添加额外物品栏的模组。特别的,不接任何物品注册名的 area.allow_possess 目前没有任何效果。 |
area.allow_use_item |
true /false
|
允许/禁止玩家右击使用物品。 |
area.allow_place_block |
true /false
|
允许/禁止玩家放置方块。需要注意的是,1. 打火石在地上点火受此属性影响 2. 客户端可能会看到物品数量减 1,但实际上并没有。 |
area.allow_trample_farmland |
true /false
|
允许/禁止耕地被踩回普通泥土。 |
area.allow_explosion |
true /false
|
允许/禁止爆炸。 |
area.allow_explosion_affect_blocks |
true /false
|
允许/禁止爆炸破坏方块。和上面那个禁止爆炸不一样的是,此时爆炸已经发生,只是允许/禁止破坏方块。若受此保护的领地外发生爆炸波及到领地内,领地内的方块仍然受到保护。 |
area.allow_explosion_affect_entities |
true /false
|
允许/禁止爆炸波及实体。和上面那个禁止爆炸不一样的是,此时爆炸已经发生,只是允许/禁止对实体造成伤害。若受此保护的领地外发生爆炸波及到领地内,领地内的实体仍然受到保护。 |
area.allow_fire_spread |
true /false
|
允许/禁止原版火方块的随机刻。禁止此属性的效果有:原版火方块不能蔓延、雨不能浇灭原版火方块、原版火方块不能让附近易燃方块着火、熔岩无法引燃受此保护范围内的方块等。 |
area.allow_ride |
true /false
|
允许/禁止骑乘载具。若已经在载具上,会强制离开载具。 |
特别的,area.allow_break_block
、area.allow_click_block
还允许指定特定的方块,例如 area.allow_break_block.minecraft:dirt
设定为 false
时只会禁止破坏泥土。
你只需要输入 /ac current properties set area.allow_break_block.minecraft:dirt false
即可做到这一点。你会在输入的时候看到合适的自动补全,所以你不需要完整背下来,只要打几个字母然后剩下的交给自动补全就行了。
你还可以指定一整个模组的物品/方块,例如把 area.allow_break_block.minecraft
设定为 false
后将禁止破坏任何原版 Minecraft 的方块,其中 minecraft
是「原版 Minecraft」这个模组的的 ID。
支持此语法的属性:
-
area.allow_break_block
(后接.[方块注册名]
) -
area.allow_click_block
(后接.[方块注册名]
) -
arae.allow_place_block
(后接.[方块注册名]
) -
area.allow_activate_block
(后接.[方块注册名]
) -
area.allow_spawn
(后接.[实体类型注册名]
) -
area.allow_attack
(后接.[实体类型注册名]
) -
area.allow_ride
(后接.[实体类型注册名]
) -
area.allow_use_item
(后接.[物品注册名]
) -
area.allow_possess
(后接.[物品注册名]
)
后接模组 ID 或物品/方块/实体 ID 的领地属性比什么都不接的属性优先级要高,你可以利用这一点实现黑名单模式。例如,如果你只想禁止生成原版 TNT:
- 将
area.allow_spawn
设定为true
- 将
area.allow_spawn.minecraft:tnt
设定为false
即可。此时若有人在这个领地中激活一个 TNT,AreaControl 会只检查 area.allow_spawn.minecraft:tnt
并将其拦截,但对其他实体则会检查 area.allow_spawn
并放行。
对于允许指定特定物品/方块/实体的属性,优先级顺序排列如下:
- 精确到具体物品/方块/实体的优先级最高
- 精确到模组 ID 的优先级中等
- 不精确到任何特定物品/方块/实体的优先级最低
你可以对某些人开放你的领地,让他们可以在领地里绕开一些保护策略,从而方便他们在你的领地上建造建筑等。
只需要站在你的领地中使用 /ac current friends add [玩家名]
即可将指定玩家添加到你所在的领地的成员列表中。
类似地,/ac current friends remove [玩家名]
会将指定玩家从你所在的领地的成员列表中除名。