mincHR547 发表于 2024-2-26 09:04:48

[持续更新]【原创】【Java开服教程】一起开优雅的搭建一个mc服务器吧!

本帖最后由 mincHR547 于 2026-9-26 09:02 编辑




废话 (bushi)



|本教程

本教程是面向从未开过Java版服务器的新手服主,帮助新手服主更好的了解Java服务器运行逻辑、结构、如何开服、如何深化定制服务器等.....
当然,如果你是老服主也可以通过本教程查缺补漏、学习新的知识,壮大自己的服务器

如果教程中有问题请及时指出,如果教程中有遗漏请及时指出,十分感谢!!

|统计

统计:
总字数 |26515 字节
总耗时 |3天








选择合适的 开服设备 ...?



|系统


目前市面上常用的系统有 Linux Windows MacOS,如果为纯新手开服,推荐选择使用Windows Server 2022及以上版本,因其拥有更好的安全性、驱动支持以及长期维护。如果你有一定Linux基础,强烈推荐使用 Ubuntu 22.04/24.04 LTS 或 Debian 12,Linux在相同配置下比Windows性能高出15-30%且有更低的内存占用。
|处理器 内存 宽带
既然是高版本服务器,那么对于处理器(CPU)的消耗必定要比低版本大(自1.13后),所以选择一个合适的处理器对于服主来说是至关重要的,他直接影响到服务器流畅度(TPS)以及玩家的游玩体验等。截至2026年,个人推荐选择 AMD Ryzen 9 9950X / 7950X3D、Intel Ultra 9 285K / 14900K 等高频处理器,但是如果你预算少又希望有不差的体验,可以尝试其他处理器例如 Ryzen 9 5900X、Intel 12700K、EPYC 8124M 等性价比处理器。注意:Intel 13/14代酷睿有电压不稳缩缸问题,购买二手/使用前请确保BIOS已更新到最新微码。
内存(运行内存)在Java版服务器中也是一个重要的选项,他直接的影响到了你的服务器能有多少人游玩、插件上限个数等......高版本对于内存的消耗也是比较大,所以根据游玩人数和插件数目选择合适的内存大小是很重要的,对于1.17以上的版本,服务端最起码推荐分配4G内存,也就是说明你的机器需要起码6G的内存
可能的内存计算公式:基本内存 + (玩家数量 × 玩家内存) + 插件内存 + 世界内存基本内存:在没有任何玩家、插件的情况下运行服务器所需的最小内存(单位MB)玩家数量:服务器上预计同时在线的玩家数量玩家内存:为每个玩家分配的内存(单位MB)插件内存:插件和 mod 所需的额外 RAM(单位MB)世界内存:管理 Minecraft 世界所需的 RAM(单位MB)
如果想要玩家减少网络卡顿,那么服务器的宽带大小是一个比较重要的量,一般情况下,如果没有特别多的粒子效果,宽带的使用大约是 0.5-0.8Mbps/玩家 推荐的服务器宽带大小为 15M 10M 等...(看服务器人数和其他配置)
|服务商
服务商最好不要去淘宝找那种面板服,毕竟超开多少你也不知道,性能肯定没保障,数据肯定没保护,建议找一些耳熟能详的游戏云服务商,这里不做推荐,请自行寻找
(后续教程默认已经找到了服务商,拥有公网IP,安装系统为Windows)







选择 Java ...?



|Java

目前,除了原版的Java以外,还有其他厂商根据原版Java二次开发的Java可以选择(例如Dragonwell、Zulu、GraalVM...),有些Java对于内存优化甚好、处理器优化甚好,各自有各自的优点,各位可以根据需求选择合适的Java。目前推荐:Zulu兼容性最好通用性最强,Dragonwell对内存管理有额外优化(尤其适合大内存场景),GraalVM有JIT编译优化可提升运行效率。
|服务端版本
如果你的服务端版本为 1.17+ 那么需要Java17及以上的版本才可以运行!如果你的服务端版本为 1.21+ 那么需要Java21及以上的版本才可以运行!如果你的服务端版本为 26.0+ 那么需要Java25及以上的版本才可以运行!低版本服务器端(1.17-)至少需要Java8运行,但是你也可以使用高版本Java,例如Java21,这样可以获得一点点优化。







服务端核心 ?




|开服核心 ...?

Java版本开服核心目前常用的有 Spigot Paper Purpur Folia Leaves等...本教程主要为Paper系列核心,原因自然是Paper的优化远远高于Spigot,同时Paper系列也是目前比较主流的核心。

既然已经完成了选择核心,接下来便要去获取(下载)核心

Paper官方下载: Build explorer | PaperMC (速度较慢,可能需要科学)
镜像站下载: 下载 | FastMirror 无极镜像 | 我的世界核心下载 (速度快,可选择多个版本)
核心下载完成后你会得到一个 <paper-版本-构建数.jar> 的JAR包

接下来前往你希望服务端所在的磁盘,创建一个非中文名的文件夹,并把核心复制、移动到文件夹中

完成截图:


接下来尝试启动服务端核心,初始化服务端

|核心对比 ...?

与Spigot相比,Paper核心拥有更好的优化、更多的配置,是很多人开服选择的第一款核心
与Paper相比,Purpur核心拥有更好的多核优化,超多可自定义的配置,更顶的优化以及很多额外的实用功能
与Paper相比,Leaves核心拥有更好的生电支持,更好的优化,最适合生电服务器
与Paper相比,Folia是目前唯一一款支持真多线程的核心,适合[ b]高版本、高玩家数量(50+)的服务器,但部分插件不兼容Folia,插件兼容性列表见folia官网









服务器 , 启动 !



|服务器 , 启动 !

如果你已经按照上面的教程做好了准备工作,那么接下来的任务会比较轻松的完成

在你选择的服务端核心存放的目录下创建一个txt文件,名字随便起一个即可,然后在文件里输入以下命令:

<Java根目录/bin/java.exe> -jar <你的核心名字.jar> --nogui



例如我的启动文件就是这样写的:

java -jar Paper-1.20.4-435.jar --nogui


然后,将它重命名为<你刚刚起的名字>.bat,最后双击运行他



首次运行会自动下载一些依赖,稍等一会即可(网络速度决定)



完成后命令提示符窗口会自动退出,并且在你刚刚的服务端根目录留下一些文件、文件夹



现在,请打开 eula.txt 然后将 eula=false 修改为 eula=true 记得保存!



接下来,使用文本编辑器打开 server.properties 文件,然后找到 online-mode: true 把true修改为false(关闭正版验证,你如果开正版服务器可以跳过这一步),之后再找到 server-port: 25565 将25565修改为你的服务商给你开放的TCP外网端口(去问服务商,一般vps都会给几个端口)



(由于我是本地测试,直接使用25565了,方便)

最后,返回服务端根目录,再次运行 <xxx.bat> 启动服务端,当你看到Done (xxx s)! For help, type "help" 那么服务端就已经启动好了!
你可以选择现在进入游戏,服务器地址写 <你连接VPS的IP:你设置的端口> ,例如 11.4.514:19198,如果是本地,请写127.0.0.1:端口










优化 服务端 !




|配置修改 服务端优化 ...?

首先,恭喜你已经成功地启动了你的服务端!但是接下来对于一个新手服主有一些困难,请一定要仔细阅读!

接下来我们会从 Bukkit~Paper 的顺序依次修改常用的配置文件,并解释里面的内容,修改前后一定要备份好配置文件!

这节主要是配置文件优化,你可以最后阅读,先去阅读其他内容

bukkit.yml常用配置以及优化:


[*]spawn-limits.*:本配置项设定每个世界可以产生多少动物或怪物。

服务器流畅度影响:高
默认值:monsters:70, animals:15, water-animals:5, water-underground-creature: 5, axolotls: 5, ambient: 15
推荐值:monsters:25, animals:5, water-animals:2, water-underground-creature: 2, axolotls: 3, ambient: 1
如果你设置的过低,那么会影响玩家的游戏体验
计算公式:[在线玩家数] * [设置的限制数]
(注意:如果服务器少于15人应该跳过此项目的设置甚至增加这些数值)


[*]ticks-per.*:本配置用于设定生物生成频率。
服务器流畅度影响:中
默认值:animal-spawns: 400, monster-spawns: 1, water-spawns: 1, water-ambient-spawns: 1, water-underground-creature-spawns: 1, axolotl-spawns: 1, ambient-spawns: 1, autosave: 6000
推荐值:animal-spawns: 400, monster-spawns: 10, water-spawns: 400 water-ambient-spawns: 400 water-underground-creature-spawns: 400, axolotl-spawns:100, ambient-spawns: 400, autosave: 6000
在绝大多数情况下这些值都应该高于1,将这些值设置得高一些也会让你的服务器能更好地处理禁止生成生物地区域。


[*]chunk-gc.*:本配置用来控制区块回收

对服务器流畅度影响:高
默认值:period-in-ticks: 600
推荐值:period-in-ticks: 400
没什么好说的



spigot.yml常用配置以及优化:


[*]spawn-limits.*:本配置项设定是否不断将新的用户缓存数据保存到磁盘,或仅在服务器停止时才保存

服务器流畅度影响:一般
默认值:false
推荐值:true
如果你是生存服务器还是推荐设置false,但是如果你的服务器每天都备份,问题不大


[*]max-tick-time.*:本配置项会设定在服务器跳到下一个任务之前,实体操作会消耗计算的时间

服务器流畅度影响:相对的
默认值:tile:50, entity:50
推荐值:tile:1000, entity:1000
注意:这个选项降低它可以提升服务器性能,但是会产生一些奇怪的错误,设置为1000可以禁用这个选项,同时不会出现那些错误


[*]mob-spawn-range:本配置用于控制玩家周围最大刷怪距离

服务器流畅度影响:一般
默认值:4
推荐值:3
如果你降低了bukkit.yml里的怪物刷新数量,你也应该降低这个值!


[*]merge-radius.*:本配置用于控制掉落物、经验的聚集

服务器流畅度影响:中
默认值:item:2.5, exp:3.0
推荐值:item:4.0, exp:6.0
设置的高一些可以让更多物品聚集在一个上面,你如果设置的更高甚至不需要清理掉落物的插件
但是,合并物品可能会导致物品偶尔消失!!


[*]view-distance:本配置用于控制区块渲染数

服务器流畅度影响:极高
默认值:default
推荐值:4~6
最小值:3
本配置限制了玩家的区块渲染距离,大多数服务器应该设置为5-6,但是一些低规格,玩家数量多的玩家应该设置为4-5
如果你降低它服务器会有显著的性能提升,但是玩家体验会大打折扣!


[*]nerf-spawner-mobs:本配置用于控制刷怪笼的生物AI

服务器流畅度影响:中
默认值:false
推荐值:true
设置为true的话刷怪笼刷出来的生物就会变成"傻子"也就是没有AI


paper-global.yml(Paper 1.20+ 新增的配置文件)常用配置:


[*]chunk-system. entity-activation-range:控制实体激活范围

服务器流畅度影响:高
默认值:animals: 32, monsters: 32, misc: 16, water: 16
推荐值:animals: 24, monsters: 24, misc: 8, water: 12
降低这个值可以减少远处无用的实体 tick,大幅提升 TPS


[*]chunk-system. io-threads:区块读写线程数

服务器流畅度影响:中
默认值:-1 (自动)
推荐值:设置为你的CPU物理核心数的一半(例如4核CPU设为2)
可以加快区块加载和保存速度


[*]spawning. disable-crammon:是否禁用怪物拥挤刷怪限制

推荐值:false(保持默认,防止刷怪塔崩服)









安装、配置插件 !


|安装插件 !

插件可谓是插件服的灵魂所在,就如同模组服的mod,你开一个服务器肯定要安装一些插件提供玩法吧?总不能说玩家连最基础的tpa都做不到

如何获取插件?
在Spigot以及其分支上,最好的插件获取网站便是 SpigotMC
同时你也可以去国内的论坛、创作者那里寻找插件、购买插件,本论坛 klpbbs 便是一个不错的选择
服务器插件 - Minecraft(我的世界)苦力怕论坛 (klpbbs.com)

当你找好了一个插件后,请看一下他是 BungeeCord | Spigot | Paper | Sponge | Fabric....,因为Paper核心是Spigot的衍生,所以一般的Bukkit、Spigot、Paper插件都可以在paper服务端上运行,然后找到插件相应的支持版本下载即可

下载完成后,前往<服务端根目录/plugins/..>把你刚刚下载好的插件jar包扔进去,然后重启服务端即可



服务器启动后输入 </pl> 即可查看安装的插件



|配置插件 !

插件安装成功后肯定有一些插件无法完美适配你的服务端,所以你需要修改一下插件的配置文件
插件的配置文件一般都储存在<服务端根目录/plugins/插件名文件夹/config.yml>内,双击打开即可修改里面的内容
修改完成后记得保存!!!











开发插件 !


|前言

插件作为插件服的灵魂,你需要的功能、玩法肯定不是所有市面上你能找到的插件能实现的,所以我们可能会需要自己编写插件实现一些小功能,本部分就会教学如何编写插件实现自己希望得到的功能。

注:本部分并非专业教学,肯定有遗漏、没有讲清楚的地方,所以本部分为选读,有不明白的地方你可以去咨询专业的教程、开发人员

|开发环境搭建


[*]安装 IntelliJ IDEA (idea) :
前往 下载 IntelliJ IDEA – 领先的 Java 和 Kotlin IDE (jetbrains.com) 下滑找到 IntelliJ IDEA Community 进行下载、安装。Community版完全免费,对个人开发者已经足够了。如果你有教育邮箱,可以申请Ultimate版免费使用。


[*]安装JDK:
推荐使用 Zulu JDK 17 或 21(兼容性最好),前往 Azul Zulu下载页 选择对应版本下载安装。
安装完成后在IDEA中设置:File → Settings → Build, Execution, Deployment → Build Tools → Gradle → Gradle JVM,选择你安装的JDK版本。


[*]安装Lombok插件(可选) :
Lombok可以大量减少Java样板代码(getter/setter/构造器等)。在IDEA中:File → Settings → Plugins → 搜索 "Lombok" → 安装。
如果是Gradle项目,在build.gradle中添加:
compileOnly 'org.projectlombok:lombok:1.18.34'
annotationProcessor 'org.projectlombok:lombok:1.18.34'


|创建项目 — 使用Maven

Maven是Java最经典的构建工具,也是Spigot/Paper官方推荐的方式。以下是创建插件项目的步骤:


[*]打开IDEA,点击 New Project
[*]左侧选择 "Generators" → "Maven Archetype"
[*]Archetype选默认(不选也可以)
[*]填写 GroupId(一般是你的域名倒写,如 com.yourname)、ArtifactId(项目名)
[*]点击 Create


创建完成后,打开项目根目录下的 pom.xml,写入以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.yourname</groupId>
    <artifactId>MyPlugin</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <properties>
      <java.version>17</java.version>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <repositories>
      <repository>
            <id>papermc</id>
            <url>https://repo.papermc.io/repository/maven-public/</url>
      </repository>
    </repositories>

    <dependencies>
      <dependency>
            <groupId>io.papermc.paper</groupId>
            <artifactId>paper-api</artifactId>
            <version>1.21.4-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
      </dependency>
    </dependencies>

    <build>
      <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.11.0</version>
                <configuration>
                  <source>${java.version}</source>
                  <target>${java.version}</target>
                </configuration>
            </plugin>
      </plugins>
    </build>
</project>

注意:paper-api的版本号要与你服务端的版本对应。例如服务端是1.21.4,就用1.21.4-R0.1-SNAPSHOT。另外,scope为provided表示编译时需要,但运行时由服务端提供,不会打包进jar里。

|创建项目 — 使用Gradle(推荐)

Gradle是比Maven更新、更快的构建工具,配置更简洁,目前越来越多的插件项目转向Gradle。

[*]IDEA中 New Project → 左侧选 "Generators" → "New Gradle Project"
[*]Language选Java,Build system选Gradle,JDK选17+
[*]点击 Create


创建完成后,修改 build.gradle:

plugins {
    id 'java'
}

group = 'com.yourname'
version = '1.0.0'

repositories {
    mavenCentral()
    maven { url 'https://repo.papermc.io/repository/maven-public/' }
}

dependencies {
    compileOnly 'io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT'
}

java {
    toolchain.languageVersion.set(JavaLanguageVersion.of(17))
}

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

另外还需要 settings.gradle(如果IDEA没自动生成就手动创建):
rootProject.name = 'MyPlugin'
相比Maven,Gradle的启动速度更快、配置更简洁,强烈推荐新项目使用Gradle!

|plugin.yml — 插件声明文件

每个Bukkit/Paper插件都需要一个 plugin.yml 文件,放在 src/main/resources/ 目录下。这个文件告诉服务器你的插件叫什么、谁写的、有哪些指令和权限。


name: MyPlugin
version: 1.0.0
main: com.yourname.myplugin.MyPlugin
api-version: 1.21
author: YourName
description: A simple plugin example

commands:
hello:
    description: Say hello
    usage: /<command>

permissions:
myplugin.use:
    description: Allows using the plugin
    default: true

关键字段说明:
name:插件名,不能有空格
main:主类完整路径(包名+类名)
api-version:声明兼容的服务端版本,不写会有警告
commands:注册指令,玩家在游戏里输入 /hello 就会触发对应的代码
permissions:注册权限节点,配合Vault等权限插件使用

|编写第一个插件 — 主类

在 src/main/java/com/yourname/myplugin/ 下创建 MyPlugin.java:


package com.yourname.myplugin;

import org.bukkit.plugin.java.JavaPlugin;

public final class MyPlugin extends JavaPlugin {

    private static MyPlugin instance;

    @Override
    public void onEnable() {
      instance = this;
      getLogger().info("MyPlugin has been enabled!");

      // 注册指令
      getCommand("hello").setExecutor(new HelloCommand());

      // 注册监听器
      getServer().getPluginManager().registerEvents(new MyListener(), this);

      // 保存默认配置
      saveDefaultConfig();
    }

    @Override
    public void onDisable() {
      getLogger().info("MyPlugin has been disabled!");
      instance = null;
    }

    public static MyPlugin getInstance() {
      return instance;
    }
}

onEnable():插件加载时执行,在这里做初始化工作
onDisable():插件卸载时执行,清理资源
getInstance():静态单例,方便其他类获取插件实例

|编写指令

创建一个 HelloCommand.java:


package com.yourname.myplugin;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class HelloCommand implements CommandExecutor {

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
      if (sender instanceof Player) {
            Player player = (Player) sender;
            player.sendMessage("§aHello, " + player.getName() + "!");
      } else {
            sender.sendMessage("§cThis command can only be used by players!");
      }
      return true;
    }
}

CommandSender是发送指令者,可以是玩家(Player)也可以是控制台(ConsoleCommandSender)
return true表示指令处理成功,return false会显示plugin.yml里的usage信息
§是颜色代码,§a=绿色 §c=红色 §e=黄色 §b=天蓝 §6=金色等等

|编写监听器

监听器用来监听游戏事件(玩家加入、破坏方块等)。创建一个 MyListener.java:


package com.yourname.myplugin;

import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;

public class MyListener implements Listener {

    @EventHandler
    public void onPlayerJoin(PlayerJoinEvent event) {
      Player player = event.getPlayer();
      player.sendMessage("§eWelcome to the server, §b" + player.getName() + "§e!");
    }
}

@EventHandler: 标记这是一个事件处理方法
PlayerJoinEvent: 玩家加入服务器时触发
还有很多其他事件:PlayerInteractEvent(交互)、BlockBreakEvent(破坏方块)、EntityDamageEvent(实体受伤)等
完整事件列表可以在 PaperMC Javadocs 中查阅

|配置文件 (config.yml)

在 src/main/resources/ 下创建 config.yml:


# MyPlugin configuration
prefix: "&e &r"
welcome-message: "&aWelcome to the server!"

在Java代码中读取配置:

// 读取config.yml
String prefix = getConfig().getString("prefix", "&e &r");
String welcome = getConfig().getString("welcome-message", "&aWelcome!");

// 保存默认配置(在onEnable里调用 saveDefaultConfig() 后自动生成)
reloadConfig(); // 重新加载配置
getConfig().set("new-key", "value"); // 设置值
saveConfig(); // 保存到文件



|构建插件

代码写完后,需要把项目打包成jar文件:


[*]Maven项目:在IDEA右侧Maven面板 → Lifecycle → 双击package,或者在终端运行 mvn clean package
[*]Gradle项目:在IDEA右侧Gradle面板 → Tasks → build → 双击jar或build,或者在终端运行 gradlew jar


构建完成后,jar文件会生成在 target/(Maven)或 build/libs/(Gradle)目录下。
把这个jar文件丢到服务端的 plugins/ 文件夹,重启服务端即可使用!
如果不想重启,可以使用插件管理插件如 PlugMan 来热加载。

|进阶建议


[*]多模块项目:当你的插件需要支持多个Minecraft版本时,使用Gradle多模块项目可以做到"一个项目编译多个版本"。每个子模块编译对应版本的nms代码,主模块统一API接口。
[*]软依赖与反射:如果你想让插件支持Vault经济系统但又不强制玩家安装Vault,可以使用反射调用Vault的API。在plugin.yml中标注 softdepend: ,然后通过 Bukkit.getServicesManager() 获取经济实例。即使Vault不存在,插件也能正常运行(只是经济功能不可用)。
[*]PlaceholderAPI集成:让插件提供变量给PlaceholderAPI,其他插件和聊天系统可以调用。例如 %myplugin_health% 显示玩家的某个数据。
[*]异步操作:数据库操作、HTTP请求等耗时操作要放在异步线程执行,使用 Bukkit.getScheduler().runTaskAsynchronously(),避免卡主线程导致TPS下降。
[*]MiniMessage格式化:Paper 1.17+ 推荐使用MiniMessage替代传统的颜色代码§,它支持渐变、阴影、悬停文本、点击事件等高级格式化。优点是格式更清晰、功能更强,缺点是学习成本稍高。简单使用的话,传统的§颜色代码完全够用。


|学习资源


[*]PaperMC Javadocs — 官方API文档
[*]Paper 1.21 API参考
[*]wiki.vg — Minecraft协议文档
[*]B站搜索 "Minecraft插件开发" 有很多中文视频教程








资源网站


|核心下载

Home | PaperMC
Purpur - Your Minecraft, your way (purpurmc.org)
主页 | LeavesMC
下载 | FastMirror 无极镜像 | 我的世界核心下载
PaperMC Build API(可直接用于自动下载脚本)

|Java下载

Java 7, 8, 11, 13, 15, 17, 19, 21 Download for Linux, Windows and macOS (azul.com)
Alibaba Dragonwell (dragonwell-jdk.io)
Java Downloads | Oracle 中国
Adoptium (Eclipse Temurin) — 开源免费JDK

|插件获取

服务器插件 - Minecraft(我的世界)苦力怕论坛 (klpbbs.com)
Resources | SpigotMC - High Performance Minecraft
Modrinth — 新一代插件/mod平台
Hangar — PaperMC官方插件平台

| 资源购买   请注意 , 这里面的资源有付费资源、免费资源 , 由于不可确定性 , 请确认后购买

Resources | SpigotMC - High Performance Minecraft
BuiltByBit
Best 3D Model, Texture, Graphics Shop and Asset Marketplace | MCModels
Patreon — 支持独立开发者

声明:在付费网站获取资源被骗取财物均与本教程作者无关







44044glsml 发表于 2024-2-26 10:33:06

isksbsisodnhsksih

Orphan.Seven 发表于 2024-2-27 19:44:47

好耶,感谢楼主!

Battle信仰云 发表于 2024-2-29 18:38:27

非常不错了,保姆级的教程

Crigo 发表于 2024-5-26 22:47:37

插件编写教程没写完吗?
这才是我最想学的

sensen1234 发表于 2024-8-3 23:33:29

jdk这边
17推荐graalvm ce
8推荐zulu
21推荐graalvm ee
这几个本人在生产环境下测试出来性能都不错,优化都非常好

美味的迷迭香 发表于 2024-8-6 20:02:02

[贴吧_滑稽][贴吧_玫瑰]感谢 这正是我需要的

leodjc 发表于 2024-8-7 12:52:35

咋看教程

金泽123 发表于 2024-9-17 02:58:02

。。。。?。。。。。。。。

balabbala 发表于 2024-9-24 12:25:11

666666[贴吧_呵呵]
页: [1]2
查看完整版本: [持续更新]【原创】【Java开服教程】一起开优雅的搭建一个mc服务器吧!