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.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
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
|
|
|
@ -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 );
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
Reference in a new issue