Moved multiverse perms to InstancePlayer to affect editing worlds too.

This commit is contained in:
BuildTools 2022-01-05 16:31:03 -05:00
parent 5ef902b0c2
commit e0960c6708
2 changed files with 27 additions and 22 deletions

View File

@ -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.*");
}
}

View File

@ -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.*");
}
}