@@ -15,90 +15,77 @@ process.stdout.write('\x1Bc')
15
15
const utils = new Utils ( )
16
16
const config = utils . getConfig ( )
17
17
18
- let playerlist = [ ]
19
- if ( config . render . whitelist ) {
20
- playerlist = utils . getWhitelistedPlayers ( )
21
- } else {
22
- playerlist = utils . getAllPlayers ( )
23
- }
24
- logger . Default . info ( 'Players found' , playerlist . length )
18
+ void async function main ( ) {
19
+ /** @type {string[] } */
20
+ const bannedUuidList = config . render [ 'banned-players' ] ? utils . getBannedPlayers ( ) : [ ]
25
21
26
- if ( config . render . advancements ) {
27
- logger . Default . info ( 'Advancements is set: Render mode set to 1.12+' )
28
- } else {
29
- logger . Default . info ( 'Advancements not set: Render mode set to 1.11' )
30
- }
22
+ /** @type {string[] } */
23
+ const uuidList = ( ( ) => {
24
+ let list = config . render . whitelist ? utils . getWhitelistedPlayers ( ) : utils . getAllPlayers ( )
25
+ if ( ! config . render [ 'render-banned' ] && bannedUuidList . length ) {
26
+ list = list . filter ( uuid => ! bannedUuidList . some ( ban => ban === uuid ) )
27
+ }
28
+ return list
29
+ } ) ( )
30
+ logger . Default . info ( 'Players to process:' , uuidList . length )
31
31
32
- const output = path . join ( config . BASEPATH , config . render . output )
33
- logger . Default . info ( 'CREATE OUTPUT DIR' , output )
32
+ if ( config . render . advancements ) {
33
+ logger . Default . info ( 'Advancements is set: Render mode set to 1.12+' )
34
+ } else {
35
+ logger . Default . info ( 'Advancements not set: Render mode set to 1.11' )
34
36
37
+ }
38
+ const outputDir = path . join ( config . BASEPATH , config . render . output )
35
39
36
- ; ( async ( ) => {
37
- if ( config . render [ 'confirm-clear-data' ] || config . render [ 'confirm-clear-data' ] === undefined ) {
40
+ logger . Default . info ( 'CREATE OUTPUT DIR' , outputDir )
41
+ if ( config . render [ 'confirm-clear-data' ] !== false ) {
38
42
const prompt = await confirm ( 'Do you want to clean the output folder?' )
39
43
if ( prompt ) {
40
44
try {
41
- fs . emptyDirSync ( output )
45
+ fs . emptyDirSync ( outputDir )
42
46
} catch ( err ) {
43
47
throw new Error ( err )
44
48
}
45
49
}
46
50
}
47
51
48
- let banlist = [ ]
52
+ /** @type { object[] } */
49
53
const players = [ ]
50
- if ( config . render [ 'banned-players' ] ) {
51
- banlist = utils . getBannedPlayers ( )
52
- }
53
- if ( ! config . render [ 'render-banned' ] ) {
54
- playerlist = playerlist . filter ( uuid => ! banlist . some ( ban => ban === uuid ) )
55
- }
56
- playerlist = playerlist . sort ( ( ) => 0.5 - Math . random ( ) )
57
54
58
- const totalTasks = playerlist . length
59
- const progress = new ProgressBar ( totalTasks )
55
+ const progress = new ProgressBar ( uuidList . length )
60
56
progress . start ( )
61
- for ( const uuid of playerlist ) {
62
- let banned = false
63
- if ( config . render [ 'render-banned' ] ) {
64
- banned = banlist . some ( ban => ban === uuid )
65
- }
66
- let data
57
+
58
+ for ( const uuid of uuidList ) {
67
59
try {
68
- data = await utils . createPlayerData ( uuid , banned )
69
- } catch ( error ) {
60
+ const banned = config . render [ 'render-banned' ] ? bannedUuidList . some ( ban => ban === uuid ) : false
61
+ let data
62
+ try {
63
+ data = await utils . createPlayerData ( uuid , banned )
64
+ } catch ( error ) {
65
+ logger . Default . error ( `Failed to create player data for ${ uuid } ` )
66
+ continue
67
+ }
68
+ players . push ( {
69
+ uuid : data . data . uuid_short ,
70
+ playername : data . data . playername ,
71
+ names : data . data . names ,
72
+ seen : data . data . seen ,
73
+ } )
74
+ } finally {
70
75
progress . tick ( uuid )
71
- continue
72
76
}
73
- players . push ( {
74
- uuid : data . data . uuid_short ,
75
- playername : data . data . playername ,
76
- names : data . data . names ,
77
- seen : data . data . seen ,
78
- } )
79
- progress . tick ( uuid )
80
77
}
78
+
81
79
progress . stop ( )
82
80
83
81
players . sort ( ( a , b ) => b . seen - a . seen )
84
- writeJSON (
85
- path . join ( config . BASEPATH , config . render . output , 'players.json' ) ,
86
- players ,
87
- )
82
+ writeJSON ( path . join ( outputDir , 'players.json' ) , players )
88
83
89
- let worldTime
90
- try {
91
- worldTime = await utils . getWorldTime ( )
92
- } catch ( error ) {
93
- throw new Error ( error )
94
- }
95
- writeJSON (
96
- path . join ( config . BASEPATH , config . render . output , 'info.json' ) ,
97
- {
98
- worldTime,
99
- timeFormat : config . render [ 'time-format' ] ,
100
- lastUpdate : ( new Date ( ) ) . valueOf ( ) ,
101
- ...config . web ,
102
- } ,
103
- )
104
- } ) ( )
84
+ let worldTime = await utils . getWorldTime ( )
85
+ writeJSON ( path . join ( outputDir , 'info.json' ) , {
86
+ worldTime,
87
+ timeFormat : config . render [ 'time-format' ] ,
88
+ lastUpdate : Date . now ( ) ,
89
+ ...config . web ,
90
+ } )
91
+ } ( )
0 commit comments