Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 92|回复: 0

[草稿] 如何摆脱网络问题,构建自己的Bukkit服务端

[复制链接]
ZX夏夜之风 当前离线
积分
3080
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-5-20
查看详细资料
发表于 2021-11-14 18:32:56 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 ZX夏夜之风 于 2021-11-14 18:46 编辑
  ]4 g# T. Q0 F$ `7 Q  [& S* N6 R
+ t3 i: y: `7 i8 c- p如何摆脱网络问题,构建自己的Bukkit服务端
6 D, x' c# ^% m  i4 N% K# g7 s  q$ L. F5 j
// 图片待添加
# p2 c2 S  R% K8 `1 V" u- c8 i@古明地兔 这个帖因为网络问题被重复发布,还请删一下!麻烦了QWQ
- i0 ^, w' b, K% g
% \+ ^& O9 C# s9 k#1 前情提要(一个小故事)
. @  b; d8 l) r$ z7 Y
+ V+ R% m* [- G6 t, F/ _# U3 f我最近学会了插件开发,想练练手,需要一个 Spigot 服务端来用于作 API 和调试用。1 Z7 e" }* W# c3 K( I" ]
于是我就到 getbukkit.org 下了一个 Spigot 1.16.5 服务端。
  ^# u3 w2 E; \7 R, C- N结果一启动+ G+ B6 ]* h4 m% Z* I& y* z4 J8 b
"Error, this build is outdated."/ c3 d: R" [  t4 w1 l1 ~
我不是很喜欢过期,于是我就去构建一个 Spigot 服务端。
7 C. M! S1 x8 t- e  C/ g: N结果被网络问题"制裁"了,各种 Connection timed out 以及因其导致的 BUILD FAILURE 弄得我不厌其烦。
, U/ c) G3 u& i+ g6 A% |# Y3 X# n+ a* ?, w; G: y5 b0 L6 P# l" f' A
这个帖子,以 Spigot 为例,旨在教你如何摆脱万恶的网络问题,轻松构建自己的 Bukkit 服务端。7 `- A/ D( c, n
& O3 z* `2 d3 @# ^$ x# T- K
#2 准备
  U8 J. E5 v1 Q; }8 k你需要以下东西:/ h/ k9 d$ O# X
一个 Gitee 账号. G" K9 H0 B: N, j7 l
一台电脑,且安装了 Git
% h- I. g+ V( H# w2 s' ?: h  * Git 安装时要带有 Git Bash!如果没有,请重新安装 Git,并把 Git Bash 带上。3 U2 N: S* [% I0 C/ A+ I
! b) [! ~: {' ?+ J( ?
一个 Java 环境(最低 Java 8,如果是 1.17 及以上要 Java 16): a  C9 W( l; s1 i- B
  * 如何安装 Java 和 Git 在此不再叙述。
+ O/ f4 J4 P2 D
  W  ]8 j; Q& r0 X' N" m) G你需要为构建准备至少 400 MB 的空闲空间用于存储 Bukkit 的各种 .patch 文件以及其他的构建用的文件。
+ a9 {2 \, J, a1 w" S你需要有耐心。
5 _1 r! h' |" \9 B" r" V1 k" `  C0 N, M% c: H7 S. e

% E0 k; P0 u; R9 g本教程假定你符合上述条件,若有不符,请自行满足这些条件。/ q' E2 E4 X4 a* D7 v
* ~% M( c/ F  W2 I3 {+ H- Z
#3 如何做?* B. I2 z% F. s. g9 I& q
1.首先,你需要从 SpigotMC 的网站下载一个最新的 BuildTools,网址在这:
( M2 F6 B5 W3 O- u! Mhttps://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
) W# d) }( z9 D: l这是一个永久链接,点进去就会开始下载最新的 BuildTools。
& e5 u" J8 ?, @! n( V- Q* k$ ^; ~+ K% \" l5 h6 r
2.然后找一个地方,新建一个文件夹,文件夹名随便(最好纯英文,以下将这个文件夹称为 工作目录)。把刚刚下好的 BuildTools.jar 放到这里。' u4 H% R/ u5 l! j/ ?- Z6 ]
现在你的工作目录应该是这样:6 M* S' l/ A" C- q- M3 f' p
' R# Z: {# `/ ]
$ L( w& P/ L/ O; T* W1 y3 C; e! h! B
3.接着,在工作目录里创建一个名为 work 的文件夹。+ x  F; s9 V5 s* |

2 d  d5 P, }, u3 O- q  k. b! |4.到 BMCLAPI 下载一个你想要构建的 Spigot 服务端对应的 Minecraft 原版服务端 (比如我构建 1.16.5 的 Spigot,那我就下载一个 1.16.5 的原版服务端)。
9 s& u& w& e( t) L8 w链接格式:https://bmclapi2.bangbang93.com/version/<MC版本>/server4 D9 o4 c3 y% t
把 <MC版本> 换成你要构建的服务端的MC版本。然后打开它,就会开始下载。+ s  D1 j9 x" b/ K4 S

4 g* G: E, _0 s9 [1 \/ G) }' @9 h1 b7 p, f
5.把下载好的原版服务端重命名为 minecraft_server.<MC版本>.jar,把 <MC版本> 改成服务端对应的 Minecraft 版本,并把这个服务端文件移到工作目录里的 work 文件夹。- P3 A8 ?: l9 Q! H1 J
现在你的work文件夹应该是这样:  U1 F2 q$ X8 N$ h
+ i+ E" v  O  E' G6 a5 n
3 Z3 `; C  w/ C- f+ h$ l. s- ^, T! f
6.现在,我们需要下载 Maven 。
, ^" K8 d0 Z$ `3 Z  * 在此不解释什么是 Maven ,如果你不知道,请自行搜索。
% Y1 x/ W/ r+ g! O+ M+ ?链接在这里:https://static.spigotmc.org/maven/apache-maven-3.6.0-bin.zip% u  D/ T) c/ n9 O9 W8 o2 k: J( Q7 a
最好用 IDM 这样的多线程下载器,速度快。
4 _5 O3 T, a1 X/ J  u; E6 M6 j. x
/ n5 M2 ?3 \+ h3 _下载这个,并把它解压到工作目录里; n' M3 J1 g7 e( ]
* 注意! * 不要让解压后的目录里再有嵌套!' `# R8 F9 i2 Q/ T  x5 k" |
解压后的目录应该是这样:# ~2 ^2 h  F& U

6 }* M+ o6 D) j! K" S而不是这样:0 _5 m: d5 Y; I8 _
1 Z( x* s: J! J5 s3 s3 e3 N! R8 ]
现在你的工作目录应该是这样:7 M, P7 R' b$ `1 h0 R

  x& u- ]. z& G; ^5 [# q# o6 O- ^+ b  z! a) s6 ^$ ^

1 G5 U+ v) C' e1 ]+ l* K, R接下来才是重头戏。) H$ `, I1 V$ V

# a* u7 t+ q2 l7.登录你的 Gitee 账号,打开 https://gitee.com/projects/import/url ,依次导入我给出的以下 4 个仓库:
5 g. _# n" r% {6 T: t6 y! p5 zhttps://hub.spigotmc.org/stash/scm/spigot/builddata.git% ?" |  W- h2 U& M
https://hub.spigotmc.org/stash/scm/spigot/bukkit.git/ n- y% [: i7 F% c
https://hub.spigotmc.org/stash/scm/spigot/craftbukkit.git6 K) V. Y" J0 j( Y5 D2 m
https://hub.spigotmc.org/stash/scm/spigot/spigot.git
, u: g/ x$ z- P6 v" j) C) g; M3 o: R" ]# y

5 v  R" j: ?6 q8 I1 ]/ u, t* 提示:经过笔者测试,即使你只是想构建 CraftBukkit 服务端,也一定要在构建时有 Spigot 的仓库,不然会自动下载,很烦人。
+ L# n. `. @  M* h# d# ^- \& p3 j2 e- o

( k4 K1 |0 ^3 k9 t0 U8 ?6 S; e笔者在导入这 4 个仓库时,Gitee 提示已经有人(本站的耗子大佬)导入了这个仓库,不用管,我看过这个已存在的仓库,太旧了。
. P  h5 }+ _6 y! z: S0 e& w. P, I8 [" I+ A) T
名字随意,但一定要记录下来,4个都要记。9 j- V9 P9 L* k: A. \5 q9 g
比如你导入 https://hub.spigotmc.org/stash/scm/spigot/builddata.git 仓库时将其名为 114514
, C. V6 s+ E/ M! D- \7 A
0 H( C; B! X- U. X. b5 X* Z! Q! V那么到时候用到的就是7 d9 g* a7 `. ~& @' R! {
https://gitee.com/<你的Gitee用户名>/114514# ?; O+ o0 {' g! ]( j# |! M

+ ~. ?  |1 \: ~! R9 ~
, v/ C6 _# [- c7 Z9 O8.然后,打开 Git Bash ,输入命令
% E( u5 D; T) l5 P; s1 T& acd <工作目录的绝对路径>
8 _1 ?4 p5 j+ d2 q现在你的 Git Bash 应该是这样9 l. n! o: x% J
$ q' p. m3 w* S2 ]. E, n3 l
(其中 e:\buildtools 是我的工作目录). b0 Y" U! k4 e0 ?) u, B4 O5 ^& O

, C2 r1 C! O0 L9 }% S1 H$ o+ d+ ?/ p' `9.现在,你前面导入的仓库有作用了。
4 p4 u5 v5 ~' ^( S+ B9 b- E+ F在 Git Bash 中依次 git clone 你前面导入的仓库。
/ l  t4 E+ \- ^* S: z; P- W注意,做到这一步不要急,先给clone的仓库改一下名3 V1 j! g* [! _5 o
https://hub.spigotmc.org/stash/scm/spigot/builddata.git 仓库改名为 BuildData
& |0 E; z9 P2 G  q. t, B' f6 z! Ahttps://hub.spigotmc.org/stash/scm/spigot/bukkit.git 仓库改名为 Bukkit
( L% g; p7 M. D5 N1 L# `. F2 ~https://hub.spigotmc.org/stash/scm/spigot/craftbukkit.git 仓库改名为 CraftBukkit9 R3 J( ]# x2 i' P* S4 V: B/ a

; ~0 s  @, X% Rhttps://hub.spigotmc.org/stash/scm/spigot/spigot.git 仓库改名为 Spigot
4 g1 B8 h/ D3 `现在你的工作目录应该是这样:
$ ]! \+ o8 x9 w1 b3 [, m5 W+ V这个 Git Bash 窗口不要关,稍后还要用。
/ R6 o, X  D7 m9 i2 g' }) S+ d
. h) ~, w& I) A2 r7 S3 T- V
' n/ ~3 M5 Q5 n& N/ S10.配置 Maven
7 V/ L6 Y8 k' s7 F& P前面下载了 Maven ,但要是不配置一下,Maven下载必备依赖库时的速度会让你怀疑我写这个帖子是干嘛的。: I) I/ a6 {( _$ A
打开 Maven 的目录 (apache-maven-3.6.0),打开 conf 文件夹,找到 settings.xml 。
4 {) x4 f  P& x8 t. F
/ b2 L( Z- A+ O9 R/ i用你常用的编辑器打开 settings.xml
: o% P: I$ X% I5 D# T; Y  p) k& T8 V" N$ g: o3 }
把以下内容全塞进去:5 h7 t9 t! J5 T" N: `4 O- p
* T9 m$ U; Z! D8 }
5 x: y2 Q! G  Z" c
那么上面的XML代码里究竟和原版有什么区别呢?
0 I- f6 t. a+ c只是改了 mirrors 部分,增加了一个阿里云的 Maven 镜像仓库的 mirror 项。
  c% A. a# D6 p: Z" b* W这是加速下载依赖库的关键,请不要忘记做这一步。* X/ ?, J+ a2 h; _7 w9 t

( r! |. P9 B: q9 |11.正式构建。9 W5 S# D0 }3 c4 O8 ], n
终于来到这一步了。
, O2 H' }9 n- Q) u# d0 Z如果你不小心把 Git Bash 关了,只需要打开新的 Git Bash 窗口,再执行一次 cd <工作目录> 就行。& {: o' |1 V* a+ b- O

' t# e% b9 r$ t5 [现在,在 Git Bash 中输入构建命令,格式如下:
+ _9 R" e  W% e1 B2 t+ `
  1. java -jar BuildTools.jar --rev <MC版本> --compile [CRAFTBUKKIT或SPIGOT]
复制代码
上面的 <MC版本> 自行替换。
7 u- H, v% O4 x5 z+ s% {如果你要构建 CraftBukkit 服务端(也许 1.7.10 用的?不讨论),那么 --compile 后面就写 CRAFTBUKKIT
  L% e; o3 T4 u; P如果要 Spigot 服务端,那么 --compile 后面就写 SPIGOT) f' X2 V5 i/ D2 U3 p
如果都要,--compile 后面就不写东西,BuildTools会把 CraftBukkit 服务端和 Spigot 服务端都构建。
0 ]: D: z1 f8 v& |9 p" p# i% z  G- _' _3 x9 O& W) D/ ?9 _
例如,我只要构建 Spigot 1.16.5,那么命令应该是& ~6 A2 `+ }; k* j: w
java -jar BuildTools.jar --rev 1.16.5 --compile SPIGOT( s9 j8 p* r1 [+ {5 {
以此类推。9 O. L0 T% T2 b* r; v: |5 B7 w, x0 }

9 x+ e2 t( D. }$ s执行命令,有可能会过一小会就出现错误。
' O/ t# F. e. B+ c; b) K大概是这样:4 A% H: c" L. C* d9 k* D+ u" T, s
- U; g* ~9 R$ U: c7 N5 {
问题在哪?在这里:
0 w8 v8 y, Q$ f) N5 ], O( D4 N0 Z' G0 T4 M2 \2 y2 ~
这个意思是:获取版本信息失败,不能验证你给的版本是否存在。, C9 S( x( W: r
为什么会这样?! e. Z7 o0 T$ m' T' T) `
BuildTools 是从 Mojang 官方服务器获取版本信息的,而笔者的网络不好,因此连不上 Mojang 的服务器,从而导致错误。0 Y9 h+ D# S( K- Q9 b
" O. Y* x& `: \* p$ a4 L
如果出现这个,换个时间再试或者等一会再重试此步骤。
( x$ B6 Z5 n% y5 }6 S- B; A8 J如果没有出现上述情况,那么你就可以等着构建完成了。
% U5 Q- u6 @( B7 X7 U6 }当 work 文件夹里出现 spigot-<MC版本>.jar 或 craftbukkit-<MC版本>.jar 时,就大功告成了。5 r; ?. }' t7 e" Q' f; l3 G
  F% L) j! W) g+ @0 F, b& l) r
; ]# E+ u/ E% s1 x7 _7 _0 i
1.PNG
2.PNG

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2021-11-30 12:11 , Processed in 0.051904 second(s), Total 11, Slave 10 queries, Release: Build.2021.11.26 1022, Gzip On, Redis On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

© 2010-2020 我的世界中文论坛 版权所有 本站原创图文内容版权属于原创作者,未经许可不得转载

快速回复 返回顶部 返回列表