11/* i18n-ignore */
22
33import { Player , world } from '@minecraft/server'
4- import { ActionForm , BUTTON , Leaderboard , ModalForm } from 'lib'
4+ import { ActionForm } from 'lib/form/action'
5+ import { ModalForm } from 'lib/form/modal'
6+ import { BUTTON } from 'lib/form/utils'
7+ import { Leaderboard , LeaderboardInfo } from 'lib/rpg/leaderboard'
58import { Vec } from 'lib/vector'
69
710new Command ( 'leaderboard' )
@@ -30,11 +33,7 @@ function info(lb: Leaderboard) {
3033 return lb . info . displayName + '\n' + Vec . string ( Vec . floor ( lb . info . location ) )
3134}
3235
33- function editLeaderboard (
34- player : Player ,
35- lb ?: Leaderboard ,
36- data : Partial < import ( 'lib' ) . LeaderboardInfo > = lb ?. info ?? { } ,
37- ) {
36+ function editLeaderboard ( player : Player , lb ?: Leaderboard , data : Partial < LeaderboardInfo > = lb ?. info ?? { } ) {
3837 const action = lb ? 'Изменить ' : 'Выбрать '
3938 function update ( ) {
4039 if ( ! lb && isRequired ( data ) ) {
@@ -108,7 +107,6 @@ function editLeaderboard(
108107 data . location = { x, y, z }
109108 }
110109 data . dimension = dimension
111- if ( lb && data . location ) lb . entity . teleport ( data . location , { dimension : world [ dimension ] } )
112110 update ( )
113111 } )
114112 } )
@@ -128,15 +126,18 @@ function editLeaderboard(
128126 } )
129127 } )
130128
131- if ( lb ) form . ask ( '§cУдалить таблицу лидеров' , '§cУдалить' , ( ) => lb && lb . remove ( ) , 'Отмена' )
129+ if ( lb ) {
130+ form . button ( 'Переместить к себе' , ( ) => {
131+ data . location = Vec . floor ( player . location ) . add ( Vec . one . multiply ( 0.5 ) )
132+ data . dimension = player . dimension . type
133+ update ( )
134+ } )
135+ form . ask ( '§cУдалить таблицу лидеров' , '§cУдалить' , ( ) => lb && lb . remove ( ) , 'Отмена' )
136+ }
132137
133138 form . show ( player )
134139}
135140
136- /**
137- * @param {Partial<import('lib').LeaderboardInfo> } data
138- * @returns {data is import('lib').LeaderboardInfo }
139- */
140- function isRequired ( data : Partial < import ( 'lib' ) . LeaderboardInfo > ) : data is import ( 'lib' ) . LeaderboardInfo {
141+ function isRequired ( data : Partial < LeaderboardInfo > ) : data is LeaderboardInfo {
141142 return ! ! data . dimension && ! ! data . displayName && ! ! data . location && ! ! data . objective && ! ! data . style
142143}
0 commit comments