针对2021年网络特色 MineCraft 开服教程
针对版本 (1.13.2 - 1.16.5)
注意:1.17需要最新的java版本,本教程的java下载地址都是java8,并非最新版本,请移步官网下载。

根据评论所言,咱修改了部分内容
即添加了路由器开启IPv6的教程
您可翻看目录的2.1-IPV6检测以及开启IPV6

前言

什么是ipv6?

可以简单的理解为一种包含更多公网地址的通讯协议
使用它你就可以十分轻松的拥有公网地址

你只需要知道他比ipv4长,而且免费不用申请。

在使用 Ipv6 搭建服务器,请抛弃 NAT转换,端口转发 等概念
ipv6 中每一个设备都可以是外网主机,可以被所有支持 ipv6 的设备链接(换句话来说,也请妥善保管您的主机 / 服务器)

举个例子

  • Ipv4:114.114.114.114
  • Ipv6:2021:0410:0000:4567:FB00:1400:5000:45FF

注意:目前的ipv6大多都是公网(动态),本教程可以让你搭建Minecraft服务器,也同样适合搭建NAS局域网存储的对外公开(指改成网盘),你也要注意你的家用网络安全将会暴露出来,你需要尽可能的保障你的上网安全(但本教程不是教你搞安全的)。

目前ipv6已经基本普及,运营商都免费提供ipv6,大部分家庭路由器过于老旧不支持ipv6除外就没啥问题了,直到文章编辑完成为止,端口除了80/443/25等部分端口无法使用以外其余均可使用,个人建议将服务器的端口设置在1000以上。

开服准备

IPV6检测以及开启IPV6

一些没有进行设备更新迭代的家庭,路由器可能会不支持ipv6,最好先在电脑里看看,以免搞到一般还以为能玩了。

IPV6测试

随后打开 Win + R
输入 CMD 随后输入

1
ipconfig

没有检测到ipv6也不要灰心,你可能是路由器的ipv6没有开启(为什么不是光猫?光猫目前都默认开启ipv6,即使你一直没碰过)。

我的主力机接的是另一个路由器没检测出来,因为这个路由器有些年头了不支持ipv6,所以只能换一个或者搞点大动作。

根据我家路由器来配置
然后进入cmd内显示的默认网关(即:路由器)10.10.51.1

cmd-network

Router-login

登录路由器后,查询您的 Ipv6 是否打开,如果没有请打开

Router-Setting

这里可以看到我是使用路由器去拨号的,因为之前有反应过玩游戏卡顿所以客服叫师傅上门改了桥接模式
如果你并不是桥接模式的话你需要登录到光猫里面去开启,其实对比我手上的这个TPLINK的话,光猫给的设置选项更多,为什么不用光猫主要是wifi的性能差强人意而已,而且可以进一步的减小延迟。

三种解决办法

  1. 尽可能缩减 NAT 的层数
    • 将主机电脑与光猫直接相连(我的做法)
    • 将路由器调整为桥接模式 / 中继模式(如果没有技术请勿自己尝试,可以拨打运营商电话说游戏延迟高,波动很大,经常玩着掉线,反正就怎么离谱怎么形容吧)
    • 将广袤调节到桥接模式
  2. 用数据流量 USB 共享 /wifi 热点(没有 ipv6 可以修改 apn,请百度)【极度耗费流量】
  3. 老的光猫虽然性能其实设置方面比新的要好,网络其实也不错但是并不支持ipv6(当然桥接模式除外,老光猫没有wifi),一般老光猫是没有ipv6这个设置的,所以得打运营商电话说:(我这怎么不支持IPv6啊,我看隔壁家的也有啊,他们说ipv6网络更快,而且国家要求是必须提供的免费项目,这怎么没有啊,你能帮我看看吗?)

以上即为解决方案
如果还是不行,您可以加我QQ群:231372110
进群可以直接问群友,要是没人冒泡的话叫我也行,直接私聊。
(全都是打工仔或者学生党平时摸鱼的并不多)

安装java


MineCraft是必须安装java的,这个不用我说吧?
絢咲萌社区文件库(可能会更新文件放置目录或者中止服务导致无法下载)
JDK 8u281 Download
Java™ SE Development Kit 15.0.2 Download(BC子服需要)
官方渠道:
Java™ SE Development Kit 15.0.2 Download
JDK 8u281 Download

安装完成后重启,然后在cmd里输入javac,看是否能正常弹出相关命令。

Linux如何安装Java?

安装前准备
检查系统是否已经有JDK,输入如下命令查看是否系统中是否已安装,部分人在安装CentOS 7时系统会自动安装JDK:

1
2
CODE
java -version

下载Java包 官方渠道 然后

1
2
3
4
CODE
cd /usr/local
## 在这个目录上传文件后再解压文件
tar -zxvf /usr/local/包名.tar.gz

解压完成后再输入:

1
2
CODE
vi /etc/profile

配置环境变量

1
2
3
4
5
6
CODE
export JAVA_HOME=/usr/local/你的jdk版本
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

让配置文件生效可以输入如下命令

1
2
CODE
source /etc/profile

查看安装情况

1
2
3
CODE
java -version
## 有正常显示就可以了

安装python

需要MCDR的情况才下载。
什么是MCDR?
什么是 MCDR 插件?
MCDR 插件是位于插件目录中的一个以 .py 为后缀的 python 源文件。插件目录的列表可以在 配置文件 中定义。
具体可进TISGithub查看插件具体用途及用法。

官方渠道:
Python

服务器核心

恭喜你进行到了这一步,这说明你已经完成了前面的环境搭建(踏入编程的的开始 - 不是)。
Minecraft 服务器核心:

Minecraft_server(官服核心)【如果你要玩原版生存服务器,建议搭配Fabric-Carpet,后面会讲到】
这个,顾名思义,就是官方的核心版本
优点:最快更新,只要新的正式版本一出现,那么官方也会出现此官方核心
非常稳定,根本不出现报错问题(除非你手残了)

缺点:什么都不能干,例如加入插件,加入mods,只有原版的一切物品和联机
可自定义内容等于0

forge_Minecraft_server(官方核心+加入forge)【本人强烈不推荐,除非你特殊要求】
嗯呢,优化了,可以加入mods进行游戏了
优点:就是官方版本加入了forge,更新速度较快,允许进行mods游戏
缺点:什么都不能干,只是加入了mods,而且不能配置,也包含一切原版物品和联机
(注意:原版生电服务器请勿使用)
可自定义内容非常少

spigot(就是大家熟悉的水龙头了)【本人强烈推荐插件服务器使用它】
那么我就不多做介绍了,spigot是大家熟悉的一个核心支持载入bukkit和spigot插件
优点:只允许加入插件不允许加入mods
稳定性良好
spigot一般自带反作弊(包括一些分支)
缺点:本人暂未得知

可自定义内容非常多

paper(即纸张核心){新版本以及逃离spigot,旧版本称作paperspigot}
那么我就不多做介绍了,paper是大家熟悉的一个核心
支持载入bukkit和spigot插件
优点:只允许加入插件不允许加入mods
稳定性比spigot稳定
缺点:有一部分插件不支持

可自定义内容非常多

Mohist(即墨端){现在高版本一般多用的核心}已经支持1.16版本了~【本人强烈推荐】
mohist是现在我遇到高版本除了sponge最好的一个版本
虽然内核不行,但是比楼上的好多了
本核心还兼容paper的一些插件支持
优点:这类核心支持高版本1.12.2
既可以加入mods又可以加入插件
不需要多大的服务器即可运行,并且自带多线程
缺点:比较多插件不支持,部分mods不支持
由于这点是通病:mods和插件在一起运行难免出现一些七七八八的bug
(注意:原版生电服务器请勿使用)

Fabric-Carpet(地毯端)【原版生电服务器建议使用】
Q:地毯端跟水龙头、paper之间有什么联系或者区别吗,是属于mod服吗?
A:水龙头端和paper端是经过第三方魔改的,删除了部分代码或者重写部分代码以达到优化效果,并且能安装插件,但是会导致部分特性丧失。而fabric是基于纯原版的,你没加mod就是没有对原版的改变的。fabric端严格意义上讲,是mod服的一种,但是这取决于你添加的是不是辅助mod和真正修改游戏内容的mod。辅助mod添加了,还是原版,但添加了如暮色之类的mod,就是真真正正的mod服了。比如carpet是对游戏的优化,并没有改变原版的游戏内容,就不应该算是mod服。

Carpet Mod下载页面(始终检查您当前使用的MC版本的最新版本):
https://github.com/gnembon/fabric-carpet/releases

Fabric-Carpet介绍

注意,如果你是加了模组的Forge服务器,突然想改成原版生存,你迁移到Fabric-Carpet可能会出现点问题。

初始化你的服务器

新建一个运行脚本如果你是windows的话就是bat,如果你是linux的话就是sh。
都差不多
不要照抄!!!

1
2
3
4
5
6
7
BAT
@echo off
java -Xms12m -Xmx160m -Xss768K -server -Xincgc -jar server.jar nogui
pause
SHELL
#!/bin/bash
java -Xmx12M -Xms160M -Xss768K -server -Xincgc -jar server.jar nogui

第一次启动会生成server.properties配置文件,以及世界加载。
如果你不想要这个世界,你可以手动删除。

调整你服务器的配置文件

这个要根据你服务器需要进行设置,online-mode 是否允许在线验证,若你服务器是为了正版玩家进入,那么不用修改,默认就是开启正版验证。

Minecraft服务器属性:
java版

属性 类型 默认值 描述
allow-flight 布尔值 false 允许玩家在安装添加飞行功能的MOD前提下在生存模式下飞行。允许飞行可能会使作弊者更加常见。在创造模式下本属性不会有任何作用。 false - 不允许飞行。悬空超过5秒的玩家会被踢出服务器。true - 允许飞行。玩家必须安装飞行MOD。
allow-nether 布尔值 true 允许玩家进入下界false - 下界传送门不会生效。true - 玩家可以通过下界传送门前往下界
difficulty 整数(0-3) 1 定义服务器的游戏难度(例如生物对玩家造成的伤害,饥饿与中毒对玩家的影响方式等)。0 - 和平1 - 简单2 - 普通3 - 困难
enable-query 布尔值 false 允许使用GameSpy4协议的服务器监听器。用于收集服务器信息。
enable-rcon 布尔值 false 是否允许远程访问服务器控制台。
gamemode 整数(0-2) 0 决定游戏模式0 - 生存模式1 - 创造模式2 - 冒险模式(仅在12w22a之后,或正式版1.3之后可用)
generate-structures 布尔值 true 决定在生成世界的时候是否包括结构(例如NPC村庄false - 新生成的区块中将不包含结构。true - 新生成的区块中将包含结构。
level-name 字符串 world “level-name”的值将作为世界名称及其文件夹名。你也可以把你已生成的世界存档复制过来,然后把这个值与那个文件夹的名字保持一致,服务器就可以载入该存档。部分字符,例如’(单引号)可能需要在前面加反斜杠号\才能正确应用。
level-seed 字符串 空白 与单人游戏类似,为你的世界定义一个种子。这里有一些例子:minecraft,404,1a2b3c。
level-type 字符串 DEFAULT 确定地图类型DEFAULT - 默认的标准地图FLAT - 超平坦LARGEBIOMES - 巨型生物群系(仅在12w19a之后,或正式版1.3之后可用)
max-build-height 整数 256 玩家在游戏中能够建造的最大高度。然而地形生成算法并不会受这个值的影响。
max-players 整数(1-2147483647) 20 服务器同时能容纳的最大玩家数量。但请注意在线玩家越多,对服务器造成的负担也越大,而且服务器OP也不具有在人满的情况下强行进入服务器的权力。所以请慎重设置本属性,
motd 字符串 A Minecraft Server 本属性值是玩家客户端的多人游戏服务器列表中显示的服务器名称。请注意,motd不支持彩色文字代码。如果motd超过59字符,服务器列表很可能会返回“通讯错误”。
texture-pack 字符串 空白 客户端加入服务器后是否会自动下载材质包。请在这里填入完整的材质包URL。注意:这个链接必须直接连到事实的材质包ZIP文件,而且虽然材质包可以是高清的,服务器并不会对玩家服务端进行自动高清修补。所以如果你想让大多数玩家都能够使用该材质包的话,请使用标准16x16清晰度。
online-mode 布尔值 true 是否允许在线验证。服务器会与Minecraft的账户数据库对比检查连入玩家。如果你的服务器并未与Internet连接,则将这个值设为false,然而这样的话破坏者也能够使用任意假账户登录服务器。如果Minecraft.net服务器下线,那么开启在线验证的服务器会因为无法验证玩家身份而拒绝所有玩家加入。通常,这个值设为true的服务器被称为“正版服务器”,设为false的被称为“离线服务器”或“盗版服务器”。true - 启用。服务器会认为自己具有Internet连接,并检查每一位连入的玩家。false - 禁用。服务器不会检查玩家。
pvp 布尔值 true 是否允许PvP。玩家自己的箭也只有在允许PvP时才可能伤害到自己。注: 来源于玩家的间接伤害,例如岩浆TNT等,还是会造成伤害。**true - 玩家可以互相残杀。false** - 玩家无法互相造成伤害。
query.port 整数(1-65534) 25565 设置监听服务器的端口号(详见enable-query)。
rcon.password 字符串 空白 设置远程访问的密码(详见enable-rcon)。
rcon.port 整数(1-65534) 25575 设置远程访问的端口号(详见enable-rcon)。
server-ip 字符串 空白 将服务器与一个特定IP绑定。强烈建议你留空本属性值!留空,或是填入你想让服务器绑定的IP。
server-port 整数(1-65534) 25565 改变服务器端口号。如果服务器通过路由器与外界连接的话,该端口必须也能够通过路由器。
spawn-animals 布尔值 true 决定动物是否可以生成。true - 动物可以生成。false - 动物生成后会立即消失。
spawn-monsters 布尔值 true 决定攻击型生物(怪兽)是否可以生成。true - 可以。只要满足条件的话怪物就会生成。false - 禁用。不会有任何怪物。 如果difficulty = 0(和平)的话,本属性值不会有任何影响。
spawn-npcs 布尔值 true 决定是否生成村民true - 生成村民false - 不会有村民。
view-distance 整数(3-15) 10 设置服务端传送给客户端的数据量。用每一个方向上的区块数量衡量。这个值也是客户端视野距离的上限。当视野为“远”时,实际的值为9,所以默认推荐值为10。
white-list 布尔值 false 允许服务器白名单=当启用时,只有白名单上的用户才能连接服务器。白名单主要用于私人服务器,例如相识的朋友等。 - OP会自动被视为在白名单上。所以无需再将OP加入白名单。**false - 不使用白名单。true** - 从white-list.txt文件加载白名单。

Minecraft Classic 服务器属性

属性 类型 默认值 描述
verify-names 布尔值 true 验证玩家的IP是否与其连接Minecraft.net的IP相同。如果启用,会在内部网络中造成问题。true - 启用。false - 禁用。
admin-slot 布尔值 false 允许OP在服务器人满时也能加入游戏。
public 布尔值 服务器是否显示在服务器列表里。true - 服务器会显示在服务器列表里,任何人都能看到。false - 服务器不会对外广播。只有掌握服务器地址的人才能加入。
server-name 字符串 服务器名称,会显示在服务器名单上。单行文本。部分字符,例如’(单引号)可能需要在前面加反斜杠号\才能正确应用。
max-players 整数(0-256) 服务器同时在线的最大玩家人数。服务器OP不被计算在内。
max-connections 整数(1-3) 同一个IP允许的最大连接数。
motd 字符串 motd是玩家加入服务器时显示的信息。
grow-trees 布尔值 是否允许树苗长成为树木。true - 允许树苗长成为树木。false - 不允许树苗长成为树木。

引用 http://zh.minecraftwiki.net/wiki/Server.properties

添加模组和插件

Forge端一般都是为了玩mod才选择的,于是怎么装mod呢?
很简单,如果是用Forge核心启动的会自己生成Mods文件夹,把你客户端的mod丢进去就好了!

注意 :旅行地图或者FPS优化什么的,类似这种的辅助性质模组就不要扔进去了!
PS:会改变世界属性的Mod最好删除世界重新生成,不删除也没什么太大的问题,就是玩家比较难受而已,加了多世界插件的话当我没说。

Spigot端的插件怎么安装呢?
就和安装模组一样,扔进去就好,但不是Mods的文件夹,而是Plugins文件夹。

服务器端最后调整

自动重启bat:(for windows)

1
2
3
4
5
BAT
@echo off
:start
java -Xms12m -Xmx160m -Xss768K -server -Xincgc -jar server.jar nogui
goto start

自动重启sh:(for linux)

1
2
3
4
5
6
7
8
SHELL
#!/bin/bash
while true
do
cd /路径 && java -Xmx最大M -Xms最小M -Xss768K -server -Xincgc -jar server.jar nogui
echo 5秒后重启服务器,使用ctrl+c取消
sleep 5
done

连接 Minecraft 服务器

别如何连接你的服务器?

访问地址就是:
例如:[2001:0410:0000:7894:PB00:1400:5000:45FF]:25565
这样就是标准的

如果发现没法访问的话,检查防火墙相关(这里不作详细赘述)

解析地址

如果有域名,可以尝试将 ipv6 解析到域名上面,这样就可以不用背那么长一串公式
而且自己域名也好记

DNS解析

遇到 ipv6 地址改变怎么办?
因为 ipv6 跟 ipv4 也是一样的重启光猫 / 重启路由器 / 断电等操作会将 ip 重置
这个时候就需要 DDNS 了

DDNS 域名动态解析

DDNS-GO这是一个简单好用的 DDNS 动态域名服务工具,可以自动更新域名解析到公网 IP,目前支持Alidns(阿里云)Dnspod(腾讯云)Cloudflare。并且是免费和开源的!

DDNS-GO 功能特性:

  • 自动获得你的公网 IPv4 或 IPv6 并解析到域名中
  • 支持 Mac、Windows、Linux 系统,支持 ARM、x86 架构
  • 支持的域名服务商 Alidns(阿里云) | Dnspod(腾讯云) | Cloudflare | 华为云
  • 间隔 5 分钟同步一次
  • 支持多个域名同时解析
  • 支持多级域名
  • 网页中配置,简单又方便
  • 网页中方便快速查看最近 50 条日志

如何使用?

DDNS解析

拿阿里云来举例子:
在头像里选择AccessKey 管理

阿里云DDNS解析 AccessKey

创建一个AccessKey就好了

阿里云DDNS解析 AccessKey生成

祝贺你看到这里,以上就是本篇的全部内容了,又摸了几个月的鱼。