This commit is contained in:
walterhiggins 2015-01-11 12:27:47 +00:00
parent 30cc71004d
commit d33c9ca1e4
3 changed files with 99 additions and 25 deletions

View file

@ -401,6 +401,8 @@ Walter Higgins
* [utils.foreach() function](#utilsforeach-function) * [utils.foreach() function](#utilsforeach-function)
* [utils.nicely() function](#utilsnicely-function) * [utils.nicely() function](#utilsnicely-function)
* [utils.at() function](#utilsat-function) * [utils.at() function](#utilsat-function)
* [utils.time( world ) function](#utilstime-world--function)
* [utils.time24( world ) function](#utilstime24-world--function)
* [utils.find() function](#utilsfind-function) * [utils.find() function](#utilsfind-function)
* [utils.serverAddress() function](#utilsserveraddress-function) * [utils.serverAddress() function](#utilsserveraddress-function)
* [utils.watchFile() function](#utilswatchfile-function) * [utils.watchFile() function](#utilswatchfile-function)
@ -4811,6 +4813,19 @@ utils.at( '19:00', function() {
}); });
``` ```
### utils.time( world ) function
Returns the timeofday (in minecraft ticks) for the given world. This function is necessary because
canarymod and bukkit differ in how the timeofday is calculated.
See http://minecraft.gamepedia.com/Day-night_cycle#Conversions
### utils.time24( world ) function
Returns the timeofday for the given world using 24 hour notation. (number of minutes)
See http://minecraft.gamepedia.com/Day-night_cycle#Conversions
### utils.find() function ### utils.find() function
The utils.find() function will return a list of all files starting at The utils.find() function will return a list of all files starting at
@ -4920,7 +4935,16 @@ all of Javascript's Array goodness.
### utils.players() function ### utils.players() function
This function returns a javascript array of all online players on the server. This function returns a javascript array of all online players on the
server. You can optionally provide a function which will be invoked
with each player as a parameter. For example, to give each player the
ability to shoot arrows which launch fireworks:
```javascript
require('utils').players( arrows.firework )
```
Any players with a bow will be able to launch fireworks by shooting.
### utils.playerNames() function ### utils.playerNames() function

View file

@ -1,4 +1,4 @@
/*global __plugin, org, exports*/ /*global __plugin, org, exports, server*/
'use strict'; 'use strict';
var File = java.io.File; var File = java.io.File;
@ -473,7 +473,7 @@ exports.at = function( time24hr, callback, worlds ) {
} }
_nicely( function() { _nicely( function() {
_foreach( worlds, function ( world ) { _foreach( worlds, function ( world ) {
var time = world.getTime(); var time = getTime(world);
var diff = timeMc - time; var diff = timeMc - time;
if ( diff > 0 && diff < 100 ) { if ( diff > 0 && diff < 100 ) {
callback(); callback();
@ -481,6 +481,46 @@ exports.at = function( time24hr, callback, worlds ) {
}); });
}, forever, null, 100 ); }, forever, null, 100 );
}; };
/*************************************************************************
### utils.time( world ) function
Returns the timeofday (in minecraft ticks) for the given world. This function is necessary because
canarymod and bukkit differ in how the timeofday is calculated.
See http://minecraft.gamepedia.com/Day-night_cycle#Conversions
***/
function getTime(world){
if (__plugin.bukkit){
return world.time;
}
if (__plugin.canary){
// there's a bug in canary where if you call world.setTime() the world.totalTime
// becomes huge.
if (world.totalTime < world.rawTime){
return world.totalTime;
} else {
return ((world.totalTime % world.rawTime) + world.relativeTime) % 24000;
}
}
return 0;
}
exports.time = getTime;
/*************************************************************************
### utils.time24( world ) function
Returns the timeofday for the given world using 24 hour notation. (number of minutes)
See http://minecraft.gamepedia.com/Day-night_cycle#Conversions
***/
function getTime24(world){
var mcTime = getTime(world);
var mins = Math.floor( ( (mcTime + 6000) % 24000) / 16.6667 );
return mins;
}
exports.time24 = getTime24;
/************************************************************************ /************************************************************************
### utils.find() function ### utils.find() function
@ -797,7 +837,16 @@ exports.worlds = __plugin.canary ? canaryWorlds : bukkitWorlds;
/************************************************************************* /*************************************************************************
### utils.players() function ### utils.players() function
This function returns a javascript array of all online players on the server. This function returns a javascript array of all online players on the
server. You can optionally provide a function which will be invoked
with each player as a parameter. For example, to give each player the
ability to shoot arrows which launch fireworks:
```javascript
require('utils').players( arrows.firework )
```
Any players with a bow will be able to launch fireworks by shooting.
### utils.playerNames() function ### utils.playerNames() function
@ -866,7 +915,13 @@ if (__plugin.canary){
function getPlayerNames(){ function getPlayerNames(){
return getPlayers().map(function(p){ return p.name; }); return getPlayers().map(function(p){ return p.name; });
} }
exports.players = getPlayers; exports.players = function(fn){
var result = getPlayers();
if (fn){
result.forEach(fn);
}
return result;
};
exports.playerNames = getPlayerNames; exports.playerNames = getPlayerNames;
/************************************************************************* /*************************************************************************

View file

@ -1,7 +1,6 @@
'use strict'; 'use strict';
/*global require, setInterval, clearInterval, __plugin, exports*/ /*global require, setInterval, clearInterval, __plugin, exports*/
/* /*
Experimental:
Point at a block and issue the following ... Point at a block and issue the following ...
/js var d = new Drone(); /js var d = new Drone();
/js var clock = new LCDClock(d); /js var clock = new LCDClock(d);
@ -10,10 +9,14 @@
/js clock.stop24(); /js clock.stop24();
... stops the clock... ... stops the clock...
*/ */
var blocks = require('blocks'); var blocks = require('blocks'),
utils = require('utils'),
Drone = require('drone');
exports.LCDClock = function(drone, fgColor,bgColor,border) { Drone.extend(lcdclock);
function lcdclock(fgColor, bgColor, border){
var drone = this;
var lastSecs = [0,0,0,0], var lastSecs = [0,0,0,0],
world = drone.world, world = drone.world,
intervalId = -1; intervalId = -1;
@ -62,27 +65,19 @@ exports.LCDClock = function(drone, fgColor,bgColor,border) {
bgColor = blocks.wool.black; bgColor = blocks.wool.black;
} }
if ( typeof fgColor == 'undefined' ) { if ( typeof fgColor == 'undefined' ) {
fgColor = blocks.wool.white ; // white wool fgColor = blocks.glowstone ;
} }
if ( border ) { if ( border ) {
drone.box(border,21,9,1); drone.box(border,21,9,1);
drone.up().right(); drone.up().right();
} }
drone.blocktype('00:00', fgColor, bgColor, true); drone.blocktype('00:00', fgColor, bgColor, true);
return {
start24: function( ) { function tick() {
function tick() { var timeOfDayInMins = utils.time24(world);
var rolloverMins = 24*60, update( timeOfDayInMins );
mcTime = __plugin.canary ? world.totalTime : world.time, }
timeOfDayInMins = Math.floor(((mcTime + 6000) % 24000) / 16.6667); intervalId = setInterval(tick, 800);
timeOfDayInMins = timeOfDayInMins % rolloverMins; console.log('lcdclock started background task:' + intervalId);
update( timeOfDayInMins ); }
};
intervalId = setInterval(tick, 800);
},
stop24: function() {
clearInterval( intervalId );
}
};
};