如何开一个属于你自己的Minecraft服务器

前言

本教程是针对Minecraft Java纯净服务器的教程、mod服务器可能与本教程的内容有所出入,请自行结合其他教程进行观看!

开始

首先,服务器需要一个服务端,因此我们需要一个服务端的核心。接下来给大家介绍一些主流的纯净服务器核心。

Vanilla

Mojang 是Minecraft的官方服务器核心,通常指的是 Minecraft Server(也称为 Vanilla Server)。这是最原汁原味的Minecraft服务器,没有任何修改或优化。

  • 优点: 完全原版,原汁原味的体验!
  • 缺点: 性能较差且不支持插件。

CraftBukkit

CraftBukkit是Bukkit API的具体实现,它基于Mojang官方的Vanilla进行了修改,以支持插件系统。

  • 优点: 插件支持丰富.
  • 缺点: 性能较差。

Spigot

Spigot是基于CraftBukkit的一个优化版本,提供了更好的性能和更多的自定义选项。它支持Bukkit插件,是许多服务器的首选核心。

  • 优点: 性能较好,插件支持广泛。
  • 缺点: 相比原版Minecraft,可能会有一些兼容性问题。

Paper

Paper是Spigot的一个分支,进一步优化了性能和稳定性。它修复了许多Spigot中的问题,并添加了更多的优化选项。

  • 优点: 性能更好,修复了Spigot中的许多问题,支持更多优化选项。
  • 缺点: 某些插件可能需要调整以适应Paper的改动。

Purpur

Purpur 是基于Paper和Tuinity的另一个分支,旨在提供更高的性能和更多的自定义选项。它结合了多个核心的优点,并添加了额外的功能。

  • 优点: 性能极佳,支持高度自定义,兼容性好。
  • 缺点: 版本更新特别频繁,基本上一天一次更新。

Folia

Folia是Paper的一个分支版本,引入了区域化多线程技术。它将Minecraft服务器的区块划分为多个独立区域,每个区域都有自己的线程和 tick 循环,从而充分利用多核 CPU 的性能,解决了传统 Minecraft 服务器单线程运行的瓶颈问题。

  • 优点: 多线程的高性能使Folia在玩家分散的场景下表现尤为出色。
  • 缺点: 插件兼容性差,对于玩家数量较少或硬件资源有限的服务器而言Folia没有明显的优势。

准备工作

本教程我将使用Purpur作为实例。
首先前往Purpur官网下载最新的核心。
Purpur核心

第一次启动

然后找一个你觉得合适的地方新建一个文件夹,我们把这个文件夹作为你的服务器文件夹。
然后创建一个批处理文件.bat,并在里面写入:

1
java -Xmx1024M -Xms1024M -jar 核心的名字 nogui

比如说我这样
这里的-Xmx代表着你开服务器时的最大内存占用量,-Xms代表着你开服务器时最小的内存占用量,一般我们以MB为单位。
然后我们直接双击运行它。此时你会发现服务端开着开着突然没了,而你的服务器文件夹多了一些文件,这里我们先只管其中一个文件eula.txt
打开之后里面的内容是:

1
2
3
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://aka.ms/MinecraftEULA).
#Tue Jan 21 23:59:58 CST 2025
eula=false

这是Minecraft的EULA协议,在你运营你的服务器时,必须要遵循EULA!!!
在你第一次运行服务器核心时,会生成EULA文件,而生成时会默认你没有同意EULA协议,因此服务端会自动关闭,所以我们需要将eulafalse改成true,这时就相当于同意EULA协议了。
接下来我们再次运行我们的服务端,不出意外的话就会正常启动服务器了。
当我们成功启动我们的服务器时,服务端会出现这样的提示。
成功启动
此时我们在本地启动游戏,填入服务器地址填成127.0.0.1或者0.0.0.0,那么就能成功进入我们开着的服务器了。

1
Done!For help, type "help"

开了开了
进入服务器
此时我们可以在后台使用指令给自己op权限

1
op <玩家名>

那么我们的服务器就算开上了!!!

服务器文件介绍

这里给大家介绍一些purpur服务器重要的文件

1
2
3
4
5
6
7
8
9
plugins  插件文件夹
logs 日志文件夹
world world_neither world_the_end 世界地图文文件夹
banned-ips.json 封禁的ip列表
banned-players.json 封禁的玩家列表
purpur.yml purpur配置文件
server.properties 服务端配置文件
whitelist.json 白名单列表
usercache.json 玩家基本信息

这里重点提一下server.properties

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
#Minecraft server properties
#Wed Jan 22 00:17:58 CST 2025
#允许服务端接受以Transfer数据包作为登录请求的传入连接
accepts-transfers=false

#允许玩家在安装添加飞行功能的mod前提下在生存模式下飞行
allow-flight=false

#允许玩家进入下界
allow-nether=true

#向所有在线OP发送所执行命令的输出
broadcast-console-to-ops=true

#向所有在线OP发送通过RCON执行的命令的输出
broadcast-rcon-to-ops=true

#由于数据包处理错误导致断开连接,则在界面上显示用于引导玩家前往提交错误报告或获取帮助的地方
bug-report-link=

#Debug模式
debug=false

#游戏难度
difficulty=easy

#是否启用命令方块
enable-command-block=false

#暴露一个具有对象名net.minecraft.server:type=Server的MBean和两个属性averageTickTime和tickTimes用于暴露以毫秒为单位的tick时间
enable-jmx-monitoring=false

#允许使用GameSpy4协议的服务器监听器。用于获取服务器信息
enable-query=false

#是否允许远程访问服务器控制台
enable-rcon=false

#使服务器在服务器列表中看起来是“在线”的
enable-status=true

#要求玩家必须具有Mojang签名的公钥才能进入服务器
enforce-secure-profile=true

enforce-whitelist=false

#实体渲染距离
entity-broadcast-range-percentage=100

#强制玩家加入时为默认模式
force-gamemode=false

#函数解析时的权限等级
function-permission-level=2

#默认游戏模式
gamemode=survival

#是否生成结构
generate-structures=true

#自定义世界生成
generator-settings={}

#是否开启极限模式
hardcore=false

#是否让服务端在响应客户端状态请求时返回玩家列表
hide-online-players=false

#需要在创建世界过程中禁用的数据包名称,逗号分隔
initial-disabled-packs=

#需要在创建世界过程中启用的数据包名称,逗号分隔
initial-enabled-packs=vanilla

#主世界名
level-name=world

#种子
level-seed=

#使用世界预设ID,确定地图所生成的类型。
#使用世界预设ID时,需要在其中的“:”前加“\”转义。原版世界预设ID可以省略其前面的“minecraft:”(即命名空间)。
#minecraft:normal - 带有丘陵、河谷、海洋等的标准的世界。
#minecraft:flat - 一个没有特性的平坦世界,可用generator-settings修改。
#minecraft:large_biomes - 如同默认的世界,但所有生物群系都更大。
#minecraft:amplified - 如同默认的世界,但世界生成高度提高。
#minecraft:single_biome_surface - 单一生物群系世界,可用generator-settings修改。
level-type=minecraft\:normal

#是否在有新玩家加入游戏时,在服务器日志中记录其IP地址
log-ips=true

#限制连锁NC更新的数量,超过此数量的连锁NC更新会被跳过。若为负数则无限制
max-chained-neighbor-updates=1000000

#最大玩家数
max-players=20

#设置每个tick花费的最大毫秒数
max-tick-time=60000

#世界边界最大半径值
max-world-size=29999984

#服务器在玩家客户端服务器列表显示的信息
motd=A Minecraft Server

network-compression-threshold=256

#是否允许正版
online-mode=true

op-permission-level=4

pause-when-empty-seconds=-1

player-idle-timeout=0

prevent-proxy-connections=false

#是否允许PVP
pvp=true

query.port=25565

rate-limit=0

rcon.password=

rcon.port=25575

region-file-compression=deflate

require-resource-pack=false

resource-pack=

resource-pack-id=

resource-pack-prompt=

resource-pack-sha1=

#服务器地址
server-ip=

#服务器名
server-name=Unknown Server

#服务器端口
server-port=25565

simulation-distance=10

spawn-monsters=true

spawn-protection=16

sync-chunk-writes=true

text-filtering-config=

text-filtering-version=0

use-native-transport=true

#服务器视野
view-distance=10

#是否开启白名单
white-list=false

让其他玩家也进入服务器

允许盗版玩家进入

众所周知,Minecraft有正版玩家也有盗版玩家,因此你需要对你的服务器有一个明确的定位: 是否允许盗版玩家游玩你的服务器。
如果你想允许盗版玩家游玩你的服务器,那么请在server.properties文件中,找到online-mode=truetrue改为false即可。
如果你在服务器运行时修改了server.properties文件,重启服务器后该文件的修改才会生效!

内网穿透

服务器开启后只有内网可以对服务器进行访问,也就是说外面的玩家进不了你的服务器,要解决这个问题就需要用到内网穿透,内网穿透的工具很多,此处以NatGo为例。

准备账号

NatGo官网
在官网下载NatGo的软件,然后注册一个账号,然后你需要进行实名认证,这个实名认证没有年龄限制但是需要1块钱

开启内网穿透

实名认证后,我们去主页的第二栏创建一个映射,隧道类型是TCP,映射名称随便填,内网地址不用动,由于Minecraft服务器的默认端口为25565所以本地端口填25565,远程端口随机一个就行。
然后点保存到下一步选择映射路线,找一个离你开服务器的电脑近的路线,然后外网端口随机生成就行,然后点保存。
第一步
第二步
然后我们先启动服务器,再启动映射,然后我们复制连接地址,此时复制的地址就是你内网穿透之后的游戏地址,此时别人也可以通过这个地址进入你的服务器。
复制连接地址
NatGo地址
游戏界面

结尾

至此,你的服务器不出错的话就正常的运行了,如果你想扩展更多玩法,你可以尝试在你的服务器里装各式各样的插件。若本博文有问题,希望大家可以在下方评论进行指正,谢谢大家!有问题大家也可以一起讨论~


如何开一个属于你自己的Minecraft服务器
https://iamyuuk.github.io/2025/01/21/如何开一个属于你自己的Minecraft服务器/
作者
YuuK
发布于
2025年1月21日
许可协议