From 212be812f3e565dfd27838cb38d93c23054f7a63 Mon Sep 17 00:00:00 2001 From: Tom Date: Fri, 12 Jul 2019 07:59:35 -0500 Subject: [PATCH] PaperPR - Don't recalculate permissions for players on world change --- src/main/java/net/minecraft/server/PlayerList.java | 9 +++++---- src/main/java/net/pl3x/purpur/PurpurConfig.java | 5 +++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java index 67228329bd..39b33d9d72 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -32,13 +32,10 @@ import org.bukkit.Location; import org.bukkit.craftbukkit.util.CraftChatMessage; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerChangedWorldEvent; -import org.bukkit.event.player.PlayerPortalEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerRespawnEvent; -import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; -import org.bukkit.util.Vector; import org.spigotmc.event.player.PlayerSpawnLocationEvent; // CraftBukkit end @@ -712,7 +709,9 @@ public abstract class PlayerList { entityplayer1.playerConnection.sendPacket(new PacketPlayOutServerDifficulty(worlddata.getDifficulty(), worlddata.isDifficultyLocked())); entityplayer1.playerConnection.sendPacket(new PacketPlayOutExperience(entityplayer1.exp, entityplayer1.expTotal, entityplayer1.expLevel)); this.a(entityplayer1, worldserver); + movedToWorld = true; // Purpur this.d(entityplayer1); + movedToWorld = false; // Purpur if (!entityplayer.playerConnection.isDisconnected()) { worldserver.addPlayerRespawn(entityplayer1); this.players.add(entityplayer1); @@ -908,10 +907,12 @@ public abstract class PlayerList { entityplayer.playerConnection.sendPacket(new PacketPlayOutEntityStatus(entityplayer, b0)); } - entityplayer.getBukkitEntity().recalculatePermissions(); // CraftBukkit + if (!(movedToWorld && !net.pl3x.purpur.PurpurConfig.recalculatePermsOnWorldChange)) entityplayer.getBukkitEntity().recalculatePermissions(); // CraftBukkit // Purpur this.server.getCommandDispatcher().a(entityplayer); } + private boolean movedToWorld = false; // Purpur + // Paper start public boolean isWhitelisted(GameProfile gameprofile) { return isWhitelisted(gameprofile, null); diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java index 7699b81dad..bb5ba4f137 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -193,6 +193,11 @@ public class PurpurConfig { slimeBlocksNotPushable = getBoolean("settings.blocks.slime.not-movable-by-piston", slimeBlocksNotPushable); } + public static boolean recalculatePermsOnWorldChange = true; + private static void updatePermissionsOnWorldChange() { + recalculatePermsOnWorldChange = getBoolean("settings.recalculate-perms-on-world-change", recalculatePermsOnWorldChange); + } + public static String serverModName = "Purpur"; private static void serverModName() { serverModName = getString("settings.server-mod-name", serverModName); -- 2.24.0