diff --git a/src/lib/plugins/effects.js b/src/lib/plugins/effects.js index 93a5dd2..ad35f0a 100644 --- a/src/lib/plugins/effects.js +++ b/src/lib/plugins/effects.js @@ -7,6 +7,7 @@ module.exports.entity = function(entity, serv) { entity.sendEffect = (effectId, {amplifier=0,duration=30*20,particles=true,whitelist,blacklist=[]}={}) => { if (!whitelist) whitelist = serv.getNearby(entity); + if (entity.type == 'player' && [1].indexOf(effectId) != -1) entity.sendAbilities(); var sendTo = whitelist.filter(p => blacklist.indexOf(p) == -1); var data = { entityId: entity.id, diff --git a/src/lib/plugins/login.js b/src/lib/plugins/login.js index 8b158eb..880b58c 100644 --- a/src/lib/plugins/login.js +++ b/src/lib/plugins/login.js @@ -173,5 +173,6 @@ module.exports.player=function(player,serv) await player.waitPlayerLogin(); player.sendRestMap(); sendChunkWhenMove(); + player.sendAbilities(); }; }; \ No newline at end of file diff --git a/src/lib/plugins/updatePositions.js b/src/lib/plugins/updatePositions.js index 55fe0af..3a63266 100644 --- a/src/lib/plugins/updatePositions.js +++ b/src/lib/plugins/updatePositions.js @@ -67,6 +67,18 @@ module.exports.player=function(player) var notCancelled = await player.sendPosition(position.scaled(32).floored(), false, true); if (notCancelled) player.sendSelfPosition(); } + + player.sendAbilities = () => { + var f = (+(player.gameMode == 1)*1) + (+(player.gameMode == 1 || player.gameMode == 3)*2) + (+(player.gameMode == 1 || player.gamemode == 3)*4); + var walkingSpeed = 1.0 + ((player.effects[1] != null ? (player.effects[1].amplifier + 1) : 0) * 0.2) + var flyingSpeed = 0.2; + console.log(walkingSpeed, flyingSpeed); + player._client.write('abilities', { + flags: f, + walkingSpeed: walkingSpeed, + flyingSpeed: flyingSpeed + }); + } }; module.exports.entity=function(entity,serv){