From 3b563b64ce03b0989b94aee2b3f26cf63b14a035 Mon Sep 17 00:00:00 2001 From: Dylan Date: Sat, 30 Apr 2016 19:25:12 -0400 Subject: [PATCH] Implement difficulty * added some code to set the difficulty of the server * Add difficulty variable Added difficulty to default-settings.json changed difficulty: 0 to difficulty: serv.difficulty in -respawn.js -world.js -login.js * set server diff * added setting serv difficulty on server start in settings.js * added serv in module.exports.player=function(player, serv) in player.js and in respawn.js --- config/default-settings.json | 3 ++- src/lib/plugins/login.js | 4 ++-- src/lib/plugins/players.js | 22 ++++++++++++++++++++-- src/lib/plugins/respawn.js | 6 +++--- src/lib/plugins/settings.js | 3 ++- src/lib/plugins/world.js | 4 ++-- 6 files changed, 31 insertions(+), 11 deletions(-) diff --git a/config/default-settings.json b/config/default-settings.json index bc28c17..a707b0e 100644 --- a/config/default-settings.json +++ b/config/default-settings.json @@ -5,6 +5,7 @@ "online-mode": true, "logging": true, "gameMode": 1, + "difficulty": 1, "worldFolder":"world", "generation": { "name": "diamond_square", @@ -14,7 +15,7 @@ }, "kickTimeout": 10000, "plugins": { - + }, "modpe": false, "view-distance": 10, diff --git a/src/lib/plugins/login.js b/src/lib/plugins/login.js index 869a085..3976038 100644 --- a/src/lib/plugins/login.js +++ b/src/lib/plugins/login.js @@ -56,7 +56,7 @@ module.exports.player=function(player,serv,settings) levelType: 'default', gameMode: player.gameMode, dimension: 0, - difficulty: 0, + difficulty: serv.difficulty, reducedDebugInfo: false, maxPlayers: serv._server.maxPlayers }); @@ -183,4 +183,4 @@ module.exports.player=function(player,serv,settings) player.sendRestMap(); sendChunkWhenMove(); }; -}; \ No newline at end of file +}; diff --git a/src/lib/plugins/players.js b/src/lib/plugins/players.js index 40c5f78..f67a7a6 100644 --- a/src/lib/plugins/players.js +++ b/src/lib/plugins/players.js @@ -13,7 +13,7 @@ module.exports.server=function(serv) }; }; -module.exports.player=function(player){ +module.exports.player=function(player, serv){ player.commands.add({ base: 'gamemode', aliases: ['gm'], @@ -30,4 +30,22 @@ module.exports.player=function(player){ player.setGameMode(mode); } }); -}; \ No newline at end of file + + player.commands.add({ + base: 'difficulty', + aliases: ['diff'], + info: 'Sets the difficulty level', + usage: '/difficulty ', + op: true, + parse(str){ + let results; + if(!(results = str.match(/^([0-3])$/))) + return false; + return parseInt(str); + }, + action(diff){ + serv._writeAll('difficulty', {difficulty: diff}); + serv.difficulty = diff; + } + }); +}; diff --git a/src/lib/plugins/respawn.js b/src/lib/plugins/respawn.js index c6ce56e..b8af426 100644 --- a/src/lib/plugins/respawn.js +++ b/src/lib/plugins/respawn.js @@ -1,11 +1,11 @@ -module.exports.player=function(player) +module.exports.player=function(player, serv) { player._client.on("client_command", ({payload}) => { if(payload == 0) { player.behavior('requestRespawn', {}, () => { player._client.write("respawn",{ dimension:0, - difficulty:0, + difficulty:serv.difficulty, gamemode:player.gameMode, levelType:'default' }); @@ -16,4 +16,4 @@ module.exports.player=function(player) }); } }); -}; \ No newline at end of file +}; diff --git a/src/lib/plugins/settings.js b/src/lib/plugins/settings.js index 352662d..c985221 100644 --- a/src/lib/plugins/settings.js +++ b/src/lib/plugins/settings.js @@ -8,6 +8,7 @@ function randomInt (low, high) { module.exports.server=function(serv,settings) { serv.gameMode=settings.gameMode; + serv.difficulty=settings.difficulty; async function findSpawnZone(world,initialPoint) { @@ -42,4 +43,4 @@ module.exports.player=async function(player,serv) player._client.on('settings',({viewDistance}) => { player.view=viewDistance; }); -}; \ No newline at end of file +}; diff --git a/src/lib/plugins/world.js b/src/lib/plugins/world.js index ae74a12..98b1ef7 100644 --- a/src/lib/plugins/world.js +++ b/src/lib/plugins/world.js @@ -184,7 +184,7 @@ module.exports.player=function(player,serv,settings) { if (typeof opt.gamemode != 'undefined') player.gameMode = opt.gamemode; player._client.write("respawn",{ dimension: opt.dimension || 0, - difficulty: opt.difficulty || 0, + difficulty: opt.difficulty || serv.difficulty, gamemode: opt.gamemode || player.gameMode, levelType:'default' }); @@ -213,4 +213,4 @@ module.exports.player=function(player,serv,settings) { if(world=="overworld") player.changeWorld(serv.overworld, {dimension: 0}); } }); -}; \ No newline at end of file +};