本帖最后由 165543337 于 2018-2-20 09:09 编辑
& q4 o# T9 w' K0 I8 V- \3 m1 _8 a
1.复制,构建和编译Spigot源代码
获得Spigot的源码以成功进行开发工作8 T; V; x m6 |3 y
3 J1 \3 X: j7 C$ f; h+ f
6 o' Z9 O. C/ n* K4 G4 V, A! T
内容+ V2 g! z T5 Z' b( o$ B
前提条件
获取源代码1 m4 `& h; _3 V: p
构建spigot/ Y: i+ C2 v3 B
创建一个用于提交或本地使用的补丁文件
* S6 ?; P! F0 l. R4 y$ |) a8 I
前提条件(顶部)
拥有基础Git知识
一个基于Unix的系统或一个bash解释器(比如Cygwin,Git Bash等)4 f3 u0 `* ? m2 ^2 j! k; q
Maven 3.0.5与路径设置
# z1 j/ Y9 o9 v( E
获取源代码(顶部)
首先,从复制Spigot源码开始。如果你想创建一个分支,你需要在JIRA上创建一个账户。填写SpigotMC CLA并等待24小时以激活您的Stash账户。请确保您的用户名和电子邮件地址相符。一旦您的账户被激活,请使用您的JIRA凭证登录到Stash。然后,您可以创建分支,推送您的代码更改,然后将其提交以供审阅。
接下来,使用“git checkout <branch>”切换到你希望构建的任何分支。(主体,快照,测试分支等)0 a. o3 W/ R7 K' ~
通过“git submodule update --init”来启动Bukkit下游系统和CraftBukkit构建的更新。* R; l' \' b Y* F
0 l* W2 B- {$ s. ^1 S( T9 ?
下载完成后,您就可以通过执行源文件夹根目录中的“./applyPatches.sh”文件来应用Spigot的补丁。0 e8 e* z* @2 a# P9 M1 p
9 _* E# r) a/ h# k# T- Q
完成此操作后,您现在可以在Spigot-Server和Spigot-API下找到您可以使用的完整的Spigot源代码副本。, K) V# z' Q) z+ a i9 n
构建Spigot(顶部)8 T6 K+ k. b# m% n$ ]' E
一旦完成了编辑IDE或选择的文本编辑程序中的更改,请回到源代码的根目录,使用Maven清理上一次的工作区(“mvn clean install”)。
您现在可以在./Spigot/Spigot-Server/target/spigot-genericMinecraftVersion-GenericBukkitBuildVersion.jar中找到您的自定义Spigot版本
5 U6 P: R1 O6 U Q$ v, t
创建一个用于提交或本地使用的补丁文件(顶部)
进入您进行更改的Spigot(API / Server)部分的目录。
将更改后的文件放到暂存区并在本地提交。+ }1 I! ]2 [4 z0 ]2 }! v2 e
回到根目录并执行./rebuildPatches.sh文件。% A v# |2 @1 B. O$ n, X0 O
2 S1 I* a$ N* N; K" [( c
您现在可以在根目录下的相关文件夹((Craft)Bukkit-patches)中找到您的.patch作为最后一个补丁文件(假设您没有时间使用或提交)。. N6 C, ]9 k/ f; S: r
2.理解栈堆跟踪
- e# o, U" u! V9 z! g m+ J
" [; S4 I, p. [5 j |9 r0 V2 r2 k$ j
堆栈跟踪本质上是由插件(或软件)给出的长的错误消息以通知用户或开发人员出错的地方。堆栈跟踪包含两个部分:发生的实际错误以及发生错误的代码的位置。这些信息可以帮助作为服务器管理员的你弄清楚出了什么问题。# Y2 e. J5 R& S) G( h3 X
内容+ ]+ U; s! j$ P" i' k/ L% C
插件栈堆跟踪# Y! ^, h3 A& ~8 A# w1 R
解析YAML时的栈堆跟踪 v% b9 M l# s
插件堆栈追踪(顶部)
0 P8 p q" l! j0 ^
以下是插件堆栈跟踪示例:
复制代码在看它的上面部分时:
& E. v8 b( q* I
我们可以看到,对于这个错误,实际的错误发生在PointsAPI.java的第28行一个名为getPoints()的函数中。这种错误的情况是插件的点数系统无法连接到数据库。ScoreboardManager $ 1.run()(ScoreboardManager类中的一个匿名(如无指定名称)类)调用此函数,这将成为计分板(scoreboard)更新的原因。
栈堆跟踪的后半部分是来自调用代码的服务器插件:
复制代码
解析YAML时的栈堆跟踪* v, w. S# K9 C: i \' a- Y
( l( e* M- V8 Y, @% Y" J. \5 W
2 k- P" `7 w, G c% [; l& {& `2 e
人们经常会感到困惑,认为这是插件的问题,但它通常不是。这是一个可以轻易纠正的问题。这是来自PermissionsEx的栈堆跟踪示例,是由于更改前缀时的语法错误导致的:
复制代码栈堆跟踪会通知您是在解析配置时发生的错误。我们现在将使用一个工具(下载地址为http://yaml-online-parser.appspot.com/)来确定问题所在。9 U" ^2 t. S# f; }5 Z/ D* U6 O
这是可疑的组:2 @) [+ j1 o; B; p
当我们将permissions.yml文件的可疑部分粘贴到解析器工具中时,这就是我们得到的结果:
. g6 @; }2 P. ~- ? S* |; R, x4 F' t
从这里您将能够识别错误并确定您是否已实时修复它。通常错误会出现在其他行上,如果找不到的话,在给出的这一行周围寻找即可。
3.从Eclipse到Intellij
# j H9 F6 h9 z [* z! a0 o
许多人一直在要求我写一个从eclipse到IntelliJ的教程,并且在spigot站内也缺少可以使用的优秀教程。
% B9 e2 E2 \% a4 f N! ?
在下面的wiki中,我将教你以下的内容:, R) n$ s# f. X
- 安装IntelliJ , b+ v5 i( t/ Z; T0 p
- 从Eclipse切换到IntelliJ
- 设置项目* z) M. \& z" V
- 构建项目资源- M# {# M; F; ]/ E. |
- 成功将项目导出为jar文本+ z7 }7 Q" K: V: c
$ P9 J8 F# i# z5 U
1)安装IntelliJ : ^6 i9 d5 o; o% g/ V
3 O6 h! [; M$ I' w+ s# P: O0 E" j
下列指南的前提条件是:假设你已经安装了JDK!/ l' g. S$ ]) o% \; m
3 E2 ^# Y$ |2 s/ S" U) U# C
Windows:
1.从他们的官方网站下载IntelliJ 。
2.运行下载的.exe文件,然后按照安装向导操作即可。
苹果电脑:
3 I! E& i; J" W7 L! c, _( l
1.从他们的官方网站下载IntelliJ。1 g9 ]8 ]9 \; h$ B( m
2.打开.DMG文件
3.将该文件拖到应用程序目录。
( i1 s! Y1 K3 C& f
Linux:2 ` d* Z3 U# V9 O1 @& J9 d
本教程略为高级,假设你有Ubuntu / CentOS。; n% {7 }& d; W0 H
注意:我只是一个centos和Ubuntu系统管理员,如果您运行的是不同的操作系统,请参阅Google。
% N/ T7 I/ }2 k1 E
[Ubuntu] & g* ]5 ^# w: G/ }! d
1)请参阅IntelliJ网站并下载tar.gz文件
; I" A5 a: R0 k7 G; L3 R, u( }" ~
2)重命名文件夹“idea.tar.gz”并将其移动到桌面1 }6 M7 D8 ~9 v) s. h
3)现在,您要在终端窗口中执行以下命令以解压tar.gz文件:2 U1 F* P& D; x" p% F3 }# X
复制代码完成后,桌面上会新建一个文件夹,在控制台窗口中输入:: l; [8 Q- P/ m) N4 D
复制代码这会把你带到你的IDEA文件,现在切换到bin目录并启动sh文件,输入:4 y8 E6 E/ Q5 [$ b' h
复制代码完结撒花~
2)从Intellij到Eclipse
我将逐节更新这个wiki,意思是明天一节,后天再一节,等等。(作者的意思是未来更新,但最后更新时间是2015.6.19 16:52,估计已跳票)3 j7 }, d, i! z9 T q4 |
4.使用Minecraft区块修复器7 a j& U" ?) l7 j( o. U! N" s
修复世界中区块、生物以及各种疑难杂症' W6 W$ @4 Z i; E, l
背景
有时,Minecraft服务器可能会有导致区块损坏或用户使用太多实体过载区块的问题。Fenixin的Minecraft Region Fixer是帮助你解决这些问题的最佳工具。+ d8 |( P, p) u9 m* K% e
获取工具
通过使用git的这些命令中的任何一个来在GitHub上复制Fenixin的库
5 F$ f. x4 p9 J7 s0 v* f. U) x
如果你不打算使用Python,你可以跳过这一步,并使用下面的可执行文件。
7 n3 ~& w- x) o( v1 `; a
运行该工具* Y) Z) W0 [0 m/ W- }
有两种方式来运行它,首选的方式包含原始python脚本,但也有可执行的windows文件这一选项。
使用python(目前不支持Python 2.7.x,3.x的使用),您只需要转到复制或提取的工具的位置并输入下列指令:
. N* G, F6 |/ M3 _( f6 y, @
获得Spigot的源码以成功进行开发工作" F" G+ l" ]: F$ f& \8 S: |
内容
前提条件
获取源代码; K* s( k" ?) ^+ j2 J3 b& }
构建spigot
创建一个用于提交或本地使用的补丁文件
3 a) I1 b! l0 L2 Q/ Y
前提条件(顶部)
拥有基础Git知识
一个基于Unix的系统或一个bash解释器(比如Cygwin,Git Bash等)
Maven 3.0.5与路径设置
: F- Q8 y' [: ]: I' Q1 v; _7 T
获取源代码(顶部)" x0 ]& ^. u) I& V) a( F
首先,从复制Spigot源码开始。如果你想创建一个分支,你需要在JIRA上创建一个账户。填写SpigotMC CLA并等待24小时以激活您的Stash账户。请确保您的用户名和电子邮件地址相符。一旦您的账户被激活,请使用您的JIRA凭证登录到Stash。然后,您可以创建分支,推送您的代码更改,然后将其提交以供审阅。
* D" v2 Y( C; b! [
* b% W8 i1 B% Z# ^) q
接下来,使用“git checkout <branch>”切换到你希望构建的任何分支。(主体,快照,测试分支等)- L. \3 {1 a0 D[
% k3 y% u; K% ~# e" [4 a0 w
通过“git submodule update --init”来启动Bukkit下游系统和CraftBukkit构建的更新。; n6 u. ^+ E& o
下载完成后,您就可以通过执行源文件夹根目录中的“./applyPatches.sh”文件来应用Spigot的补丁。
5 P/ @' t( t) k% e1 E" L. s
: Cb: n. ?- O* ~/ Z: B
完成此操作后,您现在可以在Spigot-Server和Spigot-API下找到您可以使用的完整的Spigot源代码副本。, ?/ T+ v! l, l2 T
0 b2 u; L3 _5 r" }
构建Spigot(顶部)
一旦完成了编辑IDE或选择的文本编辑程序中的更改,请回到源代码的根目录,使用Maven清理上一次的工作区(“mvn clean install”)。
您现在可以在./Spigot/Spigot-Server/target/spigot-genericMinecraftVersion-GenericBukkitBuildVersion.jar中找到您的自定义Spigot版本
创建一个用于提交或本地使用的补丁文件(顶部)9 p6 V. C- @+ T' l& ~
进入您进行更改的Spigot(API / Server)部分的目录。1 M6 m% w& W! `! W3 Y% [( _- C+ ~
/ L6 @/ q. m& w* {
将更改后的文件放到暂存区并在本地提交。
" p! s5 ^7 y; _6 o$ G3 ~
回到根目录并执行./rebuildPatches.sh文件。
" C# j/ C5 J" X! F# A# x/ U
) U* ?7 Y1 V/ u7 _
您现在可以在根目录下的相关文件夹((Craft)Bukkit-patches)中找到您的.patch作为最后一个补丁文件(假设您没有时间使用或提交)。
) c* a! j9 m7 B) F. p6 r3 p: a
2 o5 q! F. a8 R2 m9 b3 _
2.理解栈堆跟踪8 r' J! B# R! j( N1 f9 E
堆栈跟踪本质上是由插件(或软件)给出的长的错误消息以通知用户或开发人员出错的地方。堆栈跟踪包含两个部分:发生的实际错误以及发生错误的代码的位置。这些信息可以帮助作为服务器管理员的你弄清楚出了什么问题。1 r- K, h1 c. G. i7 R; `
: R0 ]+ VN! x3 q5 ~
内容) k( P1 C( C% H$ n
插件栈堆跟踪" o: r" x; ]( {2 Y, q& g
解析YAML时的栈堆跟踪
插件堆栈追踪(顶部)$ S$ K+ {( I8 g
) |/ S9 x3 j2 W4 T" n+ Y
( d+ W. |' r0 X+ G! }+ c/ I/ `- b# G9 [
以下是插件堆栈跟踪示例:9 \+ Y6 T$ u" |o9 c
在看它的上面部分时:& x" t( W# w; z8 m8 B4 ]
我们可以看到,对于这个错误,实际的错误发生在PointsAPI.java的第28行一个名为getPoints()的函数中。这种错误的情况是插件的点数系统无法连接到数据库。ScoreboardManager $ 1.run()(ScoreboardManager类中的一个匿名(如无指定名称)类)调用此函数,这将成为计分板(scoreboard)更新的原因。% s1 U7 _- \/ s
栈堆跟踪的后半部分是来自调用代码的服务器插件:1 x( \" C, x2 U' k; {7 {
% l/ p4 e0 W, q5 j]( e, z
解析YAML时的栈堆跟踪8 {8 H0 |/ ?4 e4 B/ z
0 U+ o7 o$ R/ r* X& I
/ B. q. k. b2 I- U) Q, v. v
人们经常会感到困惑,认为这是插件的问题,但它通常不是。这是一个可以轻易纠正的问题。这是来自PermissionsEx的栈堆跟踪示例,是由于更改前缀时的语法错误导致的:7 z+ l$ h2 x0 B% C) r( f( T) C: z
栈堆跟踪会通知您是在解析配置时发生的错误。我们现在将使用一个工具(下载地址为http://yaml-online-parser.appspot.com/)来确定问题所在。; E" W( m1 z: O1 v* i
这是可疑的组:" n+ q' ?& F+ k: c
当我们将permissions.yml文件的可疑部分粘贴到解析器工具中时,这就是我们得到的结果:/ N! ]$ U6 ]* m5 R9 ^
0 I( J3 n( ~Z# o$ C# W
从这里您将能够识别错误并确定您是否已实时修复它。通常错误会出现在其他行上,如果找不到的话,在给出的这一行周围寻找即可。& [# ?) I. _: g" f$ ?8 z( d
$ Y* X/ |* ~3 ?
3.从Eclipse到Intellij
9 Q, h9 E3 d. E0 Tm5 U" r) `+ F
许多人一直在要求我写一个从eclipse到IntelliJ的教程,并且在spigot站内也缺少可以使用的优秀教程。: _2 s0 n2 i( ~! p! d: t, l# H
% G6 K$ A" V2 c$ M) [% Z9 c9 y$ T
在下面的wiki中,我将教你以下的内容:
- O1 }6 m, z8 L; n2 n6 B' c: Q% p- N4 E
- 安装IntelliJ
- 从Eclipse切换到IntelliJ
- 设置项目
- 构建项目资源
- 成功将项目导出为jar文本
' T& v8 _& ]9 [" yvy6 n) w
1)安装IntelliJ
8 @. @: Xf3 ~% ^
下列指南的前提条件是:假设你已经安装了JDK!
Windows:% r% oA2 Q3 ]( F3 ?z4 o; v
( J8 y0 X. a. m) R
1.从他们的官方网站下载IntelliJ 。
2.运行下载的.exe文件,然后按照安装向导操作即可。* ^& F9 ?( \, m# Z4 W
( I, s" a, p- v
5 {$ P% ?7 I3 z$ W; k
苹果电脑:# u! G, z+ B* P# t& D0 Z
9 X, N* q* h- M
1.从他们的官方网站下载IntelliJ。5 |9 h/ H9 |5 T3 ~# }" I
2.打开.DMG文件 $ T4 X6 C1 |) c8 m1 X* P+ J4 q
3.将该文件拖到应用程序目录。
Linux:
本教程略为高级,假设你有Ubuntu / CentOS。2 s* O( G9 l8 j9 X* u
注意:我只是一个centos和Ubuntu系统管理员,如果您运行的是不同的操作系统,请参阅Google。4 k; Y1 R0 b% PB
[Ubuntu] . S' S, Y. z0 D& S' V+ B- E
1)请参阅IntelliJ网站并下载tar.gz文件4 z, G0 h8 M+ L: X( a$ ZD
2)重命名文件夹“idea.tar.gz”并将其移动到桌面
( p$ E- M9 h/ d& V1 f* {8 P: V& D. b
3)现在,您要在终端窗口中执行以下命令以解压tar.gz文件:
完成后,桌面上会新建一个文件夹,在控制台窗口中输入:
这会把你带到你的IDEA文件,现在切换到bin目录并启动sh文件,输入:: n- W, ^% o^1 `7 p
完结撒花~
3 O( }( V0 l5 a, h) k. u4 F
2)从Intellij到Eclipse
我将逐节更新这个wiki,意思是明天一节,后天再一节,等等。(作者的意思是未来更新,但最后更新时间是2015.6.19 16:52,估计已跳票)8 ~+ A- c( D1 z( i7 u' ?
6 j+ N% Z* T4 }: @" F9 \0 ]
4.使用Minecraft区块修复器b7 x- U, f' ?' P
修复世界中区块、生物以及各种疑难杂症7 i7 q& m3 H" ]3 \) ^3 b
* h7 S9 I8 ak: s* R
) g' H5 ?+ r) |. wa
背景
有时,Minecraft服务器可能会有导致区块损坏或用户使用太多实体过载区块的问题。Fenixin的Minecraft Region Fixer是帮助你解决这些问题的最佳工具。1 o; I4 UL: ]+ F
获取工具0 I, s1 z1 O3 L8 f0 M- `! X
通过使用git的这些命令中的任何一个来在GitHub上复制Fenixin的库0 ]' T9 K: P7 G- j: u4 j
0 w. s0 b/ z/ i) m
如果你不打算使用Python,你可以跳过这一步,并使用下面的可执行文件。7 t2 G% F# t4 j7 c/ u
" j7 |# D/ f! G- G$ X' V6 J* d
运行该工具
有两种方式来运行它,首选的方式包含原始python脚本,但也有可执行的windows文件这一选项。
使用python(目前不支持Python 2.7.x,3.x的使用),您只需要转到复制或提取的工具的位置并输入下列指令:
& q4 o# T9 w' K0 I8 V- \3 m1 _8 a
1.复制,构建和编译Spigot源代码
获得Spigot的源码以成功进行开发工作8 T; V; x m6 |3 y
3 J1 \3 X: j7 C$ f; h+ f
6 o' Z9 O. C/ n* K4 G4 V, A! T
内容+ V2 g! z T5 Z' b( o$ B
前提条件
获取源代码1 m4 `& h; _3 V: p
构建spigot/ Y: i+ C2 v3 B
创建一个用于提交或本地使用的补丁文件
* S6 ?; P! F0 l. R4 y$ |) a8 I
前提条件(顶部)
拥有基础Git知识
一个基于Unix的系统或一个bash解释器(比如Cygwin,Git Bash等)4 f3 u0 `* ? m2 ^2 j! k; q
Maven 3.0.5与路径设置
# z1 j/ Y9 o9 v( E
获取源代码(顶部)
首先,从复制Spigot源码开始。如果你想创建一个分支,你需要在JIRA上创建一个账户。填写SpigotMC CLA并等待24小时以激活您的Stash账户。请确保您的用户名和电子邮件地址相符。一旦您的账户被激活,请使用您的JIRA凭证登录到Stash。然后,您可以创建分支,推送您的代码更改,然后将其提交以供审阅。
接下来,使用“git checkout <branch>”切换到你希望构建的任何分支。(主体,快照,测试分支等)0 a. o3 W/ R7 K' ~
通过“git submodule update --init”来启动Bukkit下游系统和CraftBukkit构建的更新。* R; l' \' b Y* F
0 l* W2 B- {$ s. ^1 S( T9 ?
下载完成后,您就可以通过执行源文件夹根目录中的“./applyPatches.sh”文件来应用Spigot的补丁。0 e8 e* z* @2 a# P9 M1 p
9 _* E# r) a/ h# k# T- Q
完成此操作后,您现在可以在Spigot-Server和Spigot-API下找到您可以使用的完整的Spigot源代码副本。, K) V# z' Q) z+ a i9 n
构建Spigot(顶部)8 T6 K+ k. b# m% n$ ]' E
一旦完成了编辑IDE或选择的文本编辑程序中的更改,请回到源代码的根目录,使用Maven清理上一次的工作区(“mvn clean install”)。
您现在可以在./Spigot/Spigot-Server/target/spigot-genericMinecraftVersion-GenericBukkitBuildVersion.jar中找到您的自定义Spigot版本
5 U6 P: R1 O6 U Q$ v, t
创建一个用于提交或本地使用的补丁文件(顶部)
进入您进行更改的Spigot(API / Server)部分的目录。
将更改后的文件放到暂存区并在本地提交。+ }1 I! ]2 [4 z0 ]2 }! v2 e
回到根目录并执行./rebuildPatches.sh文件。% A v# |2 @1 B. O$ n, X0 O
2 S1 I* a$ N* N; K" [( c
您现在可以在根目录下的相关文件夹((Craft)Bukkit-patches)中找到您的.patch作为最后一个补丁文件(假设您没有时间使用或提交)。. N6 C, ]9 k/ f; S: r
2.理解栈堆跟踪
- e# o, U" u! V9 z! g m+ J
" [; S4 I, p. [5 j |9 r0 V2 r2 k$ j
堆栈跟踪本质上是由插件(或软件)给出的长的错误消息以通知用户或开发人员出错的地方。堆栈跟踪包含两个部分:发生的实际错误以及发生错误的代码的位置。这些信息可以帮助作为服务器管理员的你弄清楚出了什么问题。# Y2 e. J5 R& S) G( h3 X
内容+ ]+ U; s! j$ P" i' k/ L% C
插件栈堆跟踪# Y! ^, h3 A& ~8 A# w1 R
解析YAML时的栈堆跟踪 v% b9 M l# s
插件堆栈追踪(顶部)
0 P8 p q" l! j0 ^
以下是插件堆栈跟踪示例:
- [11:56:54] [Server thread / WARN]:java.lang.NullPointerException
- [11:56:54] [Server thread / WARN]:at net.paradoxmc.NetworkManager.Points.PointsAPI.getPoints(PointsAPI.java: 28)
- [11:56:54] [Server thread / WARN]:at net.paradoxmc.NetworkManager.GizmoManager.ScoreboardManager $ 1.run(ScoreboardManager.java:40)
- [11:56:54] [Server thread / WARN]:at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftTask.run(CraftTask.java:71)
- [11:56:54] [Server thread / WARN]:at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftScheduler.mainThreadHeartbeat( CraftScheduler.java:350)[11:56:54
- ] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:641)
- [11:56:54] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289)
- [11:56:54] [Server thread / WARN]:at net。 minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584)
- [11:56:54] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490)
- [ 11:56:54] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628)
[11:56:54] [Server thread / WARN]:java.lang.NullPointerException 4 W ]- C! l _/ i% ^+ c$ ~
[11:56:54] [Server thread / WARN]:at net.paradoxmc.NetworkManager.Points.PointsAPI.getPoints(PointsAPI.java: 28), F2 K" c+ F% l3 c
[11:56:54] [Server thread / WARN]:at net.paradoxmc.NetworkManager.GizmoManager.ScoreboardManager $ 1.run(ScoreboardManager.java:40)
我们可以看到,对于这个错误,实际的错误发生在PointsAPI.java的第28行一个名为getPoints()的函数中。这种错误的情况是插件的点数系统无法连接到数据库。ScoreboardManager $ 1.run()(ScoreboardManager类中的一个匿名(如无指定名称)类)调用此函数,这将成为计分板(scoreboard)更新的原因。
栈堆跟踪的后半部分是来自调用代码的服务器插件:
- [11:56:54] [Server thread / WARN]:at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftTask.run(CraftTask.java:71)+ {1 |. T: R2 {2 p
- [11:56:54] [Server thread / WARN]:at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350)
- [11:56:54] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java :641)( M w# J# ]9 T* C: t( b
- [11:56:54] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289)$ Z9 o1 }( O& v8 ^! K# H5 k
- [11:56:54] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584)
- [11:56:54] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java: 490)# \0 h% E0 O! A( u% A
- [11:56:54] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628)
解析YAML时的栈堆跟踪* v, w. S# K9 C: i \' a- Y
( l( e* M- V8 Y, @% Y" J. \5 W
2 k- P" `7 w, G c% [; l& {& `2 e
人们经常会感到困惑,认为这是插件的问题,但它通常不是。这是一个可以轻易纠正的问题。这是来自PermissionsEx的栈堆跟踪示例,是由于更改前缀时的语法错误导致的:
- ru.tehkode.permissions.exceptions.PermissionBackendException: Error loading permissions file!
- at ru.tehkode.permissions.backends.file.FileBackend.reload(FileBackend.java:331) ~[PermissionsEx.jar:?]
- at ru.tehkode.permissions.backends.file.FileBackend.<init>(FileBackend.java:119) ~[PermissionsEx.jar:?]( |* P/ `3 K& j* r3 }- ~, y
- at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.7.0_55]
- at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[?:1.7.0_55]
- at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.7.0_55]
- at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[?:1.7.0_55]: _. ]' p" J: }; S7 Y8 |
- at ru.tehkode.permissions.backends.PermissionBackend.getBackend(PermissionBackend.java:372) ~[PermissionsEx.jar:?]
- at ru.tehkode.permissions.backends.PermissionBackend.getBackend(PermissionBackend.java:347) ~[PermissionsEx.jar:?]. t! {# I( y, s3 p, }
- at ru.tehkode.permissions.PermissionManager.createBackend(PermissionManager.java:713) ~[PermissionsEx.jar:?]2 |; ^. H1 v# P: o9 |3 F
- at ru.tehkode.permissions.PermissionManager.setBackend(PermissionManager.java:695) ~[PermissionsEx.jar:?]
- at ru.tehkode.permissions.PermissionManager.initBackend(PermissionManager.java:772) ~[PermissionsEx.jar:?]
- at ru.tehkode.permissions.PermissionManager.<init>(PermissionManager.java:74) ~[PermissionsEx.jar:?]. b5 u# F8 J/ T' [ t; J$ y, b
- at ru.tehkode.permissions.bukkit.PermissionsEx.onEnable(PermissionsEx.java:158) [PermissionsEx.jar:?]6 Q Y7 X/ F$ Q7 F5 d8 J, g$ [
- at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:316) [spigot.jar:git-Spigot-1604]9 S) e) R5 g$ c' n6 d# e% i8 o
- at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:329) [spigot.jar:git-Spigot-1604]
- at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot.jar:git-Spigot-1604]5 o$ u( Z8 \1 W0 H1 h+ z
- at org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugin(CraftServer.java:476) [spigot.jar:git-Spigot-1604]7 j: W6 ^2 a& e. ?+ P9 o, L4 I
- at org.bukkit.craftbukkit.v1_7_R4.CraftServer.enablePlugins(CraftServer.java:394) [spigot.jar:git-Spigot-1604]
- at org.bukkit.craftbukkit.v1_7_R4.CraftServer.reload(CraftServer.java:866) [spigot.jar:git-Spigot-1604]+ m/ I- T4 U: c' F# W' P& |# |6 w5 F
- at org.bukkit.Bukkit.reload(Bukkit.java:301) [spigot.jar:git-Spigot-1604]
- at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:23) [spigot.jar:git-Spigot-1604]! s- U' p9 J( S$ Q+ I
- at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:181) [spigot.jar:git-Spigot-1604]
- at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:767) [spigot.jar:git-Spigot-1604]
- at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchServerCommand(CraftServer.java:753) [spigot.jar:git-Spigot-1604]/ y' D7 v1 l$ y, R4 f& z1 z
- at net.minecraft.server.v1_7_R4.DedicatedServer.aB(DedicatedServer.java:326) [spigot.jar:git-Spigot-1604]
- at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:290) [spigot.jar:git-Spigot-1604]
- at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [spigot.jar:git-Spigot-1604]2 U7 X+ X' C- k. Z: t: W2 L
- at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [spigot.jar:git-Spigot-1604]
- at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [spigot.jar:git-Spigot-1604]# O. J1 ~+ o, t
- Caused by: org.bukkit.configuration.InvalidConfigurationException: while parsing a block mapping
- in 'string', line 10, column 7:; M9 p$ [7 ^2 A+ M+ {, D2 ^/ u
- suffix: '&f'
- ^
- expected <block end>, but found Scalar$ A) D9 }, b% Y4 g. [, F7 x. d
- in 'string', line 12, column 17:% A3 ?; V @( v1 Q
- default: 'false'
- ^- U; f& T' A3 i" J3 J
- at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:57) ~[spigot.jar:git-Spigot-1604]3 h% `0 j: p/ c J& I- \; a( [/ m m& P7 X
- at ru.tehkode.permissions.backends.file.FileConfig.loadFromString(FileConfig.java:62) ~[PermissionsEx.jar:?]
- at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:226) ~[spigot.jar:git-Spigot-1604]
- at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:169) ~[spigot.jar:git-Spigot-1604]
- at ru.tehkode.permissions.backends.file.FileConfig.load(FileConfig.java:32) ~[PermissionsEx.jar:?]. H4 A2 q4 s; Y" d- o
- at ru.tehkode.permissions.backends.file.FileBackend.reload(FileBackend.java:319) ~[PermissionsEx.jar:?]
- ... 28 more M, {! K. w, \. u# V5 R6 l
- Caused by: org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping; expected <block end>, but found Scalar; in 'string', line 12, column 17:# m$ S9 O8 B4 z6 T m* e( o
- default: 'false'1 ?. w2 f. h! P
- ^ z1 p. w# u7 X3 M7 U
- at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:570) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) ~[spigot.jar:git-Spigot-1604]. ?2 }+ f3 m5 S4 j; L) I
- at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:143) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:230) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:159) ~[spigot.jar:git-Spigot-1604]; T8 b0 ?' D M9 Z6 _- q
- at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:237) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:159) ~[spigot.jar:git-Spigot-1604]& E4 x* r9 e% V) ~0 @3 n: @) B
- at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:237) ~[spigot.jar:git-Spigot-1604]) |+ L! f# j8 _: Z) f5 u* h, M
- at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:159) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:237) ~[spigot.jar:git-Spigot-1604]* k9 R8 v% N& e2 k, r
- at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:159) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:122) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:105) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:120) ~[spigot.jar:git-Spigot-1604]- k b1 d8 p Q8 B, h( \6 C
- at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:481) ~[spigot.jar:git-Spigot-1604]0 P5 X8 a5 y2 W" L" D7 Q
- at org.yaml.snakeyaml.Yaml.load(Yaml.java:400) ~[spigot.jar:git-Spigot-1604]
- at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:55) ~[spigot.jar:git-Spigot-1604]5 P+ S' F8 V* F, F4 \
- at ru.tehkode.permissions.backends.file.FileConfig.loadFromString(FileConfig.java:62) ~[PermissionsEx.jar:?]3 G4 q5 |3 O) F" i: A2 Z9 E4 p
- at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:226) ~[spigot.jar:git-Spigot-1604]
- at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:169) ~[spigot.jar:git-Spigot-1604]2 S4 D9 \% v" s6 f9 @
- at ru.tehkode.permissions.backends.file.FileConfig.load(FileConfig.java:32) ~[PermissionsEx.jar:?]
- at ru.tehkode.permissions.backends.file.FileBackend.reload(FileBackend.java:319) ~[PermissionsEx.jar:?]5 w, h' E) B& Q2 V& t1 {9 c
- ... 28 more
这是可疑的组:2 @) [+ j1 o; B; p
Helper:$ G# }* Y( Z1 \, d3 C
build: false0 z7 a( S0 D) Z( q; Q
inheritance:+ r* p) N; a' m* r R
- Member/ l# N: Q) J9 q# O6 R* w' M
- Donor
permissions:
- networkmanager.nohide
options:8 w0 d) u0 W4 f2 A; g% E
suffix: '&f'2 C6 Q2 H7 r& V2 }
prefix: '&8[&9HELPER&8]' E, ?+ [. k$ N/ m3 T. f
default: 'false'
当我们将permissions.yml文件的可疑部分粘贴到解析器工具中时,这就是我们得到的结果:
从这里您将能够识别错误并确定您是否已实时修复它。通常错误会出现在其他行上,如果找不到的话,在给出的这一行周围寻找即可。
3.从Eclipse到Intellij
# j H9 F6 h9 z [* z! a0 o
许多人一直在要求我写一个从eclipse到IntelliJ的教程,并且在spigot站内也缺少可以使用的优秀教程。
% B9 e2 E2 \% a4 f N! ?
在下面的wiki中,我将教你以下的内容:, R) n$ s# f. X
- 安装IntelliJ , b+ v5 i( t/ Z; T0 p
- 从Eclipse切换到IntelliJ
- 设置项目* z) M. \& z" V
- 构建项目资源- M# {# M; F; ]/ E. |
- 成功将项目导出为jar文本+ z7 }7 Q" K: V: c
$ P9 J8 F# i# z5 U
1)安装IntelliJ : ^6 i9 d5 o; o% g/ V
3 O6 h! [; M$ I' w+ s# P: O0 E" j
下列指南的前提条件是:假设你已经安装了JDK!/ l' g. S$ ]) o% \; m
3 E2 ^# Y$ |2 s/ S" U) U# C
Windows:
1.从他们的官方网站下载IntelliJ 。
2.运行下载的.exe文件,然后按照安装向导操作即可。
苹果电脑:
3 I! E& i; J" W7 L! c, _( l
1.从他们的官方网站下载IntelliJ。1 g9 ]8 ]9 \; h$ B( m
2.打开.DMG文件
3.将该文件拖到应用程序目录。
( i1 s! Y1 K3 C& f
Linux:2 ` d* Z3 U# V9 O1 @& J9 d
本教程略为高级,假设你有Ubuntu / CentOS。; n% {7 }& d; W0 H
注意:我只是一个centos和Ubuntu系统管理员,如果您运行的是不同的操作系统,请参阅Google。
% N/ T7 I/ }2 k1 E
[Ubuntu] & g* ]5 ^# w: G/ }! d
1)请参阅IntelliJ网站并下载tar.gz文件
; I" A5 a: R0 k7 G; L3 R, u( }" ~
2)重命名文件夹“idea.tar.gz”并将其移动到桌面1 }6 M7 D8 ~9 v) s. h
3)现在,您要在终端窗口中执行以下命令以解压tar.gz文件:2 U1 F* P& D; x" p% F3 }# X
- tar xzvf idea.tar.gz
- cd Desktop: m8 D$ z+ V4 ]- l U. K a, _4 ^' \
- cd idea
- cd bin
- /idea.sh
2)从Intellij到Eclipse
我将逐节更新这个wiki,意思是明天一节,后天再一节,等等。(作者的意思是未来更新,但最后更新时间是2015.6.19 16:52,估计已跳票)3 j7 }, d, i! z9 T q4 |
4.使用Minecraft区块修复器7 a j& U" ?) l7 j( o. U! N" s
修复世界中区块、生物以及各种疑难杂症' W6 W$ @4 Z i; E, l
背景
有时,Minecraft服务器可能会有导致区块损坏或用户使用太多实体过载区块的问题。Fenixin的Minecraft Region Fixer是帮助你解决这些问题的最佳工具。+ d8 |( P, p) u9 m* K% e
获取工具
通过使用git的这些命令中的任何一个来在GitHub上复制Fenixin的库
- git clone [email protected]:Fenixin / Minecraft-Region-Fixer
- git clone https://github.com/Fenixin/Minecraft-Region-Fixer.git+ f( K! C4 c4 |1 ~! U
5 F$ f. x4 p9 J7 s0 v* f. U) x
如果你不打算使用Python,你可以跳过这一步,并使用下面的可执行文件。
7 n3 ~& w- x) o( v1 `; a
运行该工具* Y) Z) W0 [0 m/ W- }
有两种方式来运行它,首选的方式包含原始python脚本,但也有可执行的windows文件这一选项。
使用python(目前不支持Python 2.7.x,3.x的使用),您只需要转到复制或提取的工具的位置并输入下列指令:
- python region-fixer.py <您的参数(见下文)>/ V& \) R' B3 T$ n! F. v4 Y6 m. m
- region-fixer.exe <您的参数(见下文)>
2021.12 数据,可能有更多内容
1.复制,构建和编译Spigot源代码. N* G, F6 |/ M3 _( f6 y, @
获得Spigot的源码以成功进行开发工作" F" G+ l" ]: F$ f& \8 S: |
内容
前提条件
获取源代码; K* s( k" ?) ^+ j2 J3 b& }
构建spigot
创建一个用于提交或本地使用的补丁文件
3 a) I1 b! l0 L2 Q/ Y
前提条件(顶部)
拥有基础Git知识
一个基于Unix的系统或一个bash解释器(比如Cygwin,Git Bash等)
Maven 3.0.5与路径设置
: F- Q8 y' [: ]: I' Q1 v; _7 T
获取源代码(顶部)" x0 ]& ^. u) I& V) a( F
首先,从复制Spigot源码开始。如果你想创建一个分支,你需要在JIRA上创建一个账户。填写SpigotMC CLA并等待24小时以激活您的Stash账户。请确保您的用户名和电子邮件地址相符。一旦您的账户被激活,请使用您的JIRA凭证登录到Stash。然后,您可以创建分支,推送您的代码更改,然后将其提交以供审阅。
* D" v2 Y( C; b! [
* b% W8 i1 B% Z# ^) q
接下来,使用“git checkout <branch>”切换到你希望构建的任何分支。(主体,快照,测试分支等)- L. \3 {1 a0 D[
% k3 y% u; K% ~# e" [4 a0 w
通过“git submodule update --init”来启动Bukkit下游系统和CraftBukkit构建的更新。; n6 u. ^+ E& o
下载完成后,您就可以通过执行源文件夹根目录中的“./applyPatches.sh”文件来应用Spigot的补丁。
5 P/ @' t( t) k% e1 E" L. s
: Cb: n. ?- O* ~/ Z: B
完成此操作后,您现在可以在Spigot-Server和Spigot-API下找到您可以使用的完整的Spigot源代码副本。, ?/ T+ v! l, l2 T
0 b2 u; L3 _5 r" }
构建Spigot(顶部)
一旦完成了编辑IDE或选择的文本编辑程序中的更改,请回到源代码的根目录,使用Maven清理上一次的工作区(“mvn clean install”)。
您现在可以在./Spigot/Spigot-Server/target/spigot-genericMinecraftVersion-GenericBukkitBuildVersion.jar中找到您的自定义Spigot版本
创建一个用于提交或本地使用的补丁文件(顶部)9 p6 V. C- @+ T' l& ~
进入您进行更改的Spigot(API / Server)部分的目录。1 M6 m% w& W! `! W3 Y% [( _- C+ ~
/ L6 @/ q. m& w* {
将更改后的文件放到暂存区并在本地提交。
" p! s5 ^7 y; _6 o$ G3 ~
回到根目录并执行./rebuildPatches.sh文件。
" C# j/ C5 J" X! F# A# x/ U
) U* ?7 Y1 V/ u7 _
您现在可以在根目录下的相关文件夹((Craft)Bukkit-patches)中找到您的.patch作为最后一个补丁文件(假设您没有时间使用或提交)。
) c* a! j9 m7 B) F. p6 r3 p: a
2 o5 q! F. a8 R2 m9 b3 _
2.理解栈堆跟踪8 r' J! B# R! j( N1 f9 E
堆栈跟踪本质上是由插件(或软件)给出的长的错误消息以通知用户或开发人员出错的地方。堆栈跟踪包含两个部分:发生的实际错误以及发生错误的代码的位置。这些信息可以帮助作为服务器管理员的你弄清楚出了什么问题。1 r- K, h1 c. G. i7 R; `
: R0 ]+ VN! x3 q5 ~
内容) k( P1 C( C% H$ n
插件栈堆跟踪" o: r" x; ]( {2 Y, q& g
解析YAML时的栈堆跟踪
插件堆栈追踪(顶部)$ S$ K+ {( I8 g
) |/ S9 x3 j2 W4 T" n+ Y
( d+ W. |' r0 X+ G! }+ c/ I/ `- b# G9 [
以下是插件堆栈跟踪示例:9 \+ Y6 T$ u" |o9 c
代码:
- [11:56:54] [Server thread / WARN]:java.lang.NullPointerException
- [11:56:54] [Server thread / WARN]:at net.paradoxmc.NetworkManager.Points.PointsAPI.getPoints(PointsAPI.java: 28)- C$ g( vP( h& l3 |; ~* n
- [11:56:54] [Server thread / WARN]:at net.paradoxmc.NetworkManager.GizmoManager.ScoreboardManager $ 1.run(ScoreboardManager.java:40)
- [11:56:54] [Server thread / WARN]:at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftTask.run(CraftTask.java:71)9 M& C* G0 U$ q/ K2 K4 N8 c0 N
- [11:56:54] [Server thread / WARN]:at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftScheduler.mainThreadHeartbeat( CraftScheduler.java:350)[11:56:54
- ] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:641)
- [11:56:54] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289)
- [11:56:54] [Server thread / WARN]:at net。 minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584)2 X+ i) m) W2 c
- [11:56:54] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490)
- [ 11:56:54] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628)
[11:56:54] [Server thread / WARN]:java.lang.NullPointerException u/ F- s- T5 O" w
[11:56:54] [Server thread / WARN]:at net.paradoxmc.NetworkManager.Points.PointsAPI.getPoints(PointsAPI.java: 28)6 }' t/ p+ [8 o. G
[11:56:54] [Server thread / WARN]:at net.paradoxmc.NetworkManager.GizmoManager.ScoreboardManager $ 1.run(ScoreboardManager.java:40)
[11:56:54] [Server thread / WARN]:at net.paradoxmc.NetworkManager.Points.PointsAPI.getPoints(PointsAPI.java: 28)6 }' t/ p+ [8 o. G
[11:56:54] [Server thread / WARN]:at net.paradoxmc.NetworkManager.GizmoManager.ScoreboardManager $ 1.run(ScoreboardManager.java:40)
我们可以看到,对于这个错误,实际的错误发生在PointsAPI.java的第28行一个名为getPoints()的函数中。这种错误的情况是插件的点数系统无法连接到数据库。ScoreboardManager $ 1.run()(ScoreboardManager类中的一个匿名(如无指定名称)类)调用此函数,这将成为计分板(scoreboard)更新的原因。% s1 U7 _- \/ s
栈堆跟踪的后半部分是来自调用代码的服务器插件:1 x( \" C, x2 U' k; {7 {
代码:
- [11:56:54] [Server thread / WARN]:at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftTask.run(CraftTask.java:71)
- [11:56:54] [Server thread / WARN]:at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350)
- [11:56:54] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java :641); `" ]" b$ A+ w$ R
- [11:56:54] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289)' C. \9 L. s- O9 c3 G/ y( O
- [11:56:54] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584)
- [11:56:54] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java: 490)* N; s# F" b9 \
- [11:56:54] [Server thread / WARN]:at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628)
解析YAML时的栈堆跟踪8 {8 H0 |/ ?4 e4 B/ z
0 U+ o7 o$ R/ r* X& I
/ B. q. k. b2 I- U) Q, v. v
人们经常会感到困惑,认为这是插件的问题,但它通常不是。这是一个可以轻易纠正的问题。这是来自PermissionsEx的栈堆跟踪示例,是由于更改前缀时的语法错误导致的:7 z+ l$ h2 x0 B% C) r( f( T) C: z
代码:
- ru.tehkode.permissions.exceptions.PermissionBackendException: Error loading permissions file!
- at ru.tehkode.permissions.backends.file.FileBackend.reload(FileBackend.java:331) ~[PermissionsEx.jar:?]0 A3 y$ a1 |* e; ?5 [$ u! r" T
- at ru.tehkode.permissions.backends.file.FileBackend.<init>(FileBackend.java:119) ~[PermissionsEx.jar:?]8 a7 W4 k0 T' G2 Vd
- at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.7.0_55]" Q0 Q- |# ^* m7 X9 [$ g$ D
- at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[?:1.7.0_55]
- at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.7.0_55]J5 T. k( h2 @# j3 \+ S
- at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[?:1.7.0_55]5 u* w$ i: o6 h. E
- at ru.tehkode.permissions.backends.PermissionBackend.getBackend(PermissionBackend.java:372) ~[PermissionsEx.jar:?]$ B; y: J9 P. _; X0 ^3 b
- at ru.tehkode.permissions.backends.PermissionBackend.getBackend(PermissionBackend.java:347) ~[PermissionsEx.jar:?]$ e. [h: B- pf0 XH$ R) Q
- at ru.tehkode.permissions.PermissionManager.createBackend(PermissionManager.java:713) ~[PermissionsEx.jar:?]
- at ru.tehkode.permissions.PermissionManager.setBackend(PermissionManager.java:695) ~[PermissionsEx.jar:?]- f1 O8 f7 w& E: E1 ^! A
- at ru.tehkode.permissions.PermissionManager.initBackend(PermissionManager.java:772) ~[PermissionsEx.jar:?]
- at ru.tehkode.permissions.PermissionManager.<init>(PermissionManager.java:74) ~[PermissionsEx.jar:?]% O+ a0 u0 Y/ XU- E
- at ru.tehkode.permissions.bukkit.PermissionsEx.onEnable(PermissionsEx.java:158) [PermissionsEx.jar:?]
- at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:316) [spigot.jar:git-Spigot-1604]; A% f) lk! n+ @8 T" c
- at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:329) [spigot.jar:git-Spigot-1604]* ^L9 |" ^* o* Y) J
- at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot.jar:git-Spigot-1604]
- at org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugin(CraftServer.java:476) [spigot.jar:git-Spigot-1604]pU; Y# n; L/ ^; c5 B' U4 ^4 I
- at org.bukkit.craftbukkit.v1_7_R4.CraftServer.enablePlugins(CraftServer.java:394) [spigot.jar:git-Spigot-1604]
- at org.bukkit.craftbukkit.v1_7_R4.CraftServer.reload(CraftServer.java:866) [spigot.jar:git-Spigot-1604]
- at org.bukkit.Bukkit.reload(Bukkit.java:301) [spigot.jar:git-Spigot-1604]
- at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:23) [spigot.jar:git-Spigot-1604]
- at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:181) [spigot.jar:git-Spigot-1604]3 m0 _3 E5 s8 f: c
- at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:767) [spigot.jar:git-Spigot-1604]4 J. D: ~3 b# q& W. I) k
- at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchServerCommand(CraftServer.java:753) [spigot.jar:git-Spigot-1604]' j2 N, }/ `( q7 m) D
- at net.minecraft.server.v1_7_R4.DedicatedServer.aB(DedicatedServer.java:326) [spigot.jar:git-Spigot-1604]
- at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:290) [spigot.jar:git-Spigot-1604]6 d: ^& @# W, A2 _" F
- at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [spigot.jar:git-Spigot-1604]8 V5 [! A9 [% P5 F- V, Y5 q
- at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [spigot.jar:git-Spigot-1604]
- at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [spigot.jar:git-Spigot-1604]/ Y+ U0 I. V) r9 e6 K0 w5 t
- Caused by: org.bukkit.configuration.InvalidConfigurationException: while parsing a block mapping
- in 'string', line 10, column 7:
- suffix: '&f'" q7 i" B: g, P# \5 n" v
- ^( fG1 j' P% \$ L
- expected <block end>, but found Scalar
- in 'string', line 12, column 17:
- default: 'false'
- ^
- 4 e* X9 M7 l; h
- at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:57) ~[spigot.jar:git-Spigot-1604]
- at ru.tehkode.permissions.backends.file.FileConfig.loadFromString(FileConfig.java:62) ~[PermissionsEx.jar:?]% s/ _6 ~7 C; L1 F" X4 g* s4 j4 o
- at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:226) ~[spigot.jar:git-Spigot-1604]
- at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:169) ~[spigot.jar:git-Spigot-1604]
- at ru.tehkode.permissions.backends.file.FileConfig.load(FileConfig.java:32) ~[PermissionsEx.jar:?]
- at ru.tehkode.permissions.backends.file.FileBackend.reload(FileBackend.java:319) ~[PermissionsEx.jar:?]
- ... 28 more
- Caused by: org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping; expected <block end>, but found Scalar;in 'string', line 12, column 17:
- default: 'false'C! B' B$ }: V9 N0 e
- ^1 e$ n) e" o2 G3 f3 x, g, }
- at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:570) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) ~[spigot.jar:git-Spigot-1604]5 ^* P( e' s- RQ& i4 R
- at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:143) ~[spigot.jar:git-Spigot-1604]) G5 W9 \" h! C
- at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:230) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:159) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:237) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:159) ~[spigot.jar:git-Spigot-1604]& x' P- N; }5 h% V' K' V& Y
- at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:237) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:159) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:237) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:159) ~[spigot.jar:git-Spigot-1604]7 V" B4 [1 u5 B3 l
- at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:122) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:105) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:120) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:481) ~[spigot.jar:git-Spigot-1604]
- at org.yaml.snakeyaml.Yaml.load(Yaml.java:400) ~[spigot.jar:git-Spigot-1604]
- at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:55) ~[spigot.jar:git-Spigot-1604]1 C- s; QQ0 T2 ?; @% n0 ?; u0 u
- at ru.tehkode.permissions.backends.file.FileConfig.loadFromString(FileConfig.java:62) ~[PermissionsEx.jar:?]
- at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:226) ~[spigot.jar:git-Spigot-1604]
- at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:169) ~[spigot.jar:git-Spigot-1604]1 i" ^/ y! D- `$ S" [
- at ru.tehkode.permissions.backends.file.FileConfig.load(FileConfig.java:32) ~[PermissionsEx.jar:?]
- at ru.tehkode.permissions.backends.file.FileBackend.reload(FileBackend.java:319) ~[PermissionsEx.jar:?]
- ... 28 more
这是可疑的组:" n+ q' ?& F+ k: c
Helper:
build: false
inheritance:% [9 ]+ {6 T) q+ I
- Member
- Donor! ^9 C) D) N3 V
permissions:
- networkmanager.nohide
options:( P/ J0 p4 c. T
suffix: '&f'
prefix: '&8[&9HELPER&8]8 Y$ B6 i& t\) c4 c
default: 'false'
7 B) }' V3 `) n3 Mbuild: false
inheritance:% [9 ]+ {6 T) q+ I
- Member
- Donor! ^9 C) D) N3 V
permissions:
- networkmanager.nohide
options:( P/ J0 p4 c. T
suffix: '&f'
prefix: '&8[&9HELPER&8]8 Y$ B6 i& t\) c4 c
default: 'false'
当我们将permissions.yml文件的可疑部分粘贴到解析器工具中时,这就是我们得到的结果:/ N! ]$ U6 ]* m5 R9 ^

从这里您将能够识别错误并确定您是否已实时修复它。通常错误会出现在其他行上,如果找不到的话,在给出的这一行周围寻找即可。& [# ?) I. _: g" f$ ?8 z( d
$ Y* X/ |* ~3 ?
3.从Eclipse到Intellij
9 Q, h9 E3 d. E0 Tm5 U" r) `+ F
许多人一直在要求我写一个从eclipse到IntelliJ的教程,并且在spigot站内也缺少可以使用的优秀教程。: _2 s0 n2 i( ~! p! d: t, l# H
% G6 K$ A" V2 c$ M) [% Z9 c9 y$ T
在下面的wiki中,我将教你以下的内容:
- O1 }6 m, z8 L; n2 n6 B' c: Q% p- N4 E
- 安装IntelliJ
- 从Eclipse切换到IntelliJ
- 设置项目
- 构建项目资源
- 成功将项目导出为jar文本
' T& v8 _& ]9 [" yvy6 n) w
1)安装IntelliJ
8 @. @: Xf3 ~% ^
下列指南的前提条件是:假设你已经安装了JDK!
Windows:% r% oA2 Q3 ]( F3 ?z4 o; v
( J8 y0 X. a. m) R
1.从他们的官方网站下载IntelliJ 。
2.运行下载的.exe文件,然后按照安装向导操作即可。* ^& F9 ?( \, m# Z4 W
( I, s" a, p- v
5 {$ P% ?7 I3 z$ W; k
苹果电脑:# u! G, z+ B* P# t& D0 Z
9 X, N* q* h- M
1.从他们的官方网站下载IntelliJ。5 |9 h/ H9 |5 T3 ~# }" I
2.打开.DMG文件 $ T4 X6 C1 |) c8 m1 X* P+ J4 q
3.将该文件拖到应用程序目录。
Linux:
本教程略为高级,假设你有Ubuntu / CentOS。2 s* O( G9 l8 j9 X* u
注意:我只是一个centos和Ubuntu系统管理员,如果您运行的是不同的操作系统,请参阅Google。4 k; Y1 R0 b% PB
[Ubuntu] . S' S, Y. z0 D& S' V+ B- E
1)请参阅IntelliJ网站并下载tar.gz文件4 z, G0 h8 M+ L: X( a$ ZD
2)重命名文件夹“idea.tar.gz”并将其移动到桌面
( p$ E- M9 h/ d& V1 f* {8 P: V& D. b
3)现在,您要在终端窗口中执行以下命令以解压tar.gz文件:
代码:
- tar xzvf idea.tar.gz
代码:
- cd Desktop
- cd idea
代码:
- cd bin! u! ^; V4 ]' M' o
- /idea.sh
3 O( }( V0 l5 a, h) k. u4 F
2)从Intellij到Eclipse
我将逐节更新这个wiki,意思是明天一节,后天再一节,等等。(作者的意思是未来更新,但最后更新时间是2015.6.19 16:52,估计已跳票)8 ~+ A- c( D1 z( i7 u' ?
6 j+ N% Z* T4 }: @" F9 \0 ]
4.使用Minecraft区块修复器b7 x- U, f' ?' P
修复世界中区块、生物以及各种疑难杂症7 i7 q& m3 H" ]3 \) ^3 b
* h7 S9 I8 ak: s* R
) g' H5 ?+ r) |. wa
背景
有时,Minecraft服务器可能会有导致区块损坏或用户使用太多实体过载区块的问题。Fenixin的Minecraft Region Fixer是帮助你解决这些问题的最佳工具。1 o; I4 UL: ]+ F
获取工具0 I, s1 z1 O3 L8 f0 M- `! X
通过使用git的这些命令中的任何一个来在GitHub上复制Fenixin的库0 ]' T9 K: P7 G- j: u4 j
- git clone [email protected]:Fenixin / Minecraft-Region-Fixer
- git clone https://github.com/Fenixin/Minecraft-Region-Fixer.git
0 w. s0 b/ z/ i) m
如果你不打算使用Python,你可以跳过这一步,并使用下面的可执行文件。7 t2 G% F# t4 j7 c/ u
" j7 |# D/ f! G- G$ X' V6 J* d
运行该工具
有两种方式来运行它,首选的方式包含原始python脚本,但也有可执行的windows文件这一选项。
使用python(目前不支持Python 2.7.x,3.x的使用),您只需要转到复制或提取的工具的位置并输入下列指令:
- python region-fixer.py <您的参数(见下文)>
- region-fixer.exe <您的参数(见下文)>) D2 F" q5 e# G, o