RCC文档Worlds

多世界

服务器不止一个世界。这一页讲它们之间怎么走,以及为什么同一件事在不同世界里表现不一样。

服务器不是一个世界,是好几个:红石创造、地皮、小游戏,各自独立。这一页讲它们之间怎么切换,以及为什么同一件事在不同世界里的表现会不一样。

世界之间怎么走

菜单里的「世界」,或者:

/rsw list          看有哪些世界
/rsw tp <世界>     过去
/rsw info <世界>   看这个世界的规则和准入条件

/rsw/rswworld 的别名,两个都能用。世界名有补全,按 Tab。

新开的世界不用重启就会出现在补全里。 反过来,补全里有但传不过去的世界也存在——见下面「进不去的世界」。

五个模板

模板 是什么 怎么来的
void 一片虚空 新建
flat 超平坦 新建
overworld 主世界 启动时接管
nether 下界 启动时接管
end 末地 启动时接管

前两个是插件向引擎申请出来的新维度,后三个是原版本来就有、插件把它们纳入管理。

区别只在「怎么来的」,管理方式是一样的——主世界同样能设按维度规则、同样能设准入、同样能设游戏模式。

为什么这一条要专门说

早先的版本只管新建出来的那些维度,主世界、下界、末地不在管辖内。结果是:你在地皮世界被切成创造,走回主世界还带着创造模式

「不能新建」和「不管」是两回事。现在五个模板都在管辖内,跨世界走一圈该掉的东西会掉。

按维度的 13 条规则

这些规则每个世界一份,改一个世界不影响别的:

规则 管什么
spawn_monster 僵尸骷髅这类敌对生物自然刷怪
spawn_animal 羊牛鸡这类动物自然刷怪
spawn_spawner 刷怪笼产不产
explode_blocks 爆炸破不破坏方块
fire_spread 火会不会蔓延
mob_griefing 生物能不能改方块(苦力怕、末影人、羊吃草)
projectile 弹射物生不生效
piston_push 活塞能不能推
liquid_flow 水和岩浆流不流
farmland_decay 耕地会不会被踩坏
ride 能不能骑乘
piston_cross_plot 活塞能不能越过地皮边界推
entity_cross_plot 实体能不能越过地皮边界

管理员用 /rsw rule <世界> <规则> <true|false> 改,立刻生效,不用重启

这些不是 gamerule

基岩版的 gamerule 是全服一份的。想让创造世界不刷怪,原版的唯一办法是把 doMobSpawning 关掉——而那会连生存世界一起关掉。

上面这 13 条走的是插件自己的事件,所以才能做到「创造世界不刷怪,生存世界照常刷」。代价是它们和原版 gamerule 不是同一套东西,/gamerule 查不到它们,/rsw info 才查得到。

每个世界还能单独设的

除了那 13 条,这些也是按世界走的:

说明
游戏模式 进这个世界时强制切到某个模式;也可以设成不强制
允许的模式 玩家自己 /gm 能切到哪几种
玩家互相伤害 走插件自己的攻击事件,不是 gamerule
摔落伤害 / 火焰伤害 分开的两项
允许飞行 管的是「进来那一刻还能不能飞」
背包隔离 这个世界的背包和别处分开存
天色锁定 把时间钉在某一刻
出生点 传送进来落在哪

「允许飞行」不等于「禁用 /fly」。 前者管的是你踏进这个世界那一刻手上的飞行能力,后者是权限的事。挂着飞行传进一个不许飞的世界,你会当场落地。

背包隔离打开之后,小游戏里捡的东西不会带回创造世界,反过来也一样。

谁能进

两种方式,可以叠加:

  • 按权限组:设一个阶梯和最低组,够格才让进
  • 点名放行trust 名单里的人无视上面那条
/rsw access <世界> <阶梯> <最低组>
/rsw access <世界> none          取消限制
/rsw trust <世界> add|del <玩家>

不设的话默认所有人都能进。

进不去的世界

世界列表里可能出现一个标着「进不去」的世界。这不是 bug,是如实汇报。

维度号是引擎分配的,插件每次启动都要重新申请一次。申请失败的世界拿不到号,插件会把它标成不可用,所有查询都会说「进不去」。

为什么不干脆把它藏起来

因为藏起来之后你会以为这个世界被删了,然后去重建一个同名的。

更糟的是另一种做法:假装它可用。那样你会传送过去,然后掉进虚空——目标维度根本不存在,落点是未定义的。宁可挂个牌子说进不去。

看到这个牌子在群里说一声,这通常意味着服务端有一条启动日志需要看。

管理员命令

/rsw list | info <世界> | templates | status | rules
/rsw create <名字> <模板> [种子]
/rsw delete <世界>
/rsw rule <世界> <规则> <true|false>
/rsw gamemode <世界> <模式|none>
/rsw access <世界> <阶梯> <最低组>   |   /rsw access <世界> none
/rsw trust <世界> add|del <玩家>
/rsw spawn <世界> <x> <y> <z>   |   /rsw spawn <世界> clear
/rsw attr <世界> <键> [值]
/rsw tp <世界> [玩家]

/rsw rules 列的就是上面那 13 条的名字,忘了怎么拼可以现查。

常见问题

我在地皮世界是创造,回主世界为什么变生存了?

正常。游戏模式是按世界配的,走出去就按新世界的规则来。

背包里的东西不见了?

先看是不是跨了一个开了背包隔离的世界。回到原来那个世界东西就在。真丢了在群里说,有存档。

为什么 /gamerule 看不到那 13 条?

它们不是 gamerule,是插件自己的规则。/rsw info <世界> 能看到当前值。

新建的世界会占多少空间?

void 模板几乎不占,flat 按你走过的区块长。没人去的世界不会自己生成地形。

这套是自己写的吗?

是。多维度调度、按维度规则、准入判定都是自研,地皮世界也是由它创建之后交给地皮插件登记的——世界的所有权只有一处,这是设计上刻意定死的规则。