• 欢迎来到Minecraft插件百科!
  • 对百科编辑一脸懵逼?帮助:快速入门带您快速熟悉百科编辑!
  • 因近日遭受攻击,百科现已限制编辑,有意编辑请加入插件百科企鹅群:223812289

“WorldGuard”的版本间的差异

来自Minecraft插件百科
跳转至: 导航搜索
基础教程
基础教程
第157行: 第157行:
 
1.通过WE选择2点来确定一个立方体(于平时WE选择一样)<br />
 
1.通过WE选择2点来确定一个立方体(于平时WE选择一样)<br />
 
扩大选择区域<br />
 
扩大选择区域<br />
指令://expand <amount> [direction]<br />
+
指令:
 +
          //expand <amount> [direction]<br />
 
           //expand <amount> <reverse-amount> [direction]<br />
 
           //expand <amount> <reverse-amount> [direction]<br />
 
           //expand vert<br />
 
           //expand vert<br />
第166行: 第167行:
  
  
用法://expand  扩大格数(数字) 方向(N S W E U D)<br />
+
用法:
 +
          //expand  扩大格数(数字) 方向(N S W E U D)<br />
 
           //expand 扩大格数  反向扩大格数(可以不写)<br />
 
           //expand 扩大格数  反向扩大格数(可以不写)<br />
 
           //expand vert<br />
 
           //expand vert<br />

2015年10月22日 (四) 02:23的版本

Mcbbs发布贴http://www.mcbbs.net/thread-505810-1-1.html

配设文件

指令介绍

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)

区域表列(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)f

/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,或者相反。

权限介绍

regions教程

基础教程

开始前我们必须安装Worldedit配合WorldGuard才可以使用!
不熟悉/不知道Worldedit
以下教程内Worledit会简称为WE,Worldguard为WG。

1.通过WE选择2点来确定一个立方体(于平时WE选择一样)
扩大选择区域
指令:

          //expand <amount> [direction]
//expand <amount> <reverse-amount> [direction]
//expand vert

效果:第一个:通过指定的方向扩大(东南西北上下)

          第二个:通过面向的方向扩大(东南西北)
第三个:垂直方向扩展到基岩以及天空

说明:对于指定的方向,用”N”(北),”S”(南),”W”(西),”E”(东),”U”(上),”D”(下)来代表方向(实际太阳升起的方向是南方。。即S,至于为什么我也不知道)。对于面向的方向,如果不出入WENS之类的就会默认为像面向的方向扩展。最后一个则是垂直方向上下完全扩展。


用法:

          //expand  扩大格数(数字) 方向(N S W E U D)
//expand 扩大格数 反向扩大格数(可以不写)
//expand vert

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列表

区域权限组

开发者 API

取读WorldGuard

基础权限

区域管理

查看Flags

取读一个区域

Javadocs

查看Javadocs

数据格式

Region数据都保存在regions.txt内. 打开后首先会有:

Region ID
Region 类型(type)

Worldguard3.0版本以下的保存方式:
Point 1 X region坐标
Point 1 Y ↓
Point 1 Z ↓
Point 2 X ↑
Point 2 Y ↑
Point 2 Z region坐标
Priority 优先权(请勿设定为0)
List of owners 拥有者列表
List of flags Flags列表(设置过的)
Entry message (进入region提示信息/欢迎语)

Worldguard3.0版本以上的保存方式:
Point 1 X region坐标
Point 1 Y ↓
Point 1 Z ↓
Point 2 X ↑
Point 2 Y ↑
Point 2 Z region坐标

Priority 优先权(请勿设定为0)
ID of parent region 父regionID(设置过子region才会显示)
List of owners 拥有者列表
List of members 会员列表
List of flags Flags列表(设置过的)
Entry message (进入region提示信息/欢迎语)
Exit message (退出region提示信息)

拥有者以及会员数据保存方式:
u: 玩家名称
g: region权限组

例如
u:sk89q,u:tetsu,g:admins

意思就是sk89q以及tetsu这两个玩家都在admins组内。

Flags数据保存方式:
每一个flag都会有一个特殊的字母,例如Build就是b,通过一个+或者-我们能够查看这个flag的状态
+就是启动
-就是关闭/禁止
如果没有+或- 那么代表这个flag默认就是启动的
例如
+bpmc-t-l-f-F

Flag 名称 代表字母
Passthrough z
Build b
PvP p
Mob damage m
Creeper explosion c
TNT t
Flint and steel l
Fire spread f
Lava fire spread F

黑名单(Blacklist)

worldguard黑名单可以指定玩家进行某些动作时的处理方法

比如: 阻止玩家挖掉金矿石。 当有人挖掘钻石块时通知在线管理员。 当玩家放置附魔台时,向放置者发送一条提示消息。

下面是一个黑名单的例子:

除admins,mods组以外 禁止使用岩浆桶 并向使用者发送自定义提示消息
[lavabucket]
ignore-groups=admins,mods
on-use=deny,tell
message=不可以使用岩浆桶呢喵!

禁止挖掉铁矿和金矿并提示默认消息 同时通知在线管理员
[goldore,ironore]
ignore-groups=admins
on-break=deny,tell,notify

除admins组外禁止放置tnt 放置时会通知管理员并且踢出去
[tnt]
ignore-groups=admins
on-place=deny,notify,kick

黑名单配置文件

黑名单的配置文件保存在plugins\WorldGuard\worlds下面,每个世界都有单独的配置文件
例子:

worlds/world/blacklist.txt 主世界
worlds/world_the_end/blacklist.txt 末地
worlds/mining_world/blacklist.txt 资源世界(如果服务器有多世界的话)

提示 worldguard不支持多个世界共用同一个黑名单配置文件,但是你可以利用文件系统的“链接”实现。
注意:编辑黑名单后需要用/wg reload重新加载才能生效

格式:

[物品或方块列表]
事件=操作
选项=值

匹配规则:

物品/方块列表可以填写数字id或bukkit的材料名(可参考 https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html)
多个项目之间用半角逗号分隔
[wood,brick,glass]
还可以指定数据值如白桦木:
[17:1]
白桦木和丛林木:
[17:1;3]
指定数据值范围
[wood:2-3]
[wood:>=2,<=3]
这些写法是可以混合使用的
[wood:0;>=2,grass:1-2]

事件:

Event Explanation
on-break 破坏方块
on-destroy-with 用此物品打破方块
on-place 放置方块
on-use 使用
on-interact 交互,如右键门、拉杆、箱子等
on-drop 丢弃特定物品
on-acquire 获得物品
on-dispense 针对发射器,发射特定物品

操作:

Action Explanation
deny 阻止操作 (黑名单模式)
allow 允许操作(仅白名单模式)
notify 发送通知消息给有worldguard.notify权限的人
log 记录日志到终端、日志文件、数据库。
tell 给玩家一个提示消息
kick 踢出玩家
ban 将玩家ban掉(永久性)

选项:

Option Explanation
ignore-groups 忽略特定权限组,多个组用半角逗号分隔
ignore-perms 忽略有特定权限的玩家,多个权限同样是用逗号分隔
comment 自定义通知消息
message 自定义tell的消息,可用%s表示相应物品名

另外一个列子

放置和打破信标时通知在线管理员
[beacon]
on-break=notify
on-place=notify
阻止用钻石镐和金铲子破坏方块
[diamond_pickaxe,284]
on-destroy-with=tell,deny
阻止使用铁锄、钻石剑耕地和攻击
[iron_hoe,276]
on-use=tell,deny
阻止与箱子、石头按钮交互
[chest,stone_button]
on-interact=deny,tell
阻止丢出命令方块
[commandblock]
on-drop=deny,tell
message=不要乱丢命令方块~
除admins组外 阻止获得基岩
[bedrock]
on-acquire=deny
ignore-groups=admins
阻止发射器发射岩浆桶和漏斗矿车
[lavabucket,hopper_minecart]
on-dispense=deny,log,notify
[tnt]
on-break=deny,notify,kick
on-use=deny,notify,kick
on-place=deny,ban
on-acquire=deny

日志 日志有三种选择

  • 输出到终端(就是服务器后台)
  • 记录日志到文件
  • 记录到数据库

在worldguard配置文件(plugins\WorldGuard\config.yml)中可以对日志文件和数据库进行具体设置。

blacklist:

   use-as-whitelist: false
logging:
console:
enable: true
database:
enable: false
dsn: jdbc:mysql://localhost:3306/minecraft
user: root
pass:
table: blacklist_events
file:
enable: false
path: worldguard/logs/%Y-%m-%d.log
open-files: 10

日志文件的路径中可使用以下“变量”:
%Y 年 (YYYY)
%m 月 (MM)
%d 日 (DD)
%W 周 (00-52)
%H 小时(24小时) (HH)
%h 小时(12小时) (HH)
%i 分 (mm)
%s 秒 (ss)
%u 用户名
%% 表示“%”符号

数据库
worldguard可以将日志记录进mysql数据库,但需要先创建数据库和表,你可以使用下面的语句创建专用的表

CREATE TABLE IF NOT EXISTS `blacklist_events` (

`id` int(11) NOT NULL AUTO_INCREMENT,
`world` varchar(10) NOT NULL,
`event` varchar(25) NOT NULL,
`player` varchar(16) NOT NULL,
`x` int(11) NOT NULL,
`y` int(11) NOT NULL,
`z` int(11) NOT NULL,
`item` int(11) NOT NULL,
`time` int(11) NOT NULL,
`comment` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)

);

最后说一下,使用时发现,日志文件功能在某些平台下可能无法正常工作,同时会导致黑名单失效,开启此功能时请务必进行测试。 发射器的部分可能会和其他插件的发射器黑名单冲突导致报错。


箱子保护

WorldGuard提供基础的箱子保护服务, 玩家可以通过在箱子下方放置特殊字符的牌子来达到保护的目的。 我们不建议新设置的WorldGuard使用本功能因为本功能并不是WorldGuard常用的一部分 除此以外,区域设置是比本功能更好的保护拥有者财产的方法。 因为它不涉及像漏斗一类方块的问题。

提示:如果你是希望保护单块的方块,箱子等, 我们建议使用第三方保护插件。 例如Lockette 或者 LWC.

启用此功能: 首先箱子保护功能必须在配置文件中启用。 如果没有手动启用,箱子保护功能不会自动工作 这时不能使用牌子锁功能。(此项功能也可在配置文件中禁用)

使用方法:

  1. 必须是一个信息牌
  2. 必须位于箱子下面(如果是大箱子,只需在其一侧下面)
  3. 在第一行输入[Lock]
  4. 在第二行输入玩家的名字
  5. 在剩余两行写上其他允许使用玩家的名字

注:不可将其他玩家名字放在第二行的位置 提示:WorldGuard功能并不支持UUID功能 警告:由于Minecraft1.8版本的改变 从旧版本升级将会破坏掉所有的保护牌子 实际上它将破坏全部写有[]的牌子

主机密码(登录密码)

在过去由于Minecraft的登录代码问题,玩家可以登录到服务器的任何玩家包括拥有者和管理者的账号上, 在2010-2013年间,有五次利用该性质的漏洞经常导致成千上万的服务器被黑客攻击。

这项登录密码功能作为一个额外的登录屏障被添加到WorldGuard中。 其工作原理是作为一项额外的屏障来达到此功能,与Mojang的登录无关。 在登录时必须发送指定信息 (通俗的说就是输入你的密码)才能登录服务器。 即使攻击者有能力破坏Minecraft的登录系统来成为一个管理员。 但因在服务器缺少发送指定的信息,经服务器检测后无法活动。 注:这种登录验证方式的漏洞是很不明显的,很少见的。

启用功能: 当一个玩家通过某一个地址连接服务器时,输入play.example.com Minecraft将会告诉服务器该玩家通过这个地址登录 管理者可以通过一个特殊的秘密语句来登录, 比如secretmod.play.example.com这个地址 服务器将会检测到该管理者登录使用的这个地址。 也就是一个类似密码的机制,不过密码是地址格式。

主机密码允许特定玩家使用特定地址登录, 如果地址错误,他将立即被踢下线

配置:

host-keys:

   your_username: bagels.play.example.com
   moderator1_name: manoverboard.play.example.com

提示:主机密码功能暂不支持UUID功能

DNS配置: 为了使此功能工作,你需要bagels.play.example.com 和 manoverboard.play.example.com 指向你的服务 然而不要在您使用的域名中添加域名的记录,因为很容易使得攻击者找出管理员域名从而登录。


相比之下,我们建议您安装通用地址-“wildcard addresses.”。例如设置了play.example.com, 这将意味着任何相同前缀会允许登录。(例如aa.play.example.com,ab.play.example.com,ac.play.example.com,等)。 提示:如果你没有一个域名或不能设置通配符地址,你可以使用xip.io。

更多帮助

你需要更多的帮助吗?我建议你

你可以去IRC提问
注*IRC聊天频道是维基百科24小时开放的“聊天室”

你可以在Twitter上联系sk89q
sk89q是Worldguard的作者(也是Worldedit以及其他不少插件的作者)

你可以查看Changelog(全英文,英文不好的直接跳过吧)
Changelog就是更新信息(每次更新修改/增加/删除等等了什么)

你如果有什么建议,或者发现了什么Bug可以到这里反馈 (全英文,英文不好的直接跳过吧)