昨天晚上服务器被陌生玩家入侵了,熊孩子把出生点附近的俩房子都给烧了,然后把箱子洗劫一空。
由于服务器主要是和同学朋友一块玩的,因此没有设置任何权限,为了追求原汁原味的生存也没加任何管理插件,甚至连爆炸保护都没开。
那个入侵者是怎么进来的、到底是谁也无可稽考。之前并没有随随便便在互联网上公布过ip地址,因此推测可能是用脚本随机试ip一个一个试出来的。
因此服务器管理类插件还是很有必要的。
单独开白名单也不够用的,攻击者似乎可以得知白名单上的ID...然后直接顶着白名单ID进来,原版服务端对异地登录一点限制都没有。个人Minecraft服务器被境外黑客/熊孩子攻击的事例分享 - 哔哩哔哩 (bilibili.com)
安装的插件都扔到服务器的plugins目录下。
几个常用插件
Vault
这个是作为一个前置,下载地址:Vault | SpigotMC - High Performance Minecraft
EssentialsX
EssentialsX下载地址:EssentialsX | SpigotMC - High Performance Minecraft下载 - EssentialsX
(也可以cd到服务器的plugins目录下
输入 wget https://ci.ender.zone/job/EssentialsX/lastSuccessfulBuild/artifact/jars/EssentialsX-2.21.0-dev+68-993d7ed.jar
把EssentialsX下载下来(右键网页上的Download按钮取得下载链接)。)
GroupManager
一个权限组插件,操作简单,适用于所有插件的权限节点的给予和删除。
例如给予所有玩家使用某一指令指令:/mangaddp Default 权限
Residence
领地管理类插件Residence:Residence file downloader (zrips.net),需要前置CMILib:CMILib | SpigotMC - High Performance Minecraft。
Authme
登录插件,用户需要设置密码才能注册登录,可以有效防止顶着白名单上的ID进来搞破坏的情况AuthMeReloaded | SpigotMC - High Performance Minecraft。
EssentialsX的配置
第一次运行EssentialsX后会在plugins目录下创建一个新目录Essentials
其中打开motd.txt可以修改用户登录时的欢迎文字。
custom_items.yml文件里可以给物品设置别名,例如把cooked_porkchop(熟猪排)设置别名breakfast,把sand(沙子)设置别名snad(应该是为了防止打错)
config.yml里配置插件的基本参数,跟服务器保护有关,比如说可以把protect: prevent:栏里的苦力怕爆炸对建筑、物品的毁坏给关了(设置为true即为阻止破坏)
worth.yml可以配置物品在服务器里的货币价值,或者在服务器里通过/setworth
指令直接修改物品价值。
userdata目录里存放着用户数据,用vim打开其中一个用户的文件,可以设置teleportenabled:false来禁止此玩家传送,还可以查看玩家ip地址等,查看玩家上一次下线时位置等信息。
EssentialsX支持经济系统,比如
/eco give playername number
可以给予玩家多少多少货币(管理员权限)
/pay
玩家向其他玩家支付货币
/sell
玩家出售物品
更详细地使用应该要弄那些商店系统了,Residence领地插件购买地皮也需要用到Ess里的货币。
Residence领地插件的配置
在config.yml里可以把Language改为Chinese。
我一般习惯把这两项设置为true,这样圈地时就不需要考虑Y轴了(自动包含领空和地下):
IgnoreY: false
NoCostForYBlocks: false
(这样圈地的价格就特别便宜了,可以自己调整土地价格,由于我主要是自己人玩服务器用来保护建筑的,所以并没有在意经济系统的平衡)
SelectionToolId为圈地工具,默认圈地工具为WOODEN_HOE即木锄。
木锄左键选取第一个点,右键选取第二个点。
输入/res create [新领地的名字]
可以创建两点之间的领地。
输入/res remove
可以删除领地
注意:Residence默认的领地最大范围只有16x16,有点太小了,需要在groups.yml这个文件里边修改MaxEastWest和MaxNorthSouth参数。
config.yml里的其他配置项<点击展开>
#搬运自https://bbs.gmjaja.com/thread-16-1-2.html
# 这是领地插件主要的配置文件.
Global:
# 是否启用UUID
# 如果你不知道是什么,建议你不要进行修改
UUIDConvertion: true
# 如果你是盗版服务器,建议设置成true,这有助于解决玩家的UUID问题.
OfflineMode: false
# 是否自动检测新版本并提示OP
versionCheck: true
# 这里加载语言文字,文件都在Language文件夹中
# 所有的语言都会来自这些文件. (未完成)
Language: English
# 木棍是默认的圈地工具
# 如果你想看更多物品ID可以进入这个网页: http://www.minecraftwiki.net/wiki/Data_values
SelectionToolId: 280
Selection:
# 如果设置为true,则高度是从基岩到天空(即忽略Y坐标大小)
IgnoreY: false
# 如果设置为true,则玩家只需要支付X/Z方块的价钱,无视高度
# 这会使领地价格降低至256倍多,因此在设置选项时要调整价格
NoCostForYBlocks: false
# 这个决定你可以用什么工具查看领地信息,默认是线
# 简单的拿着这个工具,然后点击领地任意一个地方,它就会显示领地信息
InfoToolId: 287
Optimizations:
# 这个是领地插件默认的世界. 默认的世界是 'World'. 这个选项最好与 essential 的设置相匹配
DefaultWorld: world
DisabledWorlds:
# 禁用插件的世界列表
List: []
# 在禁用的世界中,是否禁用世界的监听器
DisableListeners: true
# 在禁用的世界中,是否禁用所有的领地指令
DisableCommands: true
# 在领地被标识的时间时,显示的间隔延迟
# 建议设置为 10 秒,这有助于降低系统检测
ItemPickUpDelay: 10
AutomaticResidenceCreation:
# 如果设置为true, 输入/res auto 会检测其他领地是否与新领地的区域冲突,以避免重叠
# 如果设置为false,性能上会有一些增加,但是会让旧领地与新领地重叠
CheckCollision: true
GlobalChat:
# 禁用或启用领地聊天修改,这包括玩家所在的领地名
Enabled: false
# 修改领地聊天格式. 添加聊天格式, 你可以把这些%1添加到聊天格式中,并禁用该选项.
SelfModify: true
Format: '&c[&e%1&c]'
# 如果设置为true, 那么tp到没有tp权限的领地内, 该选项会启用
# 这个选项可以防止第三方传送插件的传送,比如 ess的/tpa
BlockAnyTeleportation: true
# 这里的选项可以用 residence.max.res.[number] 权限覆盖
# 例如,你给玩家设置最大数量为10,这里就设置为15,如果是30,就设置为35,这仅仅是为了以防万一
MaxResCount: 30
# 这里的选项可以用 residence.max.rents.[number] 权限覆盖
# 例如,你给玩家设置最大数量为10,这里就设置为15,如果是30,就设置为35,这仅仅是为了以防万一
MaxRentCount: 10
# 这里的选项可以用 residence.max.subzones.[number] 权限覆盖
# 例如,你给玩家设置最大数量为10,这里就设置为15,如果是30,就设置为35,这仅仅是为了以防万一
MaxSubzoneCount: 5
# 这里的选项可以用 residence.max.subzonedepth.[number] 权限覆盖
# 例如,你给玩家设置最大数量为10,这里就设置为15,如果是30,就设置为35,这仅仅是为了以防万一
MaxSubzoneDepthCount: 5
# 如果设置为true, 其他的pvp插件将不会优先判断
# Overridepvp 这个Flag 可以无视其他插件的PVP保护
OverridePvp: false
KickLocation:
# 如果设置为true, 那么玩家不会提出指领地外, 而是下面的这个坐标
Use: false
World: world
X: 0.5
Y: 63.0
Z: 0.5
# 头的上下方向: 大于 0 - 向上, 小于 0 - 向下. 范围为 -90 到 90
Pitch: 0.0
# 头左右的方向: 从左到右. 范围为 -180 到 180
Yaw: 0.0
FlyLandLocation:
# 当玩家是飞行状态时,领地的fly是flag关闭的,并且没有地方让玩家降落,则会传送到以下的坐标
World: world
X: 0.5
Y: 63.0
Z: 0.5
# 头的上下方向: 大于 0 - 向上, 小于 0 - 向下. 范围为 -90 到 90
Pitch: 0.0
# 头左右的方向: 从左到右. 范围为 -180 到 180
Yaw: 0.0
ShortInfo:
# 如果设置为true, 当list的flag关闭时,使用指令 /res info 查看领地信息,你只能获得列表中的名字,并且会悬浮在空中
Use: false
Vote:
# 范围可以由玩家投票, 默认情况下是 0 到 10 分钟
RangeFrom: 0
RangeTo: 10
# 如果设置为true, 则玩家可以给喜欢的商店一些小费
OnlyLike: false
Intervals:
# 在flag打开的时候, 生命值/饥饿度 会在几秒内持续增加
# 设置更大可以优化一下性能
Heal: 1
Feed: 5
# 如果你的领地没有开启 pvp flag,那么包含"thos"效果的药水会失效
NegativePotionEffects:
- blindness
- confusion
- harm
- hunger
- poison
- slow
- slow_digging
- weakness
- wither
NegativeLingeringPotions:
- slowness
- instant_damage
- poison
- slowness
# 从 wspeed1 到 wspeed2 的速度. 设置范围为 0 到 5
WalkSpeed:
'1': 0.5
'2': 2.0
# 间隔时间,以毫秒为单位
# 减少检查次数会增加服务器的性能
# 增加这些时间的话,玩家可以在移动受限制的区域移动,然后再被传送出去
MoveCheckInterval: 500
Tp:
# 以秒为单位,用于传送功能
# 设置为0禁用
TeleportDelay: 3
# 当玩家传送到领地内时,会显示一个固定的信息
TeleportTitleMessage: true
RandomTeleportation:
Worlds:
world_nether:
Enabled: true
MaxCoord: 1000
MinCord: 500
CenterX: 0
CenterZ: 0
world:
Enabled: true
MaxCoord: 1000
MinCord: 500
CenterX: 0
CenterZ: 0
world_the_end:
Enabled: true
MaxCoord: 1000
MinCord: 500
CenterX: 0
CenterZ: 0
# 在使用指令时要等待多长的时间
Cooldown: 5
# 会有多少次尝试找到正确的传送位置
# 尽量保持数字低,因为玩家可以在延迟过后再试一次
MaxTries: 20
# 保存领地的时间间隔,以分为单位
SaveInterval: 10
# 新的保存机制可以最小化保存文件的速度和时间,并节省加载时间
# 大的文件会产生一些大的影响
NewSaveMechanic: false
Backup:
AutoCleanUp:
# 你是否想从备份的文件夹中自动删除备份文件(除非这些备份文件已经非常大了
Use: false
Days: 30
# 你是否想备份文件转成zip文件
# 这不会对备份文件产生影响
UseZip: true
IncludeFiles:
Worlds: true
forsale: true
leases: true
permlists: true
rent: true
flags: true
groups: true
config: true
AutoCleanUp:
# 玩家在 X 天后没登陆则会自动删除领地
# 玩家可以用 residence.cleanbypass 权限无视选项
Use: false
# 玩家需要多少天没登陆才删除他的领地
Days: 60
# 删除的世界
Worlds:
- world
Lwc:
# 租用/购买领地时是否移除所有LWC的保护
OnDelete: true
# 在购买领地时,是否删除已有的LWC保护
OnBuy: true
# 在不租用领地时,是否删除已有的LWC保护
OnUnrent: true
# 删除保护的物品(这里不支持数字,但是支持名字和NBT
MaterialList:
- CHEST
- TRAPPED_CHEST
- furnace
- dispenser
AntiGreef:
TNT:
# 如果设置成true,则超过62格TNT将会无法爆炸
# 启用它将会允许TNT小游戏带来更多乐趣
ExplodeBelow: false
level: 62
Creeper:
# 如果设置成true,则超过62格苦力怕将会无法爆炸
# 启用它将会允许小游戏带来更多乐趣
ExplodeBelow: false
level: 62
Flow:
# 这是限制水和岩浆流动时高度的设置
# 这个选项不会限制领地内水和岩浆的高度
Level: 63
# 如果设置为true, 则会限制岩浆的高度
NoLavaFlow: true
# 如果设置为true, 则会限制水的高度
NoWaterFlow: true
Worlds:
- world
Place:
# 这里将会限制水和岩浆开始放置的地方
# 这个选项不会限制领地内水和岩浆的高度
Level: 63
# 如果设置为true, 则会限制岩浆的高度
NoLavaPlace: true
# 如果设置为true, 则会限制水的高度
NoWaterPlace: true
Worlds:
- world
BlockFall:
# 如果设置为true, falling blocks will be deleted if they will land in different area(不懂qwq
Use: true
# Level from witch one to start block block's fall
# 这个选项不会限制领地内的outside
Level: 62
Worlds:
- world
ResCleaning:
# 如果设置为true, 下列的方块会被空气所代替
# 可以有效的防止玩家在其他人领地附近创建领地放置液体后删除,以此进行领地破坏
Use: true
# 限制的高度
Level: 63
# 被替换的方块的列表
# 默认情况下,只有水和岩浆会被替换
Blocks:
- 8
- 9
- 10
- 11
Worlds:
- world
Flags:
# 默认设置为true,这可以让 flags 更改后也进行保护,防止一些特殊的情况
# 例如,防止其他人进入领地后修改pvp的flag以此进行击杀
Prevent: true
list:
- pvp
# 如果没有给予其他权限组权限或者不使用权限插件,则将会使用下面的组名
DefaultGroup: default
# 启用/禁用租.赁系统
UseLeaseSystem: false
# 设置日期格式,如租。赁过期或租。赁的时间
# 你可以适当的修改, 你可以查看此网站获得更多的时间格式
DateFormat: E yyyy.MM.dd 'at' hh:mm:ss a zzz
# 显示日期的时区,当服务器在不同国家时,将会默认此时区为默认时间
# 你可以适当的修改, 你可以查看此网站获得更多的时间格式
TimeZone: Asia/Shanghai
# 启用/禁用 删除领地时返还金钱
ResMoneyBack: false
# 在多少分钟内, 可以返还租.赁的钱 (需要开启租.赁系统).
LeaseCheckInterval: 10
# 如果玩家还持有钱,此将会为玩家自动续费租。赁的领地(如果经济插件被警用,此选项将会什么都做不了)
LeaseAutoRenew: true
# 是否启用权限插件
EnablePermissions: true
# 如果不使用 Permissions 或 PermissionsBukkit插件, 或旧版的 Permissions ,请设置为true
LegacyPermissions: false
# 启用/禁用 经济系统 (支持的插件有:iConomy, MineConomy, Essentials, BOSEconomy, 和 RealEconomy ).
EnableEconomy: true
# 如果启用了更多信息,将会在领地出租/出售时提示他人如何租用/购买领地
ExtraEnterMessage: true
Sell:
# 如果设置为true, 这将会允许出售字领地,不建议设置为false
Subzone: false
# 启用/禁用出租系统
EnableRentSystem: false
Rent:
# 这可以防止 领地/子领地被删除了还是可以租用
PreventRemoval: true
Inform:
# 通知玩家租用将会过期
OnEnding: true
# 何时开启对玩家租用领地过期的提醒
Before: 1440
# 玩家在登陆多少秒后提示租用领地即将过期
Delay: 60
DefaultValues:
# 出租领地时的默认选项
AllowRenewing: true
StayInMarket: true
AllowAutoPay: true
# 如果设置为true, 如果玩家没有启用自动支付,那么这个选项将会帮助他选择
PlayerAutoPay: true
Schematics:
# 实验选项!!! 如果设置为true, 出租的领地会在回收时还原默认的样子
# 你可以给这权限 residence.backup 或者设置 backup 这个flag可以修改此选项
RestoreAfterRentEnds: true
# 如果设置为true, 只有 backup 开启时才会备份
# 如果设置为false, 每个出租的领地都会备份,到时间结束时就会自动还原
# 请记住,当它设置为false时,服务器的负担会更大
SaveOnFlagChange: true
# 在多少分钟内,出租的领地过期后多少分钟还原(需要开启租.赁系统)
RentCheckInterval: 10
# 启用/禁用领地聊天系统
ResidenceChatEnable: true
ActionBar:
# 对于 ActionBar - 1.8 的新特性
# 如果设置为false,则使用旧的方法传递 进入/离开 领地的信息
General: true
ShowOnSelection: true
TitleBar:
# 如果设置为true 将会把 进入/离开 领地的信息显示在 正标题/副标题 中
# 在设置 正标题/副标题时候,可以用 %subtitle% 来写副标题
EnterLeave: false
# 领地聊天的颜色
ResidenceChatColor: DARK_PURPLE
ResidenceChatPrefixLength: 16
# 是否要忽略 权限 ,这样只能领地管理员和OP才能更改设置
AdminOnlyCommands: false
# 如果设置为true,则开启领地Op (/resadmin)
AdminOPs: true
# 如果设置为true,则将领地设置上升至管理员也可操作,不需要/resadmin指令,如果是Op的领地,则其他Op操作需要相应的权限
AdminFullAccess: false
# 这是你在使用的多世界插件的名字.
# 唯一的功能是确保你安装了多世界插件,以便本插件正确加载其他世界的领地.
MultiWorldPlugin: Multiverse-Core
# 如果设置为true,则子领地会继承父领地
ResidenceFlagsInherit: true
# 如果设置为true,则允许租用领地的人修改flag
PreventRentModify: true
# 当子领地所有者与父领地所有者不同时,可以设置为true来防止子领地被删除
PreventSubZoneRemoval: true
# 如果设置为false,当领地插件出错的时候还会继续加载插件.
StopOnSaveFault: true
ResidenceNameRegex: '[^a-zA-Z0-9\-\_]'
# 如果设置为true,将会发信息到控制台,信息为租.赁过期检查或续租需要的资金.
ShowIntervalMessages: false
# 如果设置为true,插件将会发送一份教程给玩家设置.
ShowNoobMessage: true
# 如果设置为true,则会在玩家周围自动创建领地.
# 如果服务器重启,他还没有领地时,将会自动创建领地
NewPlayer:
Use: false
# 如果设置为true,则免费创建领地
# 如果设置为false, 则会收钱创建领地
Free: true
# 在两边都选择位置. 并距离为 5, 领地就是 5+5+1 = 11 大小
Range:
X: 5
Y: 5
Z: 5
# 实验功能 - 以下是在装有mod的情况下作为 '容器' '使用' 时的物品ID
CustomContainers: []
CustomBothClick: []
CustomRightClick: []
Visualizer:
# 有了这个功能,玩家就能在创建领地的时候看见他地方的范围了
Use: true
# 粒子显示的范围
# 不要超过30,因为玩家看得见的区块不能超过16个
Range: 16
# 显示粒子的时间 (5000 = 5秒) 以毫秒为单位
ShowFor: 5000
# 更新粒子的频率
updateInterval: 20
# 粒子的间隔
RowSpacing: 2
# 粒子显示时间的间隔
CollumnSpacing: 2
# 一个玩家的最大粒子数
FrameCap: 2000
# 一个玩家可以显示最大的粒子数
SidesCap: 2000
# 粒子效果的名字: explode, largeexplode, hugeexplosion, fireworksSpark, splash, wake, crit, magicCrit
# smoke, largesmoke, spell, instantSpell, mobSpell, mobSpellAmbient, witchMagic, dripWater, dripLava, angryVillager, happyVillager, townaura
# note, portal, enchantmenttable, flame, lava, footstep, cloud, reddust, snowballpoof, snowshovel, slime, heart, barrier
# droplet, take, mobappearance
# 如果使用 spigot 的服务端,可以用不同的粒子:
# click2, click1, bow_fire, door_toggle, iron_door_toggle, trapdoor_toggle, iron_trapdoor_toggle, fence_gate_toggle, door_close, iron_door_close, trapdoor_close, iron_trapdoor_close, fence_gate_close, extinguish, record_play, ghast_shriek, ghast_shoot, blaze_shoot, zombie_chew_wooden_door, zombie_chew_iron_door, zombie_destroy_door, smoke, step_sound, potion_break, ender_signal, mobspawner_flames, brewing_stand_brew, chorus_flower_grow, chorus_flower_death, portal_travel, endereye_launch, firework_shoot, villager_plant_grow, dragon_breath, anvil_break, anvil_use, anvil_land, enderdragon_shoot, wither_break_block, wither_shoot, zombie_infect, zombie_converted_villager, bat_takeoff, end_gateway_spawn, enderdragon_growl, fireworks_spark, crit, magic_crit, potion_swirl, potion_swirl_transparent, spell, instant_spell, witch_magic, note, portal, flying_glyph, flame, lava_pop, footstep, splash, particle_smoke, explosion_huge, explosion_large, explosion, void_fog, small_smoke, cloud, coloured_dust, snowball_break, waterdrip, lavadrip, snow_shovel, slime, heart, villager_thundercloud, happy_villager, large_smoke, item_break, tile_break, tile_dust,
Selected:
Frame: happyVillager
Sides: reddust
Overlap:
Frame: FLAME
Sides: FLAME
# 当玩家被推出领地时,出现粒子效果
BounceAnimation: true
GUI:
# 是否启用flag的GUI
Enabled: true
# 当flag为true时显示的物品
setTrue:
Id: 35
Data: 13
# 当flag为false时显示的物品
setFalse:
Id: 35
Data: 14
# 当flag被删除时显示的物品
setRemove:
Id: 35
Data: 8
# 默认 = false. 启用它, 开启了相应flag的领地将会不定期删除领地内的怪物
# 这个选项是相当重要的, 只有在需要时才开启
AutoMobRemoval:
Use: false
# 在几秒内检查领地内怪物的数量
Interval: 3
EnforceAreaInsideArea: false
EnableSpout: false
EnableLeaseMoneyAccount: true
# 默认设置为true, 将会使用兼容kCouldron端的代码. title信息和可视化工具将会被禁用
CouldronCompatability: false
DynMap:
# 启用/禁用 DynMap 的支持
Use: false
# 显示或隐藏领地flag
ShowFlags: true
# 如果设置为true, 开启的flag将会隐藏,无法被info看见
HideHidden: true
Layer:
# 开启3D显示信息
3dRegions: true
# 进入子领地时显示的信息时长
SubZoneDepth: 2
Border:
# 边界的颜色,你可以从这里看见更多颜色 http://www.w3schools.com/colors/colors_picker.asp
Color: '#FF0000'
# 透明度. 0.3 表面只有 30% 是可以看见的
Opacity: 0.3
# 边框粗细
Weight: 3
Fill:
Opacity: 0.3
Color: '#FFFF00'
ForRent: '#33cc33'
Rented: '#99ff33'
ForSale: '#0066ff'
# 只能在列表上显示的领地
VisibleRegions: []
# 在列表上隐藏的领地
HiddenRegions: []