2024-08-12 04:33:43 -04:00
class SCTask {
constructor ( failTask , startFailed = false ) {
/ *
* failed : Whether to run this task
* failTask : Command to run when failed is true
* /
this . failed = startFailed
this . failTask = failTask
}
}
module . exports = {
load : ( b ) => {
b . sc _tasks = { }
b . selfcareRun = 0
b . interval . sc = setInterval ( ( ) => {
2024-08-15 05:43:42 -04:00
if ( Date . now ( ) - b . selfcareRun <= 600 ) {
2024-08-12 04:33:43 -04:00
return
}
for ( const i in b . sc _tasks ) {
if ( b . sc _tasks [ i ] . failed ) {
b . sc _tasks [ i ] . failTask ( )
}
}
b . selfcareRun = Date . now ( )
} , 40 )
b . add _sc _task = ( name , failTask , startFailed ) => {
b . sc _tasks [ name ] = new SCTask ( failTask , startFailed )
}
// Self care tasks
// Operator
b . add _sc _task ( 'op' , ( ) => {
b . chat ( '/op @s[type=player]' )
} )
b . _client . on ( 'login' , ( p ) => {
b . entityId = p . entityId
} )
b . _client . on ( 'entity_status' , ( p ) => {
if ( p . entityId === b . entityId && p . entityStatus === 24 ) {
b . sc _tasks . op . failed = 1
} else if ( p . entityId === b . entityId && p . entityStatus === 28 ) {
b . sc _tasks . op . failed = 0
}
} )
// CommandSpy
if ( ! b . host . options . isVanilla ) {
b . add _sc _task ( 'cspy' , ( ) => {
b . chat ( '/cspy on' )
} , true )
b . on ( 'plainchat' , ( msg ) => {
if ( msg === 'Successfully disabled CommandSpy' ) {
b . sc _tasks . cspy . failed = 1
} else if ( msg === 'Successfully enabled CommandSpy' ) {
b . sc _tasks . cspy . failed = 0
}
} )
}
// Gamemode
b . add _sc _task ( 'gamemode' , ( ) => {
b . chat ( '/minecraft:gamemode creative' )
} )
b . _client . on ( 'game_state_change' , ( p ) => {
if ( p . reason === 3 && p . gameMode !== 1 ) {
b . sc _tasks . gamemode . failed = 1
} else if ( p . reason === 3 && p . gameMode === 1 ) {
b . sc _tasks . gamemode . failed = 0
}
} )
// Respawning after dying
b . add _sc _task ( 'respawn' , ( ) => {
b . _client . write ( 'client_command' , { actionId : 0 } ) // Simulates respawning
b . sc _tasks . respawn . failed = 0
} )
b . on ( 'chat' , ( data ) => {
2024-08-17 07:51:26 -04:00
if ( data . json . translate === 'chat.disabled.options' || ( data . json . extra && data . json . extra [ 0 ] && data . json . extra [ 0 ] . translate === 'chat.disabled.options' ) ||
data . json . translate === 'Chat disabled in client options' || ( data . json . extra && data . json . extra [ 0 ] && data . json . extra [ 0 ] . translate === 'Chat disabled in client options' ) ) {
2024-08-12 04:33:43 -04:00
b . sc _tasks . respawn . failed = 1
}
} )
}
}