Fix issue #193
This commit is contained in:
parent
30cc71004d
commit
d33c9ca1e4
3 changed files with 99 additions and 25 deletions
|
@ -401,6 +401,8 @@ Walter Higgins
|
|||
* [utils.foreach() function](#utilsforeach-function)
|
||||
* [utils.nicely() function](#utilsnicely-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.serverAddress() function](#utilsserveraddress-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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/*global __plugin, org, exports*/
|
||||
/*global __plugin, org, exports, server*/
|
||||
'use strict';
|
||||
var File = java.io.File;
|
||||
|
||||
|
@ -473,7 +473,7 @@ exports.at = function( time24hr, callback, worlds ) {
|
|||
}
|
||||
_nicely( function() {
|
||||
_foreach( worlds, function ( world ) {
|
||||
var time = world.getTime();
|
||||
var time = getTime(world);
|
||||
var diff = timeMc - time;
|
||||
if ( diff > 0 && diff < 100 ) {
|
||||
callback();
|
||||
|
@ -481,6 +481,46 @@ exports.at = function( time24hr, callback, worlds ) {
|
|||
});
|
||||
}, 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
|
||||
|
@ -797,7 +837,16 @@ exports.worlds = __plugin.canary ? canaryWorlds : bukkitWorlds;
|
|||
/*************************************************************************
|
||||
### 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
|
||||
|
||||
|
@ -866,7 +915,13 @@ if (__plugin.canary){
|
|||
function getPlayerNames(){
|
||||
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;
|
||||
|
||||
/*************************************************************************
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
'use strict';
|
||||
/*global require, setInterval, clearInterval, __plugin, exports*/
|
||||
/*
|
||||
Experimental:
|
||||
Point at a block and issue the following ...
|
||||
/js var d = new Drone();
|
||||
/js var clock = new LCDClock(d);
|
||||
|
@ -10,10 +9,14 @@
|
|||
/js clock.stop24();
|
||||
... 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],
|
||||
world = drone.world,
|
||||
intervalId = -1;
|
||||
|
@ -62,27 +65,19 @@ exports.LCDClock = function(drone, fgColor,bgColor,border) {
|
|||
bgColor = blocks.wool.black;
|
||||
}
|
||||
if ( typeof fgColor == 'undefined' ) {
|
||||
fgColor = blocks.wool.white ; // white wool
|
||||
fgColor = blocks.glowstone ;
|
||||
}
|
||||
if ( border ) {
|
||||
drone.box(border,21,9,1);
|
||||
drone.up().right();
|
||||
}
|
||||
drone.blocktype('00:00', fgColor, bgColor, true);
|
||||
return {
|
||||
start24: function( ) {
|
||||
function tick() {
|
||||
var rolloverMins = 24*60,
|
||||
mcTime = __plugin.canary ? world.totalTime : world.time,
|
||||
timeOfDayInMins = Math.floor(((mcTime + 6000) % 24000) / 16.6667);
|
||||
timeOfDayInMins = timeOfDayInMins % rolloverMins;
|
||||
update( timeOfDayInMins );
|
||||
};
|
||||
intervalId = setInterval(tick, 800);
|
||||
},
|
||||
stop24: function() {
|
||||
clearInterval( intervalId );
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
function tick() {
|
||||
var timeOfDayInMins = utils.time24(world);
|
||||
update( timeOfDayInMins );
|
||||
}
|
||||
intervalId = setInterval(tick, 800);
|
||||
console.log('lcdclock started background task:' + intervalId);
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue