前言
- 最近买了两台腾讯云服务器(安装了windows server),都有公网ip,就想着顺便搭建一个我的世界服务器,上网查找教程,发现基本都是本地开服+内网穿透,关于java环境的配置部分也写的不是很清楚,需要专门搜java教程,于是这里自己记录一下本人开服的完整教程
java环境的部署
java与spigot
- 作为一台我的世界服务器,你的服务器上面不需要有我的世界游戏,但是需要一个我的世界服务器核心,有多种核心可以选择,本人选择spigot
- 服务器核心是指一个应用程序,它会生成一个完整的我的世界地图,并将连接到的玩家放置在地图中
- 服务器核心通常是后缀为.jar的java程序,想要运行这些应用程序,需要配置java环境,我的世界java版用户一般知道java环境的配置,但是以spigot为例,服务器核心对于java版本有严格的限制,请遵循以下步骤
java版本要求
- java有jre和jdk两种,jdk是程序员开放java时的工具,本身包含了jre,spigot只需要jre即可,官网地址 https://developer.oracle.com/java/
- 你需要了解java的版本,在spigot服务器使用jre1.8的同时,java已经发布了java17,这并不意味着jre1.8是一个远古版本,而是因为java有着混乱的命名规则.2018年之前,java版本以1.6,1.7为规则命名,2018年发布的java1.9版本被命名为java10,而上一个版本java1.8被命名为java8,包括了jre8和jdk8
- 然而,无论是官网还是许多其他的网站,提供的java版本,大部分都是最新版本,然而本人实测,windows server2012(win8服务器版)上安装jre17版本或者jdk17版本,spigot都无法运行,spigot运行时会报错:java版本不够高,这并不是因为java版本不够高,而是因为java版本过高不兼容导致的
java环境配置
-
这里推荐使用java1.8(java8)环境,如果你找不到安装包,我在这里分享一个链接:https://pan.baidu.com/s/10MHfNvGfp0kvMoIb5-Mofg 提取码:0gm3 安装过程尽量不要修改路径,把能选的全部选上即可
-
下载完后电脑上有java程序了,但是没有java环境,因为打开.jar(java程序时),启动程序会向dos窗口发送java命令,在dos中调用java程序来编译运行.jar文件,然而此时电脑上虽然有java程序,但是dos并不认识java命令,这样就需要配置环境变量 可参考这篇博客https://blog.csdn.net/Zp_support/article/details/123529564 这篇博客是基于win10的系统,而服务器通常为windows server2012或者windows server2016,所以修改path变量时,将博客中配置修改path的步骤改为在编辑框最前面输入%JAVA_HOME%\bin;
-
注意,所有标点都必须是英文标点,如果你不清楚,请直接复制博客的代码,完成后按照上面博客的内容检查是否正确
spigot安装与使用
- Spigot服务端下载地址:https://sherkhol.lanzoux.com/b01ny9gxc 密码:bry9 或者在官网下载:https://getbukkit.org/download/spigot
- spigot版本必须与游戏版本一致,建议根据游戏版本确定spigot版本,之后将会以spigot1.16.3进行举例
- 创建一个文件夹,把spigot1.16.3放进去,创建一个文本文档,写入以下代码java -Xms1G -Xmx1G -jar spigot-1.16.3.jar 1G表示你为spigot分配的内存,1.7以下版本,5人以内,1G能玩2G流畅,spigot-1.16.3.jar是spigot的名字
- 把新建文本文档.txt改名成start.bat,双击运行
- 弹出dos,等待20秒,开始运行,然后会自动退出,文件夹中多了个文件,eula.txt中false改成true
- 双击start.bat打开服务器,等待20秒,开始启动服务器,会弹出白色控制台,第一次加载地图需要一定时间,显示Done (34.896s)! For help, type "help"说明地形生成成功,输入stop,回车,关闭服务器,发现多了一堆文件
- 记事本打开server.properties,这个文件是我的世界配置文件,你可以百度每个设置的意思,这里有一些推荐设置
enable-command-block=true 可以使用命令方块
max-players=5 调整服务器承载最大玩家人数,防止炸服
server-port=25565 调整服务所在的端口,当端口号为25565时,玩家可以通过服务器ip直接连上服务器,若
不是25565,玩家就得注明端口号,很麻烦,建议设为25565
online-mode=false ,正版验证该字段建议设置为false,否则非正版玩家可能无法登陆服务器
enable-flight=true,允许飞行,如果不允许,在网络延迟较高时服务器可能会误检测玩家在飞行,会视为玩家作弊而
自动踢出玩家
- 到这里,spigot可以正常运行了,双击start.bat打开spigot即可
服务器端口开放
- spigot已经可以正常地在你的云服上面运行了,但是你的云服务器防火墙会拦截mincraft向你的服务器发送的请求,你需要让云防火墙通过设置的端口,比如server.properties中server-port=25565,表示端口号为25565(建议用这个),与RDP一样,进入服务器管理页面,点击上方防火墙,点击添加规则,输入(选择)自定义,tcp,25565,确定;再添加一个规则,输入(选择)自定义,udp,25565,确定即可
开黑与赋予权限
和好友开黑
- 接下来说明你自己的电脑与好友的电脑如何加入云服务器的spigot创建的地图
- 首先明确spigot版本,比如我的版本是1.16.3,那么我需要下载我的世界java版1.16.3,关于如何切换自己的游戏版本,推荐使用pcl2启动器,可以方便地切换游戏版本还可以同时安装多个版本,随意切换启动版本
- 正常进入游戏,在开始界面点击多人游戏(如果弹出防火墙通知,点击允许访问),点击添加服务器,在服务器地址框将你的或者好友给你的云服务器公网ip输入,点击完成,接下来需要等待连接到服务器,服务器右上角变成蓝色或者绿色表示连接成功,选择该服务器,点击加入服务器即可
- 如果服务器右上角变成红色的叉,服务器显示服务器地址解析失败等字样1.请检查ip是否输入正确2.告知腐竹让他检查防火墙规则是否添加
赋予op权限
-
什么是op,op是游戏内可以无视服务器端设置,修改游戏内参数的指令,如/gamemode creative设置游戏模式为创造模式
-
关于赋予权限,众唆粥汁,mc游戏内指令不能识别中文,比如你的mc账户名为:喵呜,那么类似于tp 喵呜;op 喵呜;kill 喵呜都无法生效,导致后续腐竹给你赋予权限不方便,建议名字改为英文,如miaowu(如pcl2中直接修改离线账户名即可)
-
首次赋予管理员权限需要再云服的spigot控制台输入op 你的名字;比如我的mc账户名为drinkflower,spgot控制台输入op drinkflower,无需我进入游戏,服务器权限已经被授予drinkflower玩家,在drinkflower获得op权限后,drinkflower可以在局内使用op命令,将op权限赋予其他玩家
-
关于server.properties
- 关于server.properties(引用一段原创作者为时光丿Time的文章)
- \#带有*的则代表 猜测spawn-protection=16
\#出生点保护半径(若没有op则不生效)
max-tick-time=60000
\#设置每个tick花费的最大毫秒数
query.port=25565
\#设置监听服务器的端口号
generator-settings=
\#用于自定义超平坦世界的生成
force-gamemode=false
\#玩家加入服务器时强制变成默认游戏模式
allow-nether=true
\#是否开启地狱世界(关闭后删除将不会生成地狱世界)
enforce-whitelist=false
\#在服务器上强制执行白名单。
gamemode=survival
\#设置玩家的游戏模式
broadcast-console-to-ops=true
\#*给op发送控制台信息?
enable-query=false
\#是否开启GameSpy4协议服务器监听器,用于获取服务器信息,建议不要修改
player-idle-timeout=0
\#当进入AFK模式,在规定时间内T出服务器,设置成0为不T出服务器
difficulty=easy
\#设置游戏的难度(peaceful(0)=和平,easy(1)=简单,normal(2)=普通,hard(3)=困难)
broadcast-rcon-to-ops=true
\#*允许远程连接控制台给op发送信息?
spawn-monsters=true
\#是否生成怪物
op-permission-level=4
\#设定OP的权限等级
\#1 - OP可以无视重生点保护
\#2 - OP可以使用 /clear、/gamemode、/tp 等等命令,可编辑命令方块
\#3 - OP可以使用 /ban、/deop、/kick 以及 /op 命令
\#4 - OP可以使用 /stop 命令
pvp=true
\#是否可以打架
snooper-enabled=true
\#一旦启用,将允许服务端定期发送统计数据到http://snoop.minecraft.net.
level-type=default
\#确定地图所生成的类型
\#DEFAULT - 标准世界
\#FLAT - 超平坦世界
\#LARGEBIOMES - 预设世界,但所有生态系都更大(仅快照12w19a,或正式版1.3之后可用)
\#AMPLIFIED - 预设世界,但世界生成高度提高(仅快照13w36a,或正式版1.7.2之后可用)
\#CUSTOMIZED - 自快照14w21b以来,服务器也支持自定义地形。使用方法是在generator-settings贴上代码`
hardcore=false
\#极限模式(启用后,玩家死后会被服务器封禁)。
enable-command-block=false
\#是否启用命令方块
network-compression-threshold=256
\#默认会允许n-1字节的数据包正常发送, 如果数据包为 n 字节或更大时会进行压缩。
\# 所以,更低的数值会使得更多的数据包被压缩,但是如果被压缩的数据包字节太小将会得不偿失。
\#-1 - 永久禁用数据包压缩
\#0 - 压缩全部数据包
\#(建议在64-1500)
max-players=20
\#最大玩家数
\#在ops.ym中设置你要突破人数限制的OP下的bypassesPlayerLimit选项为true即可(默认值为false)
\#这意味着OP不需要在服务器人满时等待玩家离开再加入,
max-world-size=29999984
\#设置世界边界的最大半径值,单位为方块。通过成功执行的命令能把世界边界设置得更大,
\#但不会超过这里设置的最大方块限制。如果设置的 max-world-size 超过默认值的大小,那将不会起任何效果。
\#例如:
\#设置 max-world-size 为 1000 将会有 2000x2000 的地图边界。
\#设置 max-world-size 为 4000 将会有 8000x8000 的地图边界。
\#自定义世界边界指令/worldborder在1.8加入
resource-pack-sha1=
\#资源包的SHA-1值,必须为小写十六进制
function-permission-level=2
\#用于控制函数拥有的权限等级。
rcon.port=25575
\#设置远程访问的端口号
server-port=25565
\#设置服务器的IPv4端口号
server-ip=
\#将服务器与一个特定IP绑定。建议留空
\#留空,或是填入你想让服务器绑定的域名。
spawn-npcs=true
\#决定是否生成村民
allow-flight=false
\#允许玩家在安装添加飞行功能的mod前提下在生存模式下飞行。
level-name=world
\#主世界名称
view-distance=10
\#设置服务端传送给客户端的区块量 (范围3-15)
\#减小此数值可有效缓解卡顿
resource-pack=
\#可输入指向一个资源包的URI。玩家可选择是否使用该资源包
spawn-animals=true
\#动物是否可以生成
white-list=false
\#服务器的白名单,OP无须加入白名单
rcon.password=
\#远程访问密码
generate-structures=true
\#定义是否在生成世界时生成结构(如村庄)
online-mode=true
\#线上模式是否开启 (即正版模式)
max-build-height=256
\#玩家在游戏中能够建造的最大高度
level-seed=
\#世界种子
prevent-proxy-connections=false
\#如果开启服务器发送的和Mojang的验证服务器的ISP/AS不一样将会被踢出
\#开启后禁止使用VPN(虚拟专用网络或代理)
use-native-transport=true
\#是否使用针对Linux平台的数据包收发优化,此选项仅会在Linux平台下生成
motd=A Minecraft Server
\#玩家客户端的多人游戏服务器列表中显示的服务器信息,显示于名称下方。(注意:引用自 https://www.bilibili.com/read/cv7149916/ 出处:bilibili)
- 关于op指令(并非所有都兼容spigot)
/gamemode 0是生存(极限)模式
/gamemode 1是创造模式
/gamemode 2是冒险模式(必须用特定的武器才能消除方块)
/gamemode 3是生存(极限)模式
/give 你的名字 137 1 能得到命令方块,在里面输
死亡不掉落:/gamerule keepInventory true
防爆:/gamerule mobGriefing False
重设出生点:/spawnpoint @ a
ascend - 把自己提升到上一个平台
bind {命令关键字} - 设置一键命令
clear - 清空控制台
damage - 关闭或者开启伤害 即无敌
descend - 把自己移动到下面一个的平台
destroy [all] - 破坏当前的东西(背包)
defuse [all] - 拆弹(拆除已经点燃了的TNT炸药)
difficulty- 设置游戏难度
dropstore - 在身边创建一个储物柜
*drops - 开关物品掉落,关闭的话采矿打怪不掉东西。
dupe [all] - 复制东西
duplicate [all] - 复制手上的东西并丢出来
world save - 保存退出游戏
explode [范围] - 设置一个地方爆炸(在自家慎用)
extinguish [all] - 熄灭周围所有的火
ext [all] - 一样是熄灭火
falldamage - 开关高空落下伤害
firedamage - 开关火的伤害
fly - 飞行模式
*freeze - 冻结怪物
give [数量] - 给一样物品
goto - 去一个地方
grow [all] - 让立即小麦成长
h [COMMAND] - 命令列表/帮助
heal- 补指定的血
health- 设置生命值
help [COMMAND] - 命令列表/帮助
home 回到出生点
i [数量] - 刷东西
instantmine - 开关即时采矿(采矿无延迟)
item [数量] [费用] 给玩家物品, 如果不指定则是最大的数量
itemname - 显示当前手上的物品名称
itemstack [数量] - 给玩家指定数量的物品
kill 自杀
jump - 瞬移到鼠标所指的地方
killnpc [all] - 杀死周围全部NPC 或者叫 杀了附近所有除自己外的活体生物
world exit - 不保存退出游戏
*light - 把光永久性关闭
listwaypoints - 列出所有路径点
macro {参数} - 允许运行宏
maxstack [物品ID|物品名称|全部] [数量] - 最大的把某物品堆起来
*mobdamage - 怪物不会给你伤害
msg - 添加一个消息到控制台
music [音量] - 播放音乐
noclip - 穿墙
p - 显示当前坐标
pos 现在玩家的坐标
reach- 玩家到指定地方
rem- 删除指定路点
removedrops [all] - 删掉地上物品
*rename- 修改命令名称
repair [all] - 修复当前物品耐久
reset - 恢复默认设置
search - 搜索物品名称
set - 在这世界标记一个路径点
setjump [JUMP|reset] - 设置跳跃的高度 落地伤害和移动 1:1
setspawn [] 设置当前位置 X轴 Y轴 Z轴
world- 世界情报
world load- 加载指定的文件
world new [FILENAME] [SEED] - 在指定位置创建新地图
world list - 列出所有存档
首先登场的是OP的指令大全:
/give 给予人 物品id 数量 - 给予某人物品,如果不写数量则给予数量默认为64
/nick ID 名称 -给某人改一个名 ID是加白名单的名字
/backup -运行备份命令
/fireball -发射一个火球(会破坏方块)
/heal name -治疗某人
/invsee name -查看某人的包裹
/lingtning name -天谴(不填写名字会雷击鼠标指向的地方)
/mute name -禁言某人
/ping 查看延迟
/seen name -查看某人最后退出的时间
(上面四个命令需要对方在线,不需要对方同意)
/unlimited id -给予自己无限的某物品
/weather storm/sun time -改变天气,雷雨或晴天
/mmoedit name skname rank -如果安装了MCRPG插件可以用这个命令改变某人的某项技能等级
/pumpkins -在自己身旁形成南瓜林(带叶子的南瓜林)
/snow -在自己的身旁成为雪后的样子
/thaw -融雪(和冰)
/buther -杀死附近的怪物
/tree 树形 -生成一棵树(树形不填也可以)
树形:big - 大树 ewquoia - 红木 Tall sequoia - 高大的红木
Birch - 衫树 Random - 随机
/up 高度 - 将自己提升到某高度,脚下用一块可能悬空的玻璃支撑
WorldEdit:
手拿木斧,左键一角,右键一角,两角之间的长方体为选择区域:
//set id - 将选中的区域变为某物品(如果是不可放置或者没有放置点的物品会成为被扔出的状态)
//undo - 还原上一次的WorldEdit行动
//redo - 还原上一次的//undo(这个说明可能有误)
//move x - 将区域移动x块。移动时需正对着区域与NEWS。
//move x up - 将区域向上移动x块
//move x down - 将区域向下移动x块
WorldEdit:
noclip - 穿墙
p - 显示当前坐标
pos 现在玩家的坐标
reach - 玩家到指定地方
rem - 删除指定路点
removedrops [all] - 删掉地上物品
*rename - 修改命令名称
replenish [all] - X
repair [all] - 修复当前物品耐久
reset - 恢复默认设置
s <名字> - Same as /set
search <关键词> - 搜索物品名称
set <名字> - 在这世界标记一个路径点
setjump [JUMP|reset] - 设置跳跃的高度 落地伤害和移动 1:1
setspawn [ ] 设置当前位置 X轴 Y轴 Z轴
setspeed [速度|重置] - 设置移动速度
spawn [QTY] - 产生一个生物
spawnstack {NAME|ID|random} - 产生一个合体的怪物NPC
*superheat [all] - Turns items which are furnace-able into their furnaced form
t - Same as /tele
time [set|get|day|night [minute|hour|day [TIME]]] - 设置指定时间得到物品
timeschedule > - 设定一段时间段,让世界永远保持在这段时间之间- - 《凉宫春日漫无止境的八月》
unbind - 解除一个命令
waterdamage - 开关潜水伤害
world - 世界情报
world load - 加载指定的文件
world save - 保存退出游戏
world seed [SEED] - 给你看看你世界里有多少个方块
world new [FILENAME] [SEED] - 在指定位置创建新地图
world exit - 不保存退出游戏
普通玩家指令:
注册账号:/register 密码 重复密码
登陆账号:/login 密码
查看与服务器延迟(出现Pong的间隔就是你与服务器的延迟):/ping
查看金钱:/money或者balance
查看金钱排行榜:/balancetop
设置自己的家:/sethome
回到自己设置的家:/home
上锁:[private]
显示坐标:/getpos
给予别人金钱:/pay 玩家ID 金钱数量
领地创建命令:/res create 领地名
领地查询命令:/res info
创建领地时所选面积查询命令:/res select size
添加区域进一个领地命令:/res area add 领地名 区域名
移除领地:/res remove 领地名