轻松搭建现代化 Minecraft 服务器(进阶插件篇)


寒假宅家无事可做,何不邀请同学朋友来玩 Minecraft?

meme

本文将简述一台现代化 Minecraft 服务器的必备插件。

(或者直接加入 JBESU.COM 一起玩)

目录

  1. 轻松搭建现代化 Minecraft 服务器(基础服务篇)

  2. 轻松搭建现代化 Minecraft 服务器(进阶插件篇)

需求

本文假定你已经拥有了一台兼容 Bukkit API 的 Minecraft 服务器 (PaperMC 或 Spigot)。

在安装插件时,请注意版本兼容性。

身份验证

使用插件:LoginSecurity (https://github.com/lenis0012/LoginSecurity-2)

因为本文使用 1.15.2 服务器,更好用(但略重型)的 AuthMeReloaded (https://github.com/AuthMe/AuthMeReloaded) 暂未支持(截至 Jan, 2020),故暂时采用轻量化的 LoginSecurity。

默认配置就可以使用,详细配置参见文档。

客户端兼容

使用插件:ProtocolSupport (https://protocol.support/)

因很多客户端为了使用老版本 OptiFine 而停留在 1.14.4,故采用此插件来兼容其登录。

1.15 就加了个蜜蜂,所以兼容使用完全没有影响。

之前的 Via* 三件套都不更新了,这个还在跟进,且只需要一个插件,很方便,比开箱即用还简单,签收即用。

快捷方式

使用插件:EssentialsX (https://essentialsx.cf/)

依赖:Vault (https://github.com/milkbowl/Vault)

包含很多有用的小东西(飞行、一键回家、传送确认、木牌传送、交易、经济…)

所有权限默认对普通用户不开启,所以需要配置下方的权限插件,对普通用户授权。

权限控制

使用插件:LuckPerms (https://luckperms.net/)

给 OP 其实是很危险的行为,所以推荐使用权限管理插件赋予有限的类 OP 权限,而把真正的 OP 只留给腐竹本人。

默认行为是保留原版的权限控制(即 OP 拥有所有特权),若想授予普通用户特权,须参文档详细配置。

一个默认用户组的 EssentialsX 权限配置样例:

# File Path: ./yaml-storage/groups/default.yml
name: default
permissions:
- essentials.signs.use.*
- multiverse.access.*
- essentials.help
- essentials.home
- essentials.kit
- essentials.motd
- essentials.msg
- essentials.sethome
- essentials.sethome.bed
- essentials.tpa
- essentials.tpaccept
- essentials.tpdeny
- essentials.warp
- essentials.warp.list
- multiverse.core.list.who
- multiverse.core.list.worlds
- multiverse.core.spawn.self
- multiverse.core.tp.self

包含了一些常用功能,如果想取消或添加其他内容参见文档(https://essinfo.xeya.me/permissions.html)

批量编辑

使用插件:WorldEdit (https://dev.bukkit.org/projects/worldedit)

只要制定立方体两角便可以批量清空、设置、替换、拷贝。还有其他很多方便的功能,可以用来快速编辑服务器公共区域,详情参见文档。

世界保护

使用插件:WorldGuard (https://dev.bukkit.org/projects/worldguard)

依赖:WorldEdit

保护世界不受破坏(这么说有点中二?)

由两部分构成:

  1. 全局设置

全局的保护内容,默认全部不开启,用不到就可以不管。

  1. 世界区域设置

对使用 WorldEdit 画出的区域命名并进行配置。

一部分是控制世界行为的,如 creeper-explosion, fire-spread 等;

一部分是控制玩家行为的,如 build, use, interact 等,区域 OwnerMember 以外的用户将受限制。

区域可以覆盖,当重叠部分的两个区域对同一个 flag 都进行了设置时,高优先级覆盖低优先级(世界内全局 __global__ 总有最低优先级)。

一个可行的样例:

__global__:
  members: {}
  flags:
    creeper-explosion: deny # 默认不允许苦力怕破坏
    use: allow # 默认允许用户开关门等
    pvp: deny # 默认不允许 PVP
    # 默认世界不生成怪物(mob-spawn: deny 也禁用了和平生物,所以用这个)
    deny-spawn: ['minecraft:blaze', 'minecraft:pillager', 'minecraft:giant',
        'minecraft:skeleton', 'minecraft:elder_guardian', 'minecraft:zombie_pigman',
        'minecraft:ravager', 'minecraft:ghast', 'minecraft:guardian', 'minecraft:vindicator',
        'minecraft:magma_cube', 'minecraft:spider', 'minecraft:creeper', 'minecraft:wither',
        'minecraft:evoker', 'minecraft:slime', 'minecraft:phantom', 'minecraft:witch',
        'minecraft:wither_skeleton', 'minecraft:husk', 'minecraft:ender_dragon',
        'minecraft:shulker', 'minecraft:cave_spider', 'minecraft:enderman',
        'minecraft:silverfish', 'minecraft:stray', 'minecraft:endermite',
        'minecraft:vex', 'minecraft:zombie', 'minecraft:drowned', 'minecraft:zombie_villager']
    ride: allow
  owners: {}
  type: global
  priority: 0
monster-tower:
  min: {x: 1, y: 2, z: 3}
  max: {x: 1, y: 2, z: 3}
  members: {}
  flags:
    # 刷怪塔区域,覆盖 __global__ 禁止生成的怪物,只禁止巫师和小鸡生成
    deny-spawn: ['minecraft:witch', 'minecraft:chicken']
  owners: {}
  type: cuboid
  priority: 1

# 我家
forewing's:
  min: {x: 1, y: 2, z: 3}
  max: {x: 1, y: 2, z: 3}
  members:
    unique-ids: [xxx]
  flags: {lava-fire: deny, fire-spread: deny}
  owners:
    unique-ids: [xxx]
  type: cuboid
  priority: 1

除了 __global__ 区域,其他区域默认不允许其他用户进行一切操作(passthrough),但为了让其他用户可以开关门,在全局里允许 use,此后就不需要在受保护的区域里单独设置了。

多世界

使用插件:MultiVerse (https://dev.bukkit.org/projects/multiverse-core)

可以创建一个超平坦挖矿世界供玩家挖矿,创建一个地皮区让玩家可以有自己的封地等。

离线皮肤

使用插件:SkinsRestorer (https://www.spigotmc.org/resources/skinsrestorer.2124/)

离线服务器默认不支持皮肤,可以通过本插件进行设置。