Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 93|回复: 0

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

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

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

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

x
本帖最后由 ZX夏夜之风 于 2021-11-14 18:46 编辑
5 S/ W) G' Y9 m
7 P2 i5 V; ]8 P: z4 h! P2 o如何摆脱网络问题,构建自己的Bukkit服务端
( j) i0 D: G2 b3 M/ f, v1 H/ r# |
3 @) z$ |2 n2 s4 [$ g1 r7 l- S0 j// 图片待添加% H+ O$ B: R$ N1 C
@古明地兔 这个帖因为网络问题被重复发布,还请删一下!麻烦了QWQ5 P; B8 g0 n# M& v8 f; O  \: {/ x
9 d+ |. N1 E7 a! G2 Z4 ?
#1 前情提要(一个小故事)
3 c* F2 u, N/ C$ l4 g1 n9 C1 a9 a  ^8 r
我最近学会了插件开发,想练练手,需要一个 Spigot 服务端来用于作 API 和调试用。
7 ]6 f0 @2 p! U/ W. {3 K于是我就到 getbukkit.org 下了一个 Spigot 1.16.5 服务端。) T0 D7 {$ P- Y& H
结果一启动
* K4 Y1 r1 s' Z  {"Error, this build is outdated."
2 b' t+ P2 F6 d1 b$ O+ ^我不是很喜欢过期,于是我就去构建一个 Spigot 服务端。( D. G  T3 ^/ i. D6 F; N+ R0 c
结果被网络问题"制裁"了,各种 Connection timed out 以及因其导致的 BUILD FAILURE 弄得我不厌其烦。
7 e7 E0 f, a5 q& ]; r& ~1 E1 J* g8 E  d5 M( Q6 l" a' E
这个帖子,以 Spigot 为例,旨在教你如何摆脱万恶的网络问题,轻松构建自己的 Bukkit 服务端。
% A# [# J8 X  e( P1 \; p# t$ O. M7 S4 d5 a( r$ J$ u  |9 s$ }
#2 准备
9 E4 r# U: N! P. b- K: O你需要以下东西:7 \1 [7 I, c  ~! W8 t- ]  `
一个 Gitee 账号0 @' v4 A( `' {$ @3 j
一台电脑,且安装了 Git" F7 G9 s" @# |3 W' a9 w
  * Git 安装时要带有 Git Bash!如果没有,请重新安装 Git,并把 Git Bash 带上。
9 F; ^) q/ Z( h/ X6 z
& n2 A% l) Z/ O8 l  d& G5 E一个 Java 环境(最低 Java 8,如果是 1.17 及以上要 Java 16)
0 D3 m4 i; m7 S. K, F: s* G  * 如何安装 Java 和 Git 在此不再叙述。
$ g5 c$ C* ?# h/ r# D3 E0 ~$ [2 l  F% L% X& }
你需要为构建准备至少 400 MB 的空闲空间用于存储 Bukkit 的各种 .patch 文件以及其他的构建用的文件。
8 M  i3 y5 X& P( R你需要有耐心。+ m7 n6 ]$ n7 C3 k! m
+ P; V3 w  y7 O8 r1 ^& K

; A# e) S. [; [5 o# y; Q; L. {9 N8 j本教程假定你符合上述条件,若有不符,请自行满足这些条件。
5 R4 T' G& X6 ]! m
$ t0 t& \: m6 a#3 如何做?
9 F+ I% k( c! S8 @5 D1.首先,你需要从 SpigotMC 的网站下载一个最新的 BuildTools,网址在这:8 A3 m3 d  Y1 _% r5 p4 h8 [
https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar) m5 [* v2 [! b+ b) p4 j9 J7 V
这是一个永久链接,点进去就会开始下载最新的 BuildTools。
1 v8 l+ ~$ H6 }
) V/ B( j8 {: \# J2 c2.然后找一个地方,新建一个文件夹,文件夹名随便(最好纯英文,以下将这个文件夹称为 工作目录)。把刚刚下好的 BuildTools.jar 放到这里。' c) N0 ~! F6 N
现在你的工作目录应该是这样:
/ O  X+ p1 _5 Z
9 v7 E6 F9 ]3 J( u6 Z
; ^& M  t" K4 B% l& I# k8 U' O3.接着,在工作目录里创建一个名为 work 的文件夹。: b" m7 k' @" J7 {3 K$ d; r: T
2 |  J) U! u, b& U( P( X: n
4.到 BMCLAPI 下载一个你想要构建的 Spigot 服务端对应的 Minecraft 原版服务端 (比如我构建 1.16.5 的 Spigot,那我就下载一个 1.16.5 的原版服务端)。$ e* C: z6 S  w$ W8 V; f: F
链接格式:https://bmclapi2.bangbang93.com/version/<MC版本>/server- a( W' n) r. n
把 <MC版本> 换成你要构建的服务端的MC版本。然后打开它,就会开始下载。
' H- V% C: k9 k  f- \5 \; d4 L. ]$ l; l

9 d2 F% [7 |2 c* i* y5.把下载好的原版服务端重命名为 minecraft_server.<MC版本>.jar,把 <MC版本> 改成服务端对应的 Minecraft 版本,并把这个服务端文件移到工作目录里的 work 文件夹。& s4 P1 Z' v: r0 Q; s
现在你的work文件夹应该是这样:
% O. \$ h7 k1 r7 V" G- A4 b1 V, d6 D; j8 z) x3 ?' b& _  v. S
* ?' n5 v% g+ L/ ~
6.现在,我们需要下载 Maven 。6 `: ^+ J  p8 s' p+ T
  * 在此不解释什么是 Maven ,如果你不知道,请自行搜索。
7 z: o' L8 `6 g' \2 }( d链接在这里:https://static.spigotmc.org/maven/apache-maven-3.6.0-bin.zip
; H: @7 D8 V5 _0 m最好用 IDM 这样的多线程下载器,速度快。
% H1 w, w% f; b2 n$ }0 ~4 i, E
. H( ^5 l" Q9 L( }4 i下载这个,并把它解压到工作目录里
# e, h( Z2 E* [1 `6 J9 m* 注意! * 不要让解压后的目录里再有嵌套!6 X- e! @( J2 I" z1 j1 E5 g& j6 J$ a
解压后的目录应该是这样:! ^' c4 z" y4 t4 C- d# t1 _

* J. ^4 V( Q/ V, I, S! P而不是这样:, N/ |, ^4 G8 g; y! R
( v# V0 _$ M0 Z" W, i# |' j
现在你的工作目录应该是这样:2 j; l$ E! B0 ]" X8 \0 Q3 m; `6 ^
  E; N# j! V# V6 N, N# c
. |/ Z9 p/ W$ X3 p# c* S5 I5 o: f

6 ^4 F% @5 p+ ~3 D6 U接下来才是重头戏。  \4 T5 X) G8 f$ d
) j* H" K" x/ x, \% h5 P
7.登录你的 Gitee 账号,打开 https://gitee.com/projects/import/url ,依次导入我给出的以下 4 个仓库:+ e& v, H, w+ S/ G0 p7 J
https://hub.spigotmc.org/stash/scm/spigot/builddata.git
6 W4 ]0 E. a, P1 c2 Phttps://hub.spigotmc.org/stash/scm/spigot/bukkit.git7 q* w1 c7 E/ y( z$ p) k- y# i
https://hub.spigotmc.org/stash/scm/spigot/craftbukkit.git
  T# g/ R0 \& b; Y8 r, Shttps://hub.spigotmc.org/stash/scm/spigot/spigot.git  W: c! f+ T' }' ?# |: C4 J
) W4 X; @/ G( g
% z; v6 P- B9 H% G! k5 {7 R: Q
* 提示:经过笔者测试,即使你只是想构建 CraftBukkit 服务端,也一定要在构建时有 Spigot 的仓库,不然会自动下载,很烦人。
* i( h5 l+ V9 p3 r9 q% n( J9 @( g& r  p) h2 ]% f$ N

# @- q1 x+ s. _. N笔者在导入这 4 个仓库时,Gitee 提示已经有人(本站的耗子大佬)导入了这个仓库,不用管,我看过这个已存在的仓库,太旧了。: E* T3 z! Y+ U( n" F0 L

3 R  W! o% S% f- T4 o名字随意,但一定要记录下来,4个都要记。: `  l: G; N8 N" p3 I/ P) a
比如你导入 https://hub.spigotmc.org/stash/scm/spigot/builddata.git 仓库时将其名为 114514
8 {1 O. j1 Q* b3 u" X4 ~1 ]3 J8 b: Q- y7 s
那么到时候用到的就是
) u: C! x. Y  g" Rhttps://gitee.com/<你的Gitee用户名>/114514
. n3 s8 Y4 @0 d1 s$ p2 R
7 Q, l1 U( q, \0 I( s
( \1 k) Q; W2 @0 F1 U# {$ E8.然后,打开 Git Bash ,输入命令* n* u' o# }; f3 D: k2 V
cd <工作目录的绝对路径>. N7 h, ?) c( J' Q# W
现在你的 Git Bash 应该是这样5 V7 ~; I, U2 ~" L

$ k" x3 z" W: f. i(其中 e:\buildtools 是我的工作目录)
1 S8 X; C0 g; w3 C9 Y/ K
  \/ \5 r* f" B3 _- M9.现在,你前面导入的仓库有作用了。
" a& i3 k$ a( y4 T, {在 Git Bash 中依次 git clone 你前面导入的仓库。
9 s. R4 o0 p! T# [' \4 o注意,做到这一步不要急,先给clone的仓库改一下名* k' L3 s7 k% ^( z# E; H
https://hub.spigotmc.org/stash/scm/spigot/builddata.git 仓库改名为 BuildData" \4 e( O; H/ f1 Q/ z3 y
https://hub.spigotmc.org/stash/scm/spigot/bukkit.git 仓库改名为 Bukkit
: X+ Y' k+ ?6 r2 j! S  J. Jhttps://hub.spigotmc.org/stash/scm/spigot/craftbukkit.git 仓库改名为 CraftBukkit* i. x1 r1 B$ P: r7 P* b

' ^5 x  p" m3 t, ?  d( {https://hub.spigotmc.org/stash/scm/spigot/spigot.git 仓库改名为 Spigot4 i, y' [0 T7 k: m* o
现在你的工作目录应该是这样:
6 \1 L: T9 Q- @7 t. z* f这个 Git Bash 窗口不要关,稍后还要用。
6 z9 ~" [2 V- E0 s7 F+ H! t7 ^. \, e. J0 d

! V. [0 X; D9 [( }; Z* V9 J4 r7 K6 F' Z10.配置 Maven7 [- @3 Z, a" i4 @' w  }
前面下载了 Maven ,但要是不配置一下,Maven下载必备依赖库时的速度会让你怀疑我写这个帖子是干嘛的。
5 P, w0 G: F5 a- J5 w9 E2 P0 u打开 Maven 的目录 (apache-maven-3.6.0),打开 conf 文件夹,找到 settings.xml 。
# ~, n! w) n2 i5 N; Q9 V8 S5 p$ L8 Y) }4 k  d
用你常用的编辑器打开 settings.xml
, ~7 B* j1 l1 B' r
! y! e, ?/ q9 C: H- Y/ G" {把以下内容全塞进去:9 E8 `/ @! R" q+ u0 I7 t  V

* A6 Z: q, Q) W5 c' o! A* k# H

/ K" u4 e; Q2 {) ~7 S) G. b那么上面的XML代码里究竟和原版有什么区别呢?& v8 w% H' p$ A' u
只是改了 mirrors 部分,增加了一个阿里云的 Maven 镜像仓库的 mirror 项。1 O( g. O- V2 J; S' F3 }
这是加速下载依赖库的关键,请不要忘记做这一步。; ]3 z" n: ?( j7 S* ~
% f9 W7 K" b( e& W
11.正式构建。. N. N# O/ z$ [) ^# @" R4 L
终于来到这一步了。' A# |5 ^8 ?- y' H
如果你不小心把 Git Bash 关了,只需要打开新的 Git Bash 窗口,再执行一次 cd <工作目录> 就行。
, [7 l5 `6 M" |  v# k/ m6 A/ j, F5 u! j' ]! A: [. |( d/ l
现在,在 Git Bash 中输入构建命令,格式如下:
" |% C/ ]+ t4 J, K" L' h' Y, z
  1. java -jar BuildTools.jar --rev <MC版本> --compile [CRAFTBUKKIT或SPIGOT]
复制代码
上面的 <MC版本> 自行替换。& D: t' u$ E. h, }" F! L8 N* Q
如果你要构建 CraftBukkit 服务端(也许 1.7.10 用的?不讨论),那么 --compile 后面就写 CRAFTBUKKIT
+ D1 }7 {# x! }2 Y如果要 Spigot 服务端,那么 --compile 后面就写 SPIGOT. G4 E% R3 _' e8 b) H  ?; G
如果都要,--compile 后面就不写东西,BuildTools会把 CraftBukkit 服务端和 Spigot 服务端都构建。+ y1 \5 V' n/ w" Z0 `2 `

, w" l2 Z3 g& K; A7 h, b例如,我只要构建 Spigot 1.16.5,那么命令应该是
, j* O  s( W( N' Qjava -jar BuildTools.jar --rev 1.16.5 --compile SPIGOT
3 M* ?( V5 y$ j, Y6 F以此类推。
6 C3 a7 \  g8 p" j4 F2 B2 W/ l) N
+ H  G" K0 J" r( M+ J执行命令,有可能会过一小会就出现错误。
8 w4 b, j: m2 B- f大概是这样:& R/ |  n* c) l3 m7 ?4 O+ r5 M
1 {, ^$ J! o  ~5 {0 Z+ \. [
问题在哪?在这里:
. j  [- r: j8 z; N$ q) A9 J4 I! n) c/ g5 L4 M+ `* N+ e1 E
这个意思是:获取版本信息失败,不能验证你给的版本是否存在。
( i/ f; Y% m$ W: R' W. _) n* {' A6 P为什么会这样?
" ?$ J6 d+ u7 M8 GBuildTools 是从 Mojang 官方服务器获取版本信息的,而笔者的网络不好,因此连不上 Mojang 的服务器,从而导致错误。
1 m2 T, J  ]5 r4 ?: H+ |- b4 u" w/ u6 e& ?2 f
如果出现这个,换个时间再试或者等一会再重试此步骤。) y& N% Q4 }% {- F7 I. D
如果没有出现上述情况,那么你就可以等着构建完成了。
! f; n& W8 P; M当 work 文件夹里出现 spigot-<MC版本>.jar 或 craftbukkit-<MC版本>.jar 时,就大功告成了。- K+ P% V7 u# F' l; P* D8 r$ {7 i9 S

: u( X1 j' s% b1 b; c) J2 K
1 l% c. i7 g/ {/ Q: I
1.PNG
2.PNG

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

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

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

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

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