想要让创造模式玩家在服务器里也拆不了方块,最直接的办法是给服务端安装世界保护插件并配置权限节点,而不是依赖游戏规则。在Java版服务器中,以WorldGuard插件为核心,配合LuckPerms删除OP的覆盖权限,就能让创造模式玩家在保护区域内完全动不了任何方块,这条路径适用于绝大多数主流服务端,包括Paper、Spigot、Purpur。
我的世界服务器怎么设置创造模式不能拆方块
很多服主第一次遇到这个问题时,第一反应是去翻游戏规则,比如设置keepInventory或者mobGriefing,但这些规则只管掉落物和生物破坏,对创造模式的玩家来说完全没有约束力,创造模式玩家拆方块,本质上是服务器权限系统放行了他们的操作请求,所以根本解决思路是让服务器拒绝这个请求。
先理清一个概念:客户端怎么显示是读取服务器发来的数据,真正决定“能不能拆”的是服务端,就算玩家在客户端里用F3+C切到创造模式,服务器不认可,依然拆不了任何方块,服务端收到玩家的方块破坏数据包后,会先检查这个玩家是否拥有对应区域的build权限,没有就直接忽略并同步回正确的方块状态,理解了这一点,你就知道还是要靠插件来做服务端层的拦截。
为什么创造模式能在服务器里拆方块
默认情况下,服务端把OP视为拥有全部权限的人,你通过op命令给玩家发了管理员权限,他们自然能绕过大部分保护限制,更隐蔽的是,某些权限插件默认给通配符权限,这等于把所有插件的最高权限都送出去了,其中就包括WorldGuard的worldguard.region.override,这个权限是设计给管理员用的,拥有它就能无视区域保护,直接破坏方块。
还有一种常见情况是:服务器只装了领地插件,比如Residence或GriefPrevention,但这些插件默认只保护已标记的领地,没有覆盖整个地图,创造玩家飞到领地外面,照样能够拆山填海,要想全地图都禁止创造破坏,就只能引入全局区域保护,或者用一种更严格的权限方案。
mc服务器防破坏插件推荐:WorldGuard与替代方案
长远来看,没有哪个插件可以做到“装上就能永久防熊”,但WorldGuard在功能性、稳定性和普及度上仍然是第一选择,官方页面显示它有完善的区域保护、方块交互限制、爆炸保护,而且和EssentialsX、FastAsyncWorldEdit都能无缝配合。
| 插件方案 | 核心功能 | 适合场景 | 短板 |
|---|---|---|---|
| WorldGuard | 区域保护、全局flag、爆炸保护 | 大型综合服务器、建筑服 | 需要额外插件配合才能精确管理权限 |
| Residence | 圈地、权限分玩家管理 | 生存服、玩家自治型服务器 | 全局保护偏弱,每个地方都要圈 |
| GriefPrevention | 自动圈地、信任系统 | 小型服务器、纯净生存 | 创造模式保护逻辑偏单一 |
| CoreProtect | 方块记录查询、回滚 | 任何服务器,作为兜底方案 | 不能阻止破坏,只能事后处理 |
行业共识是,主城、商店区、礼包领取区这类公共区域一定要圈出来单独保护,野外区域则用全局禁止破坏来兜底,仅仅让玩家“拆不了”还不够,你最好同时安装CoreProtect并开启记录,这样如果权限漏洞被钻了空子,你还能查出来是谁干的,几分钟内就能把被拆的建筑回滚到原来的样子。
WorldGuard区域保护完整操作流程
第一步是安装插件,把WorldGuard和WorldEdit的jar文件都拖进服务端的plugins文件夹,重启服务器,WorldGuard依赖WorldEdit提供区域坐标和可视化工具,只装它不装WorldEdit会直接报错,装载失败。
第二步是设置全局保护,在控制台或游戏内输入以下命令:
/rg flag __global__ build deny
这条命令会把整个地图的build权限设为拒绝,注意__global__前后是双下划线,中间没有空格,执行成功后再输入:
/rg flag __global__ use deny
use这个flag用来控制门、按钮、箱子的交互,在生存服务器里,如果你连箱子都不让创造玩家打开,就需要把它也设为deny,但是use设为deny也可能导致玩家打不开任何门,所以建议在公共建筑区域单独设一个例外区域,把use重新设为allow。
第三步是处理权限覆盖,如果你用的是LuckPerms,输入:
/lp group default permission unset worldguard.region.override
这一步非常关键。worldguard.region.override是世界守卫提供的最高权限,拥有它就能绕过区域保护直接拆方块,OP默认组里通常自动带着这个权限,你需要把它删掉,或者建立一个独立的admin权限组,只给真正需要管理的站长本人,对于领取了OP的玩家,检查一下他们的权限组,如果还在default组就把override权限删干净。
所有命令执行完后,创造模式玩家无论怎么切换游戏模式,在__global__区域内都拆不了方块。
权限节点:删除OP的override权限
很多服主会忽略一个细节:WorldGuard的build限制,只对“非区域成员”生效,如果你之前把某个创造玩家加进了某个区域当成员,那这个玩家还是能拆区域内的方块,确认所有权关系必须单独处理:
/rg removemember 区域名 玩家名
假如你没有删除OP的override权限,即使你把区域flag全设为deny,拥有OP的玩家依然能暴力拆方块,这是官方设计如此:管理员永远需要能强制干预的能力,所以要么把OP关闭,要么把OP权限组里所有包含worldguard.region.override的权限全部移除,严谨起见,建议同时用/lp group op permission unset worldguard.region.override操作一遍。
还有一种情况是玩家通过其他途径获得了通配权限,比如装了GroupManager的旧配置文件里默认给default组赋予了,这时候就需要查看权限组配置,把所有通配符权限删除,再单独装着WorldGuard、EssentialsX需要的特定权限节点,不要怕麻烦,权限系统本身就是一个要花时间打磨的东西。
创造模式与权限的边界:常见冲突场景
解决完上面的问题后,你还要面对一个实际矛盾:创造玩家拆不了方块,但他们还需要放置方块来建房或做地图,怎么区分“拆”和“放”?WorldGuard的buildflag把两种操作合在一起管理,你不能只允许放置而完全禁止破坏,这时候就需要拆分区域管理策略。
常见做法是设置两个区域:一个是公共建筑区,build设为deny,创造玩家在这里完全不能动方块,适合做活动场地或展示区;另一个是玩家个人区域或建筑工地,把玩家加为区域成员,build设为allow,在这个区域里可以随便搭建和拆除,两个区域的飞行权限不冲突,玩家在创造模式里依然可以飞行,只是破坏行为被限制在特定范围内。
另一个高频冲突是,创造玩家在飞行时误触了台阶、按钮,或者试图打开箱子,却发现无法交互,这很可能是因为你把useflag也统一设成了deny,如果只要防拆方块,不要限制交互,那就在全局把build设为deny,保持use不变或设为allow,就能避免误伤。
按服务器类型选方案
不同类型的服务器,侧重点不一样,不能一把梭全用同样的配置。
- 生存服务器:重点是保护公共建筑和出生点区域,在出生点附近用WorldGuard圈一个范围较大的区域,
build设为deny,然后用Residence或GriefPrevention让玩家圈地,圈地内的方块只归地主人管,这样即便某些玩家获得了创造权限,也只能在领地外飞,动手拆别人的房子会被拦截。 - 空岛服务器:每个玩家都有自己的一块空岛,空岛外没有任何可破坏的东西,这种情况更适合用岛屿插件配合WorldGuard做全局保护,把整个地图的
build设为deny,再用插件自动把岛屿所有者加进对应区域的成员列表,玩家在岛屿范围内可以自由建造,离开岛屿后什么都拆不了。 - 建筑服务器:一般会专门给建筑玩家开创造模式,然后要求他们在指定区域内施工,这个场景直接画一个大型建筑区域,把建筑组内所有玩家加为区域成员,
build设为allow,区域外依然全部deny,建筑玩家能正常用各种方块材料搭建,但同时无法破坏区域外的任何地形。 - 租赁服务器:很多玩家用的是面板服或VPS,可以直接登录服务器面板下载WorldGuard插件,租来的服务器自带开服工具,普遍是Paper或Spigot内核,插件兼容性没问题,如果面板自带了基础领地插件,要确认它是否支持全局flag,不支持就卸掉换WorldGuard。
如何发现谁在拆方块:CoreProtect排查法
配置再完善也难免有漏洞,比如某个插件把自己的API权限暴露给了普通玩家,哪怕权限已经很严格,也保不齐有零日漏洞,所以一套完整的防破坏方案里必须包含事后追溯机制。
CoreProtect是业界使用最频繁的记录插件,它能记录谁的什么操作方块的坐标、时间和动作,安装了CoreProtect后,不用改任何配置就能自动记录方块放置、破坏、容器操作、液体流动,如果你的服务器资源足够,把数据库设置成SQLite就够用,不需要单独部署MySQL。
查到破坏者后,回滚操作也很简单:
/co rollback 玩家名 time 7d action destroy
这条命令会把这个玩家过去7天内的所有破坏动作全部撤销,还有/co inspect模式下点击方块可以直接看到谁动过它,不用查日志文件,流程很直观,这就是为什么建议所有服务器不管规模大小都配上CoreProtect,它相当于给方块操作装了一份保险柜记录。
基岩版跨平台服务器的特殊处理
如果你的服务器用Geyser或Floodgate让基岩版玩家也能进,那WorldGuard对它们同样有效,因为Geyser在服务器端模拟的就是Java版协议,只要在服务端配置文件里把allow-bedrock-clients开启,基岩玩家就完全走Java版的权限判断流程,没有区别。
但如果你使用的是纯BDS(基岩版官方服务端),WorldGuard就装不了,这种情况下可以用Bedrock版的功能插件如BlockLy,或者使用第三方核心如PocketMine-MP,再安装对应的领地插件,这些插件虽然生态不如Java版丰富,但框架思路一致,照样能实现“创造模式进保护区域拆不了方块”。
电记:创造模式的方块操作在客户端是即时反馈的,但在服务端权限系统里一切都会被验证,只要服务器插件权限组配置正确,创造玩家连草方块都别想挖掉。
我的世界服务器防破坏常见问题解答
问:我装了WorldGuard并设置了全局build deny,为什么创造玩家还能拆方块?
答:检查两点,第一,玩家是否是某个区域的成员,/rg removemember移除他,第二,玩家是否拥有worldguard.region.override权限,OP默认有,用LuckPerms在权限组里删掉,大多数情况都是这两处配置漏了。
问:想让创造玩家在特定区域能建筑,但其他区域不能拆,怎么做?
答:在指定区域里把玩家设为区域成员,然后在该区域执行/rg flag build allow,区域外保持__global__的build deny,这样玩家只能在这个区域内改变方块状态,区域外所有操作都会被服务器拒绝。
问:装了WorldGuard对服务器性能影响大吗?
答:WorldGuard方式是基于区域坐标判断的,在配置合理的前提下对服务器性能影响相当小,TPS不出现明显下降,如果服务器配置比较低,避免划分几千个重叠区域,数量控制在二百以内即可,绝大多数场景完全够用,多区域重叠会导致每次方块操作都要遍历多个区域数据,在低配服务器里最多带来几毫秒的额外延迟,普通情况不用考虑这个问题。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/717273.html





