From 6845fa771131a399e62f404d6d7987423cbd9b59 Mon Sep 17 00:00:00 2001 From: Daniel Saukel Date: Sat, 23 Feb 2019 01:10:45 +0100 Subject: [PATCH] Add flight game rule --- .../de/erethon/dungeonsxl/game/GameRuleProvider.java | 10 ++++++++++ .../java/de/erethon/dungeonsxl/player/DGamePlayer.java | 1 + .../de/erethon/dungeonsxl/player/DInstancePlayer.java | 3 ++- .../java/de/erethon/dungeonsxl/world/WorldConfig.java | 4 ++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/erethon/dungeonsxl/game/GameRuleProvider.java b/src/main/java/de/erethon/dungeonsxl/game/GameRuleProvider.java index 60a418bd..0a2c09d1 100644 --- a/src/main/java/de/erethon/dungeonsxl/game/GameRuleProvider.java +++ b/src/main/java/de/erethon/dungeonsxl/game/GameRuleProvider.java @@ -50,6 +50,7 @@ public class GameRuleProvider { /* World */ DEFAULT_VALUES.gameMode = GameMode.SURVIVAL; + DEFAULT_VALUES.fly = false; DEFAULT_VALUES.breakBlocks = false; DEFAULT_VALUES.breakPlacedBlocks = false; DEFAULT_VALUES.breakWhitelist = null; @@ -115,6 +116,7 @@ public class GameRuleProvider { /* World */ protected GameMode gameMode; + protected Boolean fly; protected Boolean breakBlocks; protected Boolean breakPlacedBlocks; protected Map> breakWhitelist; @@ -212,6 +214,10 @@ public class GameRuleProvider { return gameMode; } + public boolean canFly() { + return fly; + } + /** * @return if all blocks may be destroyed */ @@ -684,6 +690,10 @@ public class GameRuleProvider { gameMode = defaultValues.gameMode; } + if (fly == null) { + fly = defaultValues.fly; + } + if (breakBlocks == null) { breakBlocks = defaultValues.breakBlocks; } diff --git a/src/main/java/de/erethon/dungeonsxl/player/DGamePlayer.java b/src/main/java/de/erethon/dungeonsxl/player/DGamePlayer.java index bee1c52f..983ae019 100644 --- a/src/main/java/de/erethon/dungeonsxl/player/DGamePlayer.java +++ b/src/main/java/de/erethon/dungeonsxl/player/DGamePlayer.java @@ -96,6 +96,7 @@ public class DGamePlayer extends DInstancePlayer { if (!rules.getKeepInventoryOnEnter()) { clearPlayerData(); } + player.setAllowFlight(rules.canFly()); if (rules.isLobbyDisabled()) { ready(); diff --git a/src/main/java/de/erethon/dungeonsxl/player/DInstancePlayer.java b/src/main/java/de/erethon/dungeonsxl/player/DInstancePlayer.java index 4ab1bb51..3f2b8078 100644 --- a/src/main/java/de/erethon/dungeonsxl/player/DInstancePlayer.java +++ b/src/main/java/de/erethon/dungeonsxl/player/DInstancePlayer.java @@ -69,6 +69,8 @@ public abstract class DInstancePlayer extends DGlobalPlayer { /* Actions */ /** * Clear the player's inventory, potion effects etc. + *

+ * Does NOT handle flight. */ public void clearPlayerData() { player.getInventory().clear(); @@ -85,7 +87,6 @@ public abstract class DInstancePlayer extends DGlobalPlayer { player.setCollidable(true); player.setInvulnerable(false); } - player.setAllowFlight(false); } /** diff --git a/src/main/java/de/erethon/dungeonsxl/world/WorldConfig.java b/src/main/java/de/erethon/dungeonsxl/world/WorldConfig.java index 084537be..0785cf81 100644 --- a/src/main/java/de/erethon/dungeonsxl/world/WorldConfig.java +++ b/src/main/java/de/erethon/dungeonsxl/world/WorldConfig.java @@ -143,6 +143,10 @@ public class WorldConfig extends GameRuleProvider { } } + if (configFile.contains("fly")) { + fly = configFile.getBoolean("fly"); + } + if (configFile.contains("breakBlocks")) { breakBlocks = configFile.getBoolean("breakBlocks"); }