From e0960c670825f1e8d7f0e11ceaef16d33d5c8449 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Wed, 5 Jan 2022 16:31:03 -0500 Subject: [PATCH] Moved multiverse perms to InstancePlayer to affect editing worlds too. --- .../dungeonsxl/player/DGamePlayer.java | 23 +--------------- .../dungeonsxl/player/DInstancePlayer.java | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/core/src/main/java/de/erethon/dungeonsxl/player/DGamePlayer.java b/core/src/main/java/de/erethon/dungeonsxl/player/DGamePlayer.java index d30149ce..dee7aaca 100644 --- a/core/src/main/java/de/erethon/dungeonsxl/player/DGamePlayer.java +++ b/core/src/main/java/de/erethon/dungeonsxl/player/DGamePlayer.java @@ -105,9 +105,6 @@ public class DGamePlayer extends DInstancePlayer implements GamePlayer { initDGroupTag(); } - String originalWorld = player.getWorld().getName(); - addMultiversePerm(originalWorld); - Location teleport = world.getLobbyLocation(); if (teleport == null) { player.teleport(world.getWorld().getSpawnLocation()); @@ -115,8 +112,6 @@ public class DGamePlayer extends DInstancePlayer implements GamePlayer { player.teleport(teleport); } - removeMultiversePerm(originalWorld); - if (!((DGameWorld) world).hasReadySign()) { MessageUtil.sendMessage(player, DMessage.ERROR_NO_READY_SIGN.getMessage(world.getName())); } @@ -384,12 +379,8 @@ public class DGamePlayer extends DInstancePlayer implements GamePlayer { GameRuleContainer rules = getGame().getRules(); delete(); - if (player.isOnline()) { - String gameWorld = getGameWorld().getWorld().getName(); - addMultiversePerm(gameWorld); + if (player.isOnline()) reset(finished); - removeMultiversePerm(gameWorld); - } // Permission bridge if (plugin.getPermissionProvider() != null) { @@ -817,17 +808,5 @@ public class DGamePlayer extends DInstancePlayer implements GamePlayer { DistanceTrigger.triggerAllInDistance(player, (DGameWorld) getGameWorld()); } - // Add permission for by passing multiverse inventories when entering or leaving a dungeon - private void addMultiversePerm(String world){ - if (plugin.getPermissionProvider() != null) - plugin.getPermissionProvider().playerAddTransient(world, player, "mvinv.bypass.*"); - } - - // Remove permission for by passing multiverse inventories when entering or leaving a dungeon - private void removeMultiversePerm(String world){ - if (plugin.getPermissionProvider() != null) - plugin.getPermissionProvider().playerRemoveTransient(world, player, "mvinv.bypass.*"); - } - } diff --git a/core/src/main/java/de/erethon/dungeonsxl/player/DInstancePlayer.java b/core/src/main/java/de/erethon/dungeonsxl/player/DInstancePlayer.java index 0faa8c80..d66ac249 100644 --- a/core/src/main/java/de/erethon/dungeonsxl/player/DInstancePlayer.java +++ b/core/src/main/java/de/erethon/dungeonsxl/player/DInstancePlayer.java @@ -24,6 +24,8 @@ import de.erethon.dungeonsxl.api.world.InstanceWorld; import de.erethon.dungeonsxl.config.MainConfig; import de.erethon.dungeonsxl.util.AttributeUtil; import de.erethon.dungeonsxl.util.ParsingUtil; + +import org.bukkit.Location; import org.bukkit.World; import org.bukkit.attribute.Attribute; import org.bukkit.entity.Player; @@ -43,6 +45,9 @@ public abstract class DInstancePlayer extends DGlobalPlayer implements InstanceP config = plugin.getMainConfig(); + String gameWorld = world.getWorld().getName(); + this.addMultiversePerm(gameWorld); + instanceWorld = world; getData().savePlayerState(player); } @@ -136,4 +141,25 @@ public abstract class DInstancePlayer extends DGlobalPlayer implements InstanceP */ public abstract void update(); + @Override + public void reset(Location tpLoc, boolean keepInventory){ + String tpWorld = tpLoc.getWorld().getName(); + addMultiversePerm(tpWorld); + super.reset(tpLoc, keepInventory); + removeMultiversePerm(tpWorld); + removeMultiversePerm(this.getWorld().getName()); + } + + // Add permission for by passing multiverse inventories when entering or leaving a dungeon + private void addMultiversePerm(String world){ + if (plugin.getPermissionProvider() != null) + plugin.getPermissionProvider().playerAddTransient(world, player, "mvinv.bypass.*"); + } + + // Remove permission for by passing multiverse inventories when entering or leaving a dungeon + private void removeMultiversePerm(String world){ + if (plugin.getPermissionProvider() != null) + plugin.getPermissionProvider().playerRemoveTransient(world, player, "mvinv.bypass.*"); + } + }