1+ import { Player , system , world } from '@minecraft/server'
2+ import { ActionFormData , MessageFormData , ModalFormData } from '@minecraft/server-ui'
3+ import { boolTo , getFakePlayer , getScore , toBool } from './function'
4+
5+ /**@param {Player } pl*/
6+ export function anti_spam ( pl ) {
7+ let text , cps
8+ try {
9+ const setting = getFakePlayer ( 'chatsettings' )
10+ text = setting
11+ . filter ( s => s . startsWith ( 'text:' ) )
12+ . join ( '' )
13+ . split ( ':' ) [ 1 ] || 'Hey Hey Slow Down please'
14+ cps = getScore ( 'chatsettings' , 'cps' , true ) || 0
15+ } catch { }
16+
17+ const form = new ModalFormData ( )
18+ form . title ( `[§r §lServer Anti Spam§r ]` )
19+ form . slider ( `§c§l»§r§c Subscribe §f@aitji.§r\n\n§e§l» §r§fดีเลย์ของ§eแชทต่อวินาที§r` , 0 , 10 , { valueStep : 1 , defaultValue : Number ( cps ) || 0 , tooltip : 'นี่คือดีเลย์ของผู้เล่นในการส่งข้อความในแชท' } )
20+ form . textField ( `§c§l» §r§fข้อความเตือนเมื่อ§cสแปม` , `ex: Hey Hey Slow Down please` , { defaultValue : text || 'Hey Hey Slow Down please' , tooltip : 'ข้อความนี้จะถูกส่งไปยังผู้เล่นเมื่อสแปมแชท' } )
21+
22+ form . show ( pl ) . then ( ( { canceled, formValues } ) => {
23+ if ( canceled ) return
24+ const chatsettings = world . scoreboard . getObjective ( 'chatsettings' ) || world . scoreboard . addObjective ( 'chatsettings' , 'Chat Settings' )
25+
26+ chatsettings . getParticipants ( ) . forEach ( p => chatsettings . removeParticipant ( p ) )
27+ chatsettings . setScore ( 'cps' , Number ( formValues [ 0 ] ) )
28+ chatsettings . setScore ( `text:${ formValues [ 1 ] } ` , 1 )
29+ pl . sendMessage ( `§fAntiSpam is now §aSaved!§r` )
30+ } )
31+ }
32+
33+ /**@param {Player } pl*/
34+ export function rank_chat ( pl ) {
35+ let chatprefix , chatdef
36+ try {
37+ const setting = getFakePlayer ( 'rankchat' )
38+ chatprefix = setting
39+ . filter ( x => x . startsWith ( 'chatprefix⌁' ) )
40+ . join ( '' )
41+ . split ( '⌁' ) [ 1 ] || 'rank:'
42+ chatdef = setting
43+ . filter ( x => x . startsWith ( 'chatdef⌁' ) )
44+ . join ( '' )
45+ . split ( '⌁' ) [ 1 ] || '§7Player'
46+ } catch { }
47+
48+ const form = new ModalFormData ( )
49+ form . title ( `§l§8» §rRankChat §l§8«` )
50+ form . textField ( `§c§l»§r§c Subscribe §f@aitji.§r\n\n§l§a»§r §fคำนำหน้า(Prefix) ของ §aRank Chat` , `ex: "${ chatprefix } "` , { defaultValue : chatprefix } )
51+ form . textField ( `§l§e»§r§e Rank §fเริ่มต้นของผู้เล่น` , `ex: "${ chatdef } "` , { defaultValue : chatdef } )
52+ form . show ( pl ) . then ( ( { canceled, formValues } ) => {
53+ if ( canceled ) return
54+
55+ const [ valPrefix , valDef ] = formValues
56+ if ( ! valPrefix || ! valDef ) return pl . sendMessage ( `§l§7| §r§fกรุณากรอก§eข้อมูล§fให้ครบถ้วน` )
57+ const rankchat = world . scoreboard . getObjective ( 'rankchat' ) || world . scoreboard . addObjective ( 'rankchat' , 'Rank Chat' )
58+
59+ rankchat . getParticipants ( ) . forEach ( p => rankchat . removeParticipant ( p ) )
60+ rankchat . setScore ( `chatprefix⌁${ valPrefix } ` , 1 )
61+ rankchat . setScore ( `chatdef⌁${ valDef } ` , 1 )
62+ pl . sendMessage ( `§fRank Chat is now §aSaved!§r` )
63+ } )
64+ }
65+
66+ /**@param {Player } pl*/
67+ export function chat_room ( pl ) {
68+ let kingTag , allSeeAdmin , adminSeeAll
69+ try {
70+ const setting = getFakePlayer ( 'chatroomSetting' )
71+ kingTag = setting
72+ . filter ( x => x . startsWith ( 'kingTag⌁' ) )
73+ . join ( '' )
74+ . split ( '⌁' ) [ 1 ] || 'king'
75+ allSeeAdmin = toBool ( getScore ( 'chatroomSetting' , 'allSeeAdmin' , true ) ) || false
76+ adminSeeAll = toBool ( getScore ( 'chatroomSetting' , 'adminSeeAll' , true ) ) || false
77+ } catch { }
78+
79+ const form = new ModalFormData ( )
80+ form . title ( `§l§8» §rChat Room §l§8«` )
81+ form . textField ( `§c§l»§r§c Subscribe §f@aitji.§r\nChatRoom §aKingTag` , `ex: "${ kingTag } "` , { defaultValue : kingTag } )
82+ form . toggle ( `§e»§f ทุกคนเห็นข้อความของ §e${ kingTag } ` , { defaultValue : allSeeAdmin } )
83+ form . toggle ( `§e» §e${ kingTag } §fเห็นข้อความของทุกคน` , { defaultValue : adminSeeAll } )
84+ form . show ( pl ) . then ( ( { canceled, formValues } ) => {
85+ if ( canceled ) return
86+
87+ const [ king , seeAll , adminSee ] = formValues
88+ const obj = world . scoreboard . getObjective ( 'chatroomSetting' ) || world . scoreboard . addObjective ( 'chatroomSetting' , 'Chat Room Setting' )
89+
90+ obj . getParticipants ( ) . forEach ( p => obj . removeParticipant ( p ) )
91+ obj . setScore ( 'allSeeAdmin' , Number ( boolTo ( seeAll ) ) )
92+ obj . setScore ( 'adminSeeAll' , Number ( boolTo ( adminSee ) ) )
93+ obj . setScore ( `kingTag⌁${ king || 'king' } ` , 0 )
94+ pl . sendMessage ( `§fChat Room is now §aSaved!§r` )
95+ } )
96+ }
97+
98+ /**@param {Player } pl*/
99+ export function near_chat ( pl ) {
100+ let chatRang , messageBool , AdminBool , TellAdminBool
101+ try {
102+ messageBool = toBool ( getScore ( 'chatDistance' , 'messageToggle' , true ) ) || false
103+ AdminBool = toBool ( getScore ( 'chatDistance' , 'AdminToggle' , true ) ) || false
104+ chatRang = getScore ( 'chatDistance' , 'chatRang' , true ) || 15
105+ TellAdminBool = toBool ( getScore ( 'chatDistance' , 'TellAdminToggle' , true ) ) || false
106+ } catch { }
107+ chatRang = chatRang < 1 ? '15' : chatRang
108+
109+ const form = new ModalFormData ( )
110+ form . title ( `§l§8» §rNearChat§8 «` )
111+ form . textField ( `§c» §cSubscribe §f@aitji.\n§a» §fระยะห่างที่เห็นแชท` , `ex: "${ chatRang } "` , { defaultValue : String ( chatRang ) } )
112+ form . toggle ( `§e»§f แสดงข้อความเมื่อไม่มีใครอยู่ใกล้เคียง` , { defaultValue : messageBool } )
113+ form . toggle ( `§e»§f "Admin" เห็นข้อความทั้งหมด` , { defaultValue : AdminBool } )
114+ form . toggle ( `§e»§f การพิมพ์ของ "Admin" จะเห็นทั้งหมด` , { defaultValue : TellAdminBool } )
115+
116+ form . show ( pl ) . then ( ( { canceled, formValues } ) => {
117+ if ( canceled ) return
118+
119+ const [ range , msg , admin , tell ] = formValues
120+ if ( ! range || range < 1 || isNaN ( Number ( range ) ) ) return pl . sendMessage ( `§7กรุณาใส่ตัวเลขที่§cมากกว่า 0§7 ในระยะห่างที่เห็นแชท` )
121+
122+ let obj = world . scoreboard . getObjective ( 'chatDistance' ) || world . scoreboard . addObjective ( 'chatDistance' , 'Chat Distance' )
123+ obj . getParticipants ( ) . forEach ( p => obj . removeParticipant ( p ) )
124+ obj . setScore ( 'chatRang' , Number ( range ) )
125+ obj . setScore ( 'messageToggle' , Number ( boolTo ( msg ) ) )
126+ obj . setScore ( 'AdminToggle' , Number ( boolTo ( admin ) ) )
127+ obj . setScore ( 'TellAdminToggle' , Number ( boolTo ( tell ) ) )
128+ pl . sendMessage ( `§fChat Distance is now §aSaved!§r` )
129+ } )
130+ }
0 commit comments