本帖最后由 lichi2050 于 2015-10-30 12:13 编辑

WorldGuard教程以及Wiki翻译


这个帖子我在开学前几天就开始准备了,其实是因为本人觉得WorldGuard插件非常实用以及强大。
这个插件的用处很广,但是被搬运的内容极少(总体来说),不少内容的介绍都不是很详细(我准备接坑)
由于时间不足,只能慢慢添加,目前总字数只有4000+(周末我会抽出时间继续翻译的)
字数统计:

http://dev.bukkit.org/bukkit-plugins/worldguard/ 官方地址
http://wiki.sk89q.com/wiki/WorldGuard 官方wiki
http://docs.enginehub.org/manual/worldguard/latest/ WG6官方wiki
http://www.mcbbs.net/thread-461468-1-1.html 站内搬运贴
http://mineplugin.org/Worldguard 中文插件百科地址(填写中)

简介:引用OAO_miao搬运贴的简介

大家看到worldguard时也许会立刻联想到worldedit插件,这两个插件都是由sk89q带头开发的。
worldguard在dev.bukkit.org能找到的最早版本发布于2011年(当时我还不知道有MC...),至今也一直在更新,但不知道为什么,现在国内很少有人用这个插件。
国内关于worldguard的中文资料基本都是2-3年前的了,MCBBS论坛这边也很久没人搬运新版本,近期也是刚好用到了这个插件,来搬运一下好了~~
worldguard插件的用途和领地插件类似,但个人认为不如领地插件那样友好,没有多语言支持、设置也有些复杂。
不过保护效果比领地更强,很多功能是领地插件没有的,用途更偏向于管理员工具和地图制作方面。并不适合完全替代领地插件,用来保护服务器出生点、活动场地和各种建筑还是不错的。

!WG5已完整翻译,WG6我稍后会加入不同部分!

使用WorldGuard你可以
  • 保护你的服务器
  • 阻止火的传播,岩浆的流动,末影人拾取方块等等
  • 设定flag,比如“no pvp” 或 “no tnt”
  • 为特殊区域设置拥有者,只有指定玩家可以破坏
  • 以及许多有用的指令(建议查看搬运贴

目前大概就是这样(以后还会改动)
推荐By:henry5041

1》配设文件finished
2》指令介绍finished
  2.1》Region指令finished
     2.1.1》定义和重定义区域(define和redifine)finished
     2.1.2》区域圈地(claim)finished
     2.1.3》区域信息(information)finished
     2.1.4》区域选择(select)finished
     2.1.5》区域表列(list)finished
     2.1.6》设定flagfinished
     2.1.7》设定优先权(priority)finished
     2.1.8》设定子区域(parent)finished
     2.1.9》删除区域(remove)finished
     2.1.10》区域传送(teleport)finished
     2.1.11》区域管理(management)finished
3》权限介绍finished
4》regions教程finished
  4.1》基础教程finished
  4.2》flag列表finished
    4.2.1》区域权限组finished
  4.3》开发者 APIfinished ←翻译的不准确,建议查看官方Wiki
    4.3.1》取读WorldGuardfinished
    4.3.2》基础权限finished
    4.3.3》区域管理finished
        4.3.3.1》查看Flagsfinished
        4.3.3.2》取读一个区域finished
    4.4.4》Javadocsfinished
  4.4》数据格式finished 超链接
5》黑名单(Blacklist)finished By OAO_miao 超链接
6》箱子保护finished By snowclay 超链接
7》主机密码(登录密码)finishedBy snowclay 超连接
8》更多帮助finished 超连接

1→配设文件介绍WorldGuard在服务器运行后会生成2种配设文件全局配设文件(世界的默认设定):服务器文件夹/plugins/WorldGuard/config.yml
单独世界配设文件:服务器文件夹/plugins/WorldGuard/worlds/世界名称/config.yml


全局设定会影响整个服务器,单独世界设定如果有和全局不同的地方系统会为这个世界取读单独配设。比如说,如果你
在全服禁止了火的传播,所有世界都会禁止,但是一个单独世界可以修改单独配设来启动火的传播。



设定项 指令类型 默认设定 加入版本 指令介绍
summary-on-start boolean true 1.2 启动或重启时是否显示WorldGuard的配设摘要
op-permissions boolean true 5.0 是否给予OP全部权限
保护项设定
item-durability boolean true 1.4 是否启动物品耐久值
remove-infinite-stacks boolean false 5.1 是否允许WorldGuard扫描玩家背包并且删除无限叠加的物品
disable-xp-orb-drops boolean false 5.3 是否允许死亡后掉落经验球或附魔之瓶生成经验球
disable-obsidian-generators
箱子保护设定
enable boolean false 5.0 是否启动箱子保护
物理现象或行为设定
allow-portal-anywhereboolean false1.4 是否允许摆放传送门方块
no-physics-sand boolean false 1.4 是否阻止沙子的重力影响
no-physics-gravel boolean false 1.4 是否阻止沙砾的重力影响
disable-water-damage-blocks list [] 1.4 阻止列表上的方块ID被水
破坏,注意,必须是方块的ID,而不是物品的ID
vine-like-rope-ladders boolean false 5.6.3 是否让梯子的行为类似于藤蔓
需要点燃类设定
block-tnt boolean false 1.0 是否阻止TNT爆炸
block-tnt-block-damage boolean false 5.3 是否阻止TNT爆炸后对地形和entities造成伤害
block-lighter boolean false 1.0 是否阻止使用打火石
海绵设定
enable boolean false 1.0 是否恢复原版中海绵的功能
redstone boolean false 1.X 是否允许红石配合海绵使用
radius integer 3 1.2 海绵的影响半径(需要启动海绵功能)
火的设定
disable-lava-fire-spreadboolean false 1.0 是否阻止岩浆生成火焰
lava-spread-blocks list [] 1.0 允许岩浆的流动的方块表列,没有设定的话岩浆的流动不会受到限制
disable-fire-spread-blocks list [] 1.0 允许火的传播的方块表列,没有设定的话火的传播不会受到限制
disable-all-fire-spread boolean false 1.0 是否阻止全部火的传播(包括岩浆)
默认设定
disable-health-regain boolean false 5.2 是否阻止血量回复效果(目前会产生无法食用食物的BUG)
pumpkin-scuba boolean false 5.X 如果玩家头上戴着南瓜是否阻止溺水伤害
怪物设定
anti-wolf-dumbness boolean false 5.0 是否阻止狼之间的自相残杀(让我想起了Wolski)
disable-enderman-griefing boolean false 5.3 是否阻止末影人拾取方块和摆放方块
block-plugin-spawning boolean true 5.5 是否阻止插件生成怪物
block-creature-spawn list[] 5.0 不会生成的生物表列(例如“Pig”,”Chicken“,等等)
block-creeper-block-damage boolean false 2.2 是否阻止爬行者的的爆炸破坏地形,但是不会阻止伤害
block-creeper-explosions boolean false 1.0 是否阻止爬行者的爆炸
block-fireball-block-damage boolean false 5.3 是否阻止火球破坏方块
block-fireball-explosions boolean false 5.3 是否阻止火球的爆炸
block-wither-explosions boolean false 5.6.X 是否阻止凋零攻击的爆炸
block-wither-block-damage boolean false 5.6.X 是否阻止凋零破坏方块
block-wither-skull-explosions boolean false 5.6.X 是否阻止凋零骷髅攻击的爆炸
block-wither-skull-block-damage boolean false 5.6.X 是否阻止凋零骷髅攻击破坏方块
block-enderdragon-block-damage boolean false 5.6.X 是否阻止末影龙破坏方块
block-enderdragon-portal-creation boolean false 5.6.X 是否阻止末影龙死亡后生成传送门
block-painting-destroy boolean false 5.6.X 是否阻止怪物破坏画
block-item-frame-destroy boolean false 5.6.X 是否阻止怪物破坏物品展示框
block-above-ground-slimes boolean false 5.6.X 是否阻止史莱姆在正常地形生成(例如:沼泽)
block-other-explosions boolean false 5.6.X 是否阻止其他爆炸(例如来自插件,MOD等)
block-zombie-door-destruction boolean false 5.6.X 是否难度设定为Hard时阻止僵尸破坏门
自然现象设定
disable-ice-melting boolean false 5.2 是否阻止冰的融化
disable-snow-formation boolean false 5.2 是否阻止雪的生成
disable-mushroom-spread boolean false 5.2 是否阻止蘑菇的生成
disable-snow-melting boolean false 5.2 是否阻止雪的融化
disable-leaf-decay boolean false 5.2 是否阻止树叶消失
disable-ice-formation boolean false 5.2 是否阻止冰的生成
disable-grass-growth boolean false 5.3 是否阻止草方块扩散到相邻的泥土上
disable-mycelium-spread boolean false 5.6.1 是否阻止菌丝蔓延到附近的泥土方块上
天气设定
always-raining boolean false 5.1 是否一直下雨和下雪
disable-weather boolean false 5.1 是否阻止下雨和下雪,保持晴天
disable-lightning-strike-fire boolean false 5.1 是否阻止闪电产生火焰
always-thundering boolean false 5.1 是否一直打雷
prevent-lightning-strike-blocks list [] 5.1 阻止闪电攻击的方块ID表列(不会受到影响的方块)
disable-thunderstorm boolean false 5.1 是否阻止暴雨(或者暴风雨)
disable-pig-zombification boolean false 5.1 是否阻止猪变成僵尸猪人(被闪电劈中猪周围的4个方块以内)
disable-powered-creepers boolean false 5.1 是否阻止爬行者成为高压爬行者
农作物设定
disable-creature-trampling boolean false 5.1 是否阻止生物踩农作物
disable-player-trampling boolean false 5.1 是否阻止玩家踩农作物
玩家受到伤害设定
teleport-on-void-falling boolean false 5.0 玩家掉落虚空后是否传送到安全地点
disable-drowning-damage boolean false 1.7 是否阻止溺水伤害
disable-void-damage boolean false 5.0 是否阻止虚空伤害
disable-fire-damage boolean false 1.7 是否阻止火焰伤害
disable-lava-damage boolean false 1.7 是否阻止岩浆伤害
disable-tnt-damage boolean false 5.3 是否阻止TNT伤害
disable-mob-damage boolean false 5.0 是否阻止怪物伤害
disable-fall-damage boolean false 1.7 是否阻止掉落伤害
disable-explosion-damage boolean false 5.0 是否阻止爆炸伤害
disable-suffocation-damage boolean false 1.8 是否阻止窒息伤害
disable-contact-damage boolean false 1.8 是否阻止接触伤害(例如仙人掌)
disable-lightning-damage boolean false 5.0 是否阻止闪电伤害
teleport-on-suffocation boolean false 1.8 是否检测玩家在方块内时将玩家传送到目前方块最高点
(可以避免某些坐标BUG)
disable-death-messages boolean false 5.3 是否显示Minecraft 1.8的死亡信息
regions设定
enable boolean true 2.1 是否启动regions功能
max-region-count-per-player int 7 5.0 玩家regions最大数量(OP无限)
max-claim-volume int 30000 5.0 region最大空间(op无限)
玩家region设定
default int 7 玩家regions最大数量(OP无限)
claim-only-inside-existing-regions boolean false 5.0 是否只能在已存在region内圈地(功能不稳定,后果自负)
high-frequency-flags boolean false 5.0 是否启动region的flag都使用最高配设(建议不要启动,内存需求会增加许多)
wand int 334 3.0 检查region信息的物品,默认是皮革,需要worldguard.region.wand才可以使用
invincibility-removes-mobs boolean false 5.3 是否在无敌region内自动杀死怪物
SQL数据库设定(只能在全局config内设定)
use boolean false 是否启动SQL数据库
dsn string 看配设文件 SQL数据连接地址 默认是"jdbc:mysql://localhost/worldguard"
username string worldguard SQL数据库帐号
password string worldguard SQL数据库密码
use-scheduler boolean true 是否启动定时任务
use-creature-spawn-event boolean true mob-spawning(怪物生成)和deny-spawn(禁止生成)flags全局化
use-player-move-event boolean true exit/entry和greeting/farewell(进出region信息)flags全局化(取消可以提高点性能)
游戏设定(其实也只有药水)
block-potions list [] 5.6.1 禁止表列上的药水效果
block-potions-overly-reliably boolean false 5.6.1 如果上面的功能无效,请启动这个功能(功能不稳定,后果自负)
黑名单设定(以后会讲到)


2→指令介绍

基础指令
指令 参数 介绍
/god [玩家] 给予[玩家]无敌状态
/ungod [玩家] 取消[玩家]无敌状态
/heal [玩家] 治疗[玩家]
/slay [玩家] 杀死[玩家]
/stack
/;
…… 整理背包(自动叠加物品)需要权限 worldguard.stack.illegitimate
/locate [玩家] 指南针会指向[玩家]
紧急指令
指令 参数 介绍
/stopfire [世界名称] 在[世界名称]世界紧急停止火的传播,这是一个临时设定,重启后就会消失
/allowfire [世界名称] 取消/stopfire
/stoplag [世界名称] 在全服禁止所有程序,例如水和岩浆的流动,红石,火的传播,TNT爆炸,怪物生成,等等
可以暂时减少lag
/stoplag -c [世界名称] 取消/stoplag
/worldguard [玩家] 刷新已保存信息,最好是[玩家]卡在region内时使用(进出flag错误时)
WG指令
指令 参数 介绍
/worldguard version …… 查看目前worldguard版本
/worldguard reload …… 重载worldguard
/worldguard report [-p] Wordguard会模拟一份文件保存在WorldGuard的文件夹内,这份文件内会有你所有修改的文件和信息
如果加入 -p 就会把这份文件发送到Pastebin上,并且在游戏内或者后台反馈文件连接
RG指令(rg就是region)

定义和重定义区域(define和redifine)

/region define 区域名称 (玩家1) (玩家2) (玩家...)
/region def 区域名称 (玩家1) (玩家2) (玩家...)
/region d 区域名称 (玩家1) (玩家2) (玩家...)
()内容为可选项,如果没有指定玩家,定义后的区域将会属于输入命令的玩家(可以设定多个拥有者)

这个指令主要是创造区域,创造后才可以进行更多的设定,这个指令是没有限制区域大小的(根据WorldEdit选择的大小)
玩家部分也可以设定为权限组,这个指令主要是给管理员使用,玩家会有另外一个指令 /claim

/region define 区域名称 g:权限组名称 玩家1 玩家2
注*整个世界区域叫做 __global__

/region redefine 区域名称
/region update 区域名称
/region move 区域名称

这个指令会重定义已定义区域,选择好新区域后,输入指令后就可以重定义指定区域

区域圈地(claim)

/region claim 区域名称 (玩家1) (玩家2) (玩家...)

注意!这个指令是在2010年11至12月出现的,是很早期的指令,比Bukkit都早,在不久的将来会受到改善!
这个指令和define指令非常相似,但是加入了一些其他设定

  • 如果配设内有启动claim功能,玩家将会被限制区域数量
  • 创造新区域时不可以重复区域名称,除非你是拥有者,那么就会重定义该区域
  • 新区域不可覆盖其他区域
  • 如果配设内有启动claim功能,重新新区域时可以覆盖玩家拥有的其他区域
  • 如果配设内有启动claim功能,玩家将会被限制区域大小

区域信息(information)

/region info (-s)(世界名称) (区域名称)

列出区域的详细信息,内含

  • 区域名称(区域类型,优先权)
  • 区域flags
  • 区域拥有者
  • 区域成员
  • 区域边界

空的信息项不会显示
在指令内加入-s 会在显示信息的同时选择该区域
如果没有输入区域名称,插件会自动取读脚下的区域

列子:查看“TownPlot”区域的信息
/region info townplot

列子:查看地狱世界“TownPlot”区域的信息
/region info world_nether TownPlot

区域选择(select)

/region select [区域名称]
这个指令会选择区域
如果没有输入区域名称,插件会自动取读脚下的区域

列子:选择“TownPlot”区域
/region select townplot

区域表列(list)

/region list (页数)(-w 世界名称)(-p 玩家)

列子:列出第一页区域列表
/region list

列子:列出地狱世界第三页区域列表
/region list 3 -w world_nether

同时也可以只显示"玩家"的区域,影藏其他区域,需要在指令内加入-p 玩家

列子:列出玩家1的区域列表
/region list -p 玩家1

设定flag

/region flag 区域名称 flag (-g 权限组) [-w 世界名称] (数据值)
这个指令可以为区域设定flag,如果(数据值)没有填的话,选择的flag就会被清除(还原)
你们必须明白区域优先权和父子区域的关系才可以正确的设定flag,所以最好去查看flag列表

列子:“TownPlot”区域禁止pvp的flag
/region flag townplot pvp deny

列子:在“duduworld”世界“TownPlot”区域禁止pvp的flag
/region flag townplot pvp -w duduworld deny

列子:“TownPlot”区域设定欢迎信息的flag
/region flag townplot greeting 欢迎你来到这个区域, %name%!
进入“TownPlot”区域显示:欢迎你来到这个区域, 玩家ID!

列子:“TownPlot”区域清除退出信息的flag
/region flag townplot farewell
效果:退出“TownPlot”区域时不显示退出信息

设定优先权(priority)

/region setpriority [区域名称] (-w 世界名称) [优先权]
/region priority [区域名称] (-w 世界名称) [优先权]
/region pri [区域名称] (-w 世界名称) [优先权]

设定区域优先权,[优先权]处得填一个整数,可以是正数也可以是负数。

设定子区域(parent)

/region setparent [子区域] [父区域]
/region parent [子区域] [父区域]
/region par [子区域] [父区域]

设定子区域。


删除区域(remove)

/region remove [区域名称] (-w 世界名称)
/region rem [区域名称] (-w 世界名称)
/region delete [区域名称] (-w 世界名称)
/region del [区域名称] (-w 世界名称)

删除一个区域


区域传送(teleport)

/region teleport (-s) [区域名称]
/region tp (-s) [区域名称]

传送到某个区域内,如果加入-s就会传送到区域设定的重生点。


区域管理(management)

/region load (-w 世界名称)
/region save (-w 世界名称)

加载或者保存设定完的区域。
注意!如果没保存加载时会丢失设定的项目,但WorldGuard的指令在修改完某项设定会自动保存。(通常不会出现这种情况)

/region migratedb [1] [2]
转移region文件yml格式到数据库MySQL,或者相反。


3→权限介绍

其他指令
指令 权限
/locate
  • worldguard.locate
/stack
  • worldguard.stack
  • worldguard.stack.illegitimate
  • worldguard.stack.damaged
紧急指令
指令权限
/stopfire worldguard.fire-toggle.*
/allowfire worldguard.fire-toggle.*
/halt-activity worldguard.halt-activity
/halt-activity -c worldguard.halt-activity
Region指令
指令 权限
/region define         worldguard.region.define
/region redefine
  • worldguard.region.redefine.own(允许region拥有者重定义他们的region)
  • worldguard.region.redefine.member(允许region会员重定义他们的region)
  • worldguard.region.redefine
在5.8+版本这3个权限有改动,注意别弄错了!
  • worldguard.region.redefine.own.*
  • worldguard.region.redefine.member.*
  • worldguard.region.redefine.*
/region claim
  • worldguard.region.claim
/region select
  • worldguard.region.select.own.* (允许region拥有者选择他们的region)
  • worldguard.region.select.own.<region>(允许region拥有者选择他们指定region)
  • worldguard.region.select.member.*(允许region拥会员选择他们的region)
  • worldguard.region.select.member.<region>(允许region会员选择他们指定region)
  • worldguard.region.select.*
  • worldguard.region.select.<region>(允许选择一个指定region
然后可以使用/region info查看region的信息(别忘记加入-s 这个flag)
/region info
  • worldguard.region.info.own
  • worldguard.region.info.member
  • worldguard.region.info.*
在5.7+版本这3个权限有改动,注意别弄错了!
  • worldguard.region.info.own.*
  • worldguard.region.info.member.*
  • worldguard.region.info.*
/region addowner
  • worldguard.region.addowner.own.*
  • worldguard.region.addowner.member.*
  • worldguard.region.addowner.*
/region removeowner
简化
/region remowner
  • worldguard.region.removeowner.own.*
  • worldguard.region.removeowner.member.*
  • worldguard.region.removeowner.*
/region addmember
  • worldguard.region.addmember.own.*
  • worldguard.region.addmember.member.*
  • worldguard.region.addmember.*
/region removemember
简化
/region remmember
/region removemem
/region remmem
  • worldguard.region.removemember.own.*
  • worldguard.region.removemember.member.*
  • worldguard.region.removemember.*
/region list
  • worldguard.region.list.own(查看个人region列表)
  • worldguard.region.list
(!如果没标注世界,默认会搜索所在世界内的region)
/region flag
  • worldguard.region.flag.regions.own.*(允许region拥有者为自己的region设定flag)
  • worldguard.region.flag.regions.own.<region>(允许region拥有者为指定region设定flag)
  • worldguard.region.flag.regions.member.*(允许region会员为自己的region设定flag)
  • worldguard.region.flag.regions.member.<region>(允许region会员为指定region设定flag)
  • worldguard.region.flag.regions.*
  • worldguard.region.flag.regions.<region>(允许为指定region设定flag
Flag权限
  • worldguard.region.flag.flags.<flag>.*(允许设定指定flag)
  • worldguard.region.flag.flags.*(允许设定全部flag)
例如设定允许打开箱子(chest-access)flag
worldguard.region.flag.flags.chest-access.*(玩家就可以设定chest-access这个flag了

/region setpriority         
  • worldguard.region.setpriority.own.* (允许rg拥有者为自己的rg设定优先权)
  • worldguard.region.setpriority.own.<region>(允许rg拥有者为指定rg设定优先权)
  • worldguard.region.setpriority.member.*(允许rg会员为自己的rg设定优先权)
  • worldguard.region.setpriority.member.<region>(允许rg会员为自己的rg设定优先权)
  • worldguard.region.setpriority.*
  • worldguard.region.setpriority.<region>(允许设定指定rg优先权
/region setparent
  • worldguard.region.setparent.own.* (允许rg拥有者为自己的rg设定子区域)
  • worldguard.region.setparent.own.<region>(允许rg拥有者为指定rg设定子区域)
  • worldguard.region.setparent.member.*(允许rg会员为自己的rg设定子区域)
  • worldguard.region.setparent.member.<region>(允许rg会员为指定rg设定子区域)
  • worldguard.region.setparent.*
  • worldguard.region.setparent.<region>(允许为指定rg设定子区域
/region teleport
  • worldguard.region.teleport.own.* (允许rg拥有者传送到自己的rg)
  • worldguard.region.teleport.own.<region>(允许rg拥有者传送到指定rg)
  • worldguard.region.teleport.member.*(允许rg会员传送到自己的rg)
  • worldguard.region.teleport.member.<region>(允许rg会员传送到指定rg)
  • worldguard.region.teleport.*
  • worldguard.region.teleport.<region>(允许传送到指定rg)
/region remove
  • worldguard.region.remove.own.*(允许rg拥有者删除自己的rg)
  • worldguard.region.remove.own.<region>(允许rg拥有者删除指定rg)
  • worldguard.region.remove.member.*(允许rg会员删除自己的rg)
  • worldguard.region.remove.member.<region>(允许rg会员删除指定rg)
  • worldguard.region.remove.*
  • worldguard.region.remove.<region> (允许删除指定rg)
WG指令
指令权限
/worldguard version         没有权限(默认OP)
/worldguard reload
  • worldguard.reload
/worldguard report
  • worldguard.report
  • worldguard.report.pastebin(会自动发布到pastebin上

其他额外的权限

  • worldguard.region.bypass.<world> (无视所有rg内设定的限制项-可指定世界)
  • worldguard.notify (玩家尝试破坏blacklist表列物品时提示OP-以及拥有这个权限的玩家)
  • worldguard.chest-protection.override(无视rg箱子保护)
  • worldguard.override.chest-protection(和上面那个功能一样)


4→Region教程
基础教程

开始前我们必须安装Worldedit配合WorldGuard才可以使用!
不熟悉/不知道Worldedit? 点我传送
以下教程内Worledit会简称为WE,Worldguard为WG。
一、区域的选择
1.通过WE选择2点来确定一个立方体(于平时WE选择一样)
扩大选择区域(复制于WE搬运贴)





2.创造region
/region define <region_名称>
或(更详细指令)
/region define <region_名称> [拥有者1] [拥有者2] [拥有者3] (…….)
创造这个region,创造一个region后,例如我们的就叫做Mcbbs,那么默认玩家就不能破坏这个region内的物品(其他设定稍后再说)

3.添加成员/会员以及删除

/region addmember <region_名称> [会员1] [会员2] [会员3] (…….)
例如
/region addmember Mcbbs Lichi2050
意思就是在Mcbbs这个region内,玩家Lichi2050也就是我,可以破坏(默认没有修改破坏flag时都有效)。

删除也是原理,只不过指令稍微改变了一下
/region remember <region_名称> [会员1] [会员2] [会员3] (…….)


4.添加拥有者以及删除


/region addowner <region_名称> [拥有者1] [拥有者2] [拥有者3] (…….)
例如
/region addowner Mcbbs Lichi2050
意思就是在Mcbbs这个region内,我Lichi2050是这个region的拥有者(可以设定/修改这个region的任何设置)。

删除也是原理,只不过指令稍微改变了一下
/region remowner <region_名称> [拥有者1] [拥有者2] [拥有者3] (…….)

5.region优先权以及子区域

/region setpriority <region_名称> <优先权>
<优先权>是一个数字,他可以是正数例如3,也可以是负数例如-1
数字越大,优先权就越大,例如region1的优先权是2,region2的优先权是5 那么region2的配设会取代/覆盖region1的设定(当然如果2个区域没有覆盖那么设不设定优先权都无所谓)。

/region setparent <子_region_名称> <父_region_名称>
首先我们得先了解什么是子区域,子区域有什么用处其实设定父子区域意思和继承差不多(使用权限组插件的朋友相信会很清楚)
子region会取读父region的拥有者,会员,以及flag设定(就不用重复设定了,方便)
Flag列表

总共有67个flag可设定(有几个在5.X版本内无法使用,我会在WG6内重新介绍)
Flag 介绍
passthrough 是否启动验证region破坏权限,意思就是检不检查玩家破坏权限(基本用不到)
build 是否启动建筑flag,默认region是不可以建筑的,只有region拥有者或会员可以建筑,建议不要修改这个flag
construct 不推荐使用:这个flag错误过多,已经损坏,请勿使用,否则后果自负
pvp 是否启动PVP
mob-damage 怪物是否可以造成伤害
entity-item-frame-destroy 是否可以破坏物品展示框
entity-painting-destroy 是否可以破坏画
exp-drop 是否掉落经验球(就是经验值)
item-drop 是否可以扔物品
mob-spawning 是否生成生物
Flag 介绍
creeper-explosion 是否允许爬行者破坏地形以及伤害玩家(造成伤害值)
other-explosion 是否阻止其他爆炸破坏地形以及伤害玩家(例如凋零或MOD物品)
enderman-grief 是否允许末影人破坏地形
enderpearl 是否运行玩家使用末影珍珠进入或者退出region
enderdragon-block-damage 是否允许末影龙破坏地形
ghast-fireball 是否允许恶魂火球破坏地形以及伤害玩家
sleep 是否允许玩家使用床(睡觉)
tnt 是否允许TNT引爆
lighter 是否允许使用打火石
fire-spread 是否允许火焰蔓延
Flag 介绍
lava-fire 是否允许岩浆燃烧附近方块(就是生成火焰)
lightning 是否允许闪电打到region内(唔,看闪电几率大概遇不到吧)
chest-access 是否允许玩家在region内可以打开/使用/互动箱子,熔炉或其他
pistons 是否允许使用活塞
water-flow 是否允许水的流动
lava-flow 是否允许岩浆的流动
use 是否允许与门,按钮,压力板等互动(使用)
vehicle-place 是否允许摆放移动工具类物品(矿车,船等)
vehicle-destroy 是否允许破坏移动工具类物品(矿车,船等)
snow-fall 是否允许生成雪(region内)
Flag 介绍
snow-melt 是否允许雪在region内融化
ice-form 是否允许冰块在region内生成
ice-melt 是否允许冰块在region内融化
mushroom-growth 是否允许蘑菇在region内成长
leaf-decay 是否允许树叶在region内腐化/消失
grass-growth 是否允许草地蔓延到土方块上
mycelium-spread 是否允许菌丝蔓延到土方块上
vine-growth 是否允许藤蔓成长
invincible 是否在region内启动无敌(进入region内的玩家都会无敌)
entry 设定特殊权限组才可以进入这个region
Flag 介绍
entry-group 已删除,该flag已经替换成entry flag了
exit 设定特殊权限组才可以离开这个region
exit-group 已删除,该flag已经替换成exit flag了
greeting 设定玩家进入region时收到的提示
farewell 设定玩家退出region时收到的提示
notify-enter 功能与greeting相同,不过需要权限worldguard.notify
notify-leave 功能与greeting相同,不过需要权限worldguard.notify
deny-spawn 设定什么怪物不可在region内生成
/region flag <region_名称> denyspawn 怪物
例如
/region flag Mcbbs denyspawn creeper
意思就是在Mcbbs这个region内不会生成爬行者
heal-delay 设定回血速度
heal-amount 设定回血数量
Flag 介绍
heal-min-health 设定最小回血数量
heal-max-health 设定最大回血数量
feed-delay 设定掉饥饿度速度
feed-amount 设定掉饥饿度数量
feed-min-hunger 设定掉饥饿度最小数量
feed-max-hunger 设定掉饥饿度最大数量
teleport 设定region传送点
/region teleport <region_名称>
传送到region内
spawn 设定region出生点
/region flag region x y z
price 未加入
buyable 未加入
Flag 介绍
allow-shop region内是否启动ChestShop插件
搬运贴 http://www.mcbbs.net/thread-224529-1-1.html
blocked-cmds 设定禁止指令(就是在region内禁止使用什么指令)
allowed-cmds 设定允许指令(就是在region内可以使用什么指令)
send-chat 是否可以说话
receive-chat 是否可以收到别人说的话
game-mode 设定region模式(生成/创造/观众等模式)
potion-splash 是否允许药水效果

区域权限组

区域权限组为
members 成员
nonmembers 非成员
owners 拥有者
nonowners 非拥有者
everyone 全部玩家

注*如果直接修改regions.yml区域权限组有改动(全部变成大写并且everyone变成ALL)!

MEMBERS 成员
NON_MEMBERS 非成员
OWNERS 拥有者
NON_OWNERS 非拥有者
ALL 全部玩家


区域权限组有什么用呢? 在设定flag时可以专门只为一个权限组设定flag(别和权限组插件搞混了!!!)
例如
/rg flag <region_名称> exit deny
/rg flag <region_名称> exit -g nonowners
我们的region还是叫做Mcbbs

首先第一个指令禁止了退出(出去)这个region
下一个指令设定了-g nonowners 意思就是非拥有者玩家不可退出Mcbbs这个region

或者你也可以设定例如只禁止什么人进入,又或者什么人进入后会无敌等等(看各自的脑洞吧)

下面要讲的是关于开发者API,如果你不是开发者请直接跳过这一步(不然脑细胞会咋样我可不负责!Σ( ̄□ ̄;))
开发者API
由于本人对API不是很精通,所以只能傻傻的翻译wiki内如有错误还请大神提示。
访问/取读WorldGuard

一个参考的列子
  1. Example: Getting a reference to WorldGuard
  2. import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
  3. import org.bukkit.plugin.Plugin;

  4. private WorldGuardPlugin getWorldGuard() {
  5.     Plugin plugin = getServer().getPluginManager().getPlugin("WorldGuard");

  6.     // WorldGuard 没有加载
  7.     if (plugin == null || !(plugin instanceof WorldGuardPlugin)) {
  8.         return null; // 也许你想提示一个错误
  9.     }

  10.     return (WorldGuardPlugin) plugin;
  11. }
复制代码
在较新的Worldguard(我说版本)内,你可以使用Static方式
列子:使用WGbukkit取读Worldguard
  1. import com.sk89q.worldguard.bukkit.WGBukkit;

  2. // 现在你需要取读Worldguard
  3. // 例如, 集合所有的region到一个点
  4.     ApplicableRegionSet set = WGBukkit.getRegionManager(world).getApplicableRegions(location);
复制代码
你可以查看Javadocs

基础权限
你成功取读/访问Worldguard后,你可以设定例如“can build?”就是“是否可建筑”在WorldGuardPlugin内查看
  1. boolean canBuild(org.bukkit.entity.Player player, org.bukkit.Location location)
复制代码
  1. boolean canBuild(org.bukkit.entity.Player player, org.bukkit.block.Block block)
复制代码
列子
玩家是否可以破坏脚下的方块

  1. <div>return getWorldGuard().canBuild(player,</div><div>        player.getLocation().getBlock().getRelative(0, -1, 0));</div>
复制代码
区域管理

Worldguard可以直接查询全局设定,也可以在指定世界查询单独region,为了方便开发人员取读API,在WorldGuardPlugin内设定成这样即可访问单独region设定。
  1. com.sk89q.worldguard.protection.manager.RegionManager getRegionManager(org.bukkit.World world)
复制代码
Warning/注意: 这个方式可以设定为 can return null, 在指定世界关闭.


列子

  1. return getWorldGuard().getRegionManager(world);
复制代码


获取Flags或build/破坏 信息,你需要使用ApplicableRegionSet,设置完后可以转换玩家资料使用LocalPlayer,坐标使用Vector。

还是看列子吧我难以表达:

使用ApplicableRegionSet查询破坏权限


  1. <blockquote>import com.sk89q.worldguard.protection.managers.RegionManager;
复制代码



查看Flags

Flags都保存在com.sk89q.worldguard.protection.flags.DefaultFlag,你不可以直接添加自定义flag,你需要先到ApplicableRegionSet,使用正确的method设定,还得看flag的类型


如果是StateFlag 使用

  1. boolean allows(StateFlag flag, LocalPlayer player)
复制代码

如果是StateFlag,where you can't pass a player, 使用(待翻译)
  1. boolean allows(StateFlag flag)
复制代码

如果是其他的Flag,使用
  1. mixed getFlag(Flag flag)
复制代码

列子
检查Pvp的Flag
  1. return set.allows(DefaultFlag.PVP);
复制代码

DefaultFlag的一部分内容

  1. <blockquote>// ...
复制代码


访问/取读一个Region
region保存在com.sk89q.worldguard.protection.regions.ProtectedRegion,有很多种子class可以设定,例如ProtectedCuboidRegion或ProtectedPolygonalRegion。
如果想通过region的名称取读这个region,可以使用RegionManager
  1. ProtectedRegion getRegion(String id)
复制代码

如果想通过区域/Area取读region,可以使用ApplicableRegionSet

  1. <div>for (ProtectedRegion region : set) {</div><div>    // region 写在这里</div><div>}</div>
复制代码

设定一个Flag,使用
  1. region.setFlag(flag, flag.parseInput(plugin, sender, value))
复制代码

如果这个flag是复制于com.sk89q.worldguard.protection.flags.DefaultFlag,那么使用
  1. ? parseInput(WorldGuardPlugin plugin, CommandSender sender, String input)
复制代码

再发一次Javadocs


欢迎查看sk89q其他插件wiki:Wikihttp://wiki.sk89q.com/wiki/Main_Page

开发者API这个部分应该还存在不少错误,这个部分建议玩家还是去啃英文



   
The Command's Power    插件中文百科合作编写者




——感谢OAO_miao和snowclay的参与。
  ——Lichi2050                                          












[groupid=1009]The Command's Power[/groupid]