/* The scoreboard is a simple wrapper around the Bukkit Scoreboard API. It's only concerned with display of scores, not maintaining them - that's the game's job. */ module.exports = function( options ) { var temp = {}; var ccScoreboard; var DisplaySlot = org.bukkit.scoreboard.DisplaySlot; return { start: function( ) { var objective, slot, ccObj; ccScoreboard = server.scoreboardManager.getNewScoreboard(); for ( objective in options ) { ccObj = ccScoreboard.registerNewObjective( objective, 'dummy' ); for ( slot in options[ objective ] ) { ccObj.displaySlot = DisplaySlot[ slot ]; ccObj.displayName = options[ objective ][ slot ]; } } }, stop: function(){ var objective, slot; for ( objective in options ) { ccScoreboard.getObjective(objective).unregister(); for ( slot in options[ objective ] ) { ccScoreboard.clearSlot( DisplaySlot[ slot ] ); } } }, update: function( objective, player, score ) { if ( player.scoreboard && player.scoreboard != ccScoreboard ) { temp[player.name] = player.scoreboard; player.scoreboard = ccScoreboard; } ccScoreboard .getObjective( objective ) .getScore( player ) .score = score; }, restore: function( player ) { // offlineplayers don't have a scoreboard if ( player.scoreboard ) { player.scoreboard = temp[ player.name ]; } } }; };