@@ -7,6 +7,23 @@ const exportNamespace = 'NavAPI';
77const tasks = new Map ( ) ;
88const { Red, Green, Aqua, White, LightPurple, Clear, MinecoinGold } = Format ;
99
10+ /**
11+ * @typedef {Object } FloatPosObject
12+ * @property {number } x
13+ * @property {number } y
14+ * @property {number } z
15+ * @property {number } dimId
16+ */
17+ /**
18+ * @typedef {Object } Warp
19+ * @property {FloatPosObject } pos
20+ * @property {string } name
21+ */
22+
23+ /**
24+ * @param {FloatPosObject } pos
25+ * @returns {string }
26+ */
1027function formatPos ( pos ) {
1128 const { x, y, z, dimId } = pos ;
1229 const dim = ( ( ) => {
@@ -32,8 +49,8 @@ function formatPos(pos) {
3249/**
3350 * 停止导航任务
3451 *
35- * @param {String } xuid 玩家Xuid
36- * @returns {Boolean } 是否成功
52+ * @param {string } xuid 玩家Xuid
53+ * @returns {boolean } 是否成功
3754 */
3855function clearNavigationTask ( xuid ) {
3956 const pl = mc . getPlayer ( xuid ) ;
@@ -53,8 +70,8 @@ function clearNavigationTask(xuid) {
5370/**
5471 * 获取玩家是否正在导航中
5572 *
56- * @param {String } xuid 玩家Xuid
57- * @returns {Boolean } 玩家导航状态 true为正在导航
73+ * @param {string } xuid 玩家Xuid
74+ * @returns {boolean } 玩家导航状态 true为正在导航
5875 */
5976function hasNavigationTask ( xuid ) {
6077 return ! ! tasks . get ( xuid ) ; // to boolean
@@ -63,24 +80,18 @@ function hasNavigationTask(xuid) {
6380/**
6481 * 新建导航任务
6582 *
66- * warp对象必须包含的项目示例
67- * {
68- * "pos": {
69- * "x": 39.43924331665039,
70- * "y": 65.62001037597656,
71- * "z": 92.11305236816406,
72- * "dimId": 0
73- * },
74- * "name": "岩浆池"
75- * }
76- *
77- * @param {String } xuid 玩家Xuid
78- * @param {Object } warp warp对象,示例见上
79- * @returns {Boolean } 是否成功
83+ * @param {string } xuid 玩家Xuid
84+ * @param {Warp } warp warp对象
85+ * @returns {boolean } 是否成功
8086 */
8187function newNavigationTask ( xuid , warp ) {
8288 const tmpPl = mc . getPlayer ( xuid ) ;
8389
90+ /**
91+ * @param {number } x
92+ * @param {number } z
93+ * @returns {string }
94+ */
8495 function formatXZPos ( x , z ) {
8596 return `${ Green } ${ x . toFixed ( ) } ${ Red } ~ ${ Aqua } ${ z . toFixed ( ) } ` ;
8697 }
@@ -99,7 +110,7 @@ function newNavigationTask(xuid, warp) {
99110 const { x : dx , y : dy , z : dz , dimId : dDim } = pos ;
100111 const distance = Math . sqrt (
101112 ( x - dx ) * ( x - dx ) + ( y - dy ) * ( y - dy ) + ( z - dz ) * ( z - dz )
102- ) . toFixed ( 2 ) ;
113+ ) ;
103114
104115 let msg =
105116 `${ Green } ${ name } ${ Clear } | ` +
@@ -121,7 +132,9 @@ function newNavigationTask(xuid, warp) {
121132 return ;
122133 }
123134
124- msg += `${ MinecoinGold } 距离 ${ Green } ${ distance } ${ MinecoinGold } 方块` ;
135+ msg +=
136+ `${ MinecoinGold } 距离 ${ Green } ${ distance . toFixed ( 2 ) } ` +
137+ `${ MinecoinGold } 方块` ;
125138 }
126139 pl . tell ( msg , 5 ) ;
127140 }
@@ -135,7 +148,7 @@ function newNavigationTask(xuid, warp) {
135148
136149mc . listen ( 'onLeft' , ( pl ) => clearNavigationTask ( pl . xuid ) ) ;
137150
138- ( ( ) => {
151+ mc . listen ( 'onServerStarted' , ( ) => {
139152 const cmd = mc . newCommand ( 'stopnav' , '停止导航' , PermType . Any ) ;
140153
141154 cmd . setCallback ( ( _ , origin , out ) => {
@@ -150,13 +163,13 @@ mc.listen('onLeft', (pl) => clearNavigationTask(pl.xuid));
150163
151164 cmd . overload ( ) ;
152165 cmd . setup ( ) ;
153- } ) ( ) ;
166+ } ) ;
154167
155- ll . export ( newNavigationTask , `${ exportNamespace } _newTask` ) ;
156- ll . export ( clearNavigationTask , `${ exportNamespace } _clearTask` ) ;
157- ll . export ( hasNavigationTask , `${ exportNamespace } _hasTask` ) ;
168+ ll . exports ( newNavigationTask , `${ exportNamespace } _newTask` ) ;
169+ ll . exports ( clearNavigationTask , `${ exportNamespace } _clearTask` ) ;
170+ ll . exports ( hasNavigationTask , `${ exportNamespace } _hasTask` ) ;
158171
159- ll . registerPlugin ( pluginName , '导航API' , [ 0 , 1 , 2 ] , {
172+ ll . registerPlugin ( pluginName , '导航API' , [ 0 , 1 , 3 ] , {
160173 Author : 'student_2333' ,
161174 License : 'Apache-2.0' ,
162175} ) ;
0 commit comments