Fix kick event leave message not being sent

This commit is contained in:
Jake Potrebic
2021-07-07 16:19:41 -07:00
parent 485db97ad6
commit 818a84cfbe
4 changed files with 209 additions and 179 deletions

View File

@@ -381,13 +381,18 @@
if (advancementdataplayer != null) {
advancementdataplayer.save();
@@ -334,95 +509,202 @@
@@ -334,95 +509,207 @@
}
- public void remove(ServerPlayer player) {
- ServerLevel worldserver = player.serverLevel();
+ public net.kyori.adventure.text.Component remove(ServerPlayer entityplayer) { // CraftBukkit - return string // Paper - return Component
+ // Paper start - Fix kick event leave message not being sent
+ return this.remove(entityplayer, net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, io.papermc.paper.configuration.GlobalConfiguration.get().messages.useDisplayNameInQuitMessage ? entityplayer.getBukkitEntity().displayName() : io.papermc.paper.adventure.PaperAdventure.asAdventure(entityplayer.getDisplayName())));
+ }
+ public net.kyori.adventure.text.Component remove(ServerPlayer entityplayer, net.kyori.adventure.text.Component leaveMessage) {
+ // Paper end - Fix kick event leave message not being sent
+ ServerLevel worldserver = entityplayer.serverLevel();
- player.awardStat(Stats.LEAVE_GAME);
@@ -402,7 +407,7 @@
+ entityplayer.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.DISCONNECT); // Paper - Inventory close reason
+ }
+
+ PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(entityplayer.getBukkitEntity(), net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, io.papermc.paper.configuration.GlobalConfiguration.get().messages.useDisplayNameInQuitMessage ? entityplayer.getBukkitEntity().displayName() : io.papermc.paper.adventure.PaperAdventure.asAdventure(entityplayer.getDisplayName())), entityplayer.quitReason); // Paper - Adventure & Add API for quit reason
+ PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(entityplayer.getBukkitEntity(), leaveMessage, entityplayer.quitReason); // Paper - Adventure & Add API for quit reason
+ this.cserver.getPluginManager().callEvent(playerQuitEvent);
+ entityplayer.getBukkitEntity().disconnect(playerQuitEvent.getQuitMessage());
+
@@ -580,13 +585,13 @@
+ if (this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile)) {
+ event.disallow(PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure
+ }
+ }
}
+
+ this.cserver.getPluginManager().callEvent(event);
+ if (event.getResult() != PlayerLoginEvent.Result.ALLOWED) {
+ loginlistener.disconnect(io.papermc.paper.adventure.PaperAdventure.asVanilla(event.kickMessage())); // Paper - Adventure
+ return null;
}
+ }
+ return entity;
}
@@ -622,7 +627,7 @@
if (entityplayer1 != null) {
set.add(entityplayer1);
@@ -431,72 +713,160 @@
@@ -431,72 +718,160 @@
Iterator iterator1 = set.iterator();
while (iterator1.hasNext()) {
@@ -804,7 +809,7 @@
return entityplayer1;
}
@@ -516,15 +886,32 @@
@@ -516,15 +891,32 @@
}
public void sendPlayerPermissionLevel(ServerPlayer player) {
@@ -839,10 +844,14 @@
this.sendAllPlayerInfoIn = 0;
}
@@ -541,6 +928,25 @@
}
@@ -537,9 +929,28 @@
ServerPlayer entityplayer = (ServerPlayer) iterator.next();
entityplayer.connection.send(packet);
+ }
+
+ }
+
+ // CraftBukkit start - add a world/entity limited version
+ public void broadcastAll(Packet packet, net.minecraft.world.entity.player.Player entityhuman) {
+ for (int i = 0; i < this.players.size(); ++i) {
@@ -857,15 +866,14 @@
+ public void broadcastAll(Packet packet, Level world) {
+ for (int i = 0; i < world.players().size(); ++i) {
+ ((ServerPlayer) world.players().get(i)).connection.send(packet);
+ }
+
+ }
}
}
+ // CraftBukkit end
+
public void broadcastAll(Packet<?> packet, ResourceKey<Level> dimension) {
Iterator iterator = this.players.iterator();
@@ -554,7 +960,7 @@
@@ -554,7 +965,7 @@
}
@@ -874,7 +882,7 @@
PlayerTeam scoreboardteam = source.getTeam();
if (scoreboardteam != null) {
@@ -573,7 +979,7 @@
@@ -573,7 +984,7 @@
}
}
@@ -883,7 +891,7 @@
PlayerTeam scoreboardteam = source.getTeam();
if (scoreboardteam == null) {
@@ -619,7 +1025,7 @@
@@ -619,7 +1030,7 @@
}
public void deop(GameProfile profile) {
@@ -892,7 +900,7 @@
ServerPlayer entityplayer = this.getPlayer(profile.getId());
if (entityplayer != null) {
@@ -629,6 +1035,11 @@
@@ -629,6 +1040,11 @@
}
private void sendPlayerPermissionLevel(ServerPlayer player, int permissionLevel) {
@@ -904,7 +912,7 @@
if (player.connection != null) {
byte b0;
@@ -643,36 +1054,53 @@
@@ -643,36 +1059,53 @@
player.connection.send(new ClientboundEntityEventPacket(player, b0));
}
@@ -971,7 +979,7 @@
if (entityplayer != player && entityplayer.level().dimension() == worldKey) {
double d4 = x - entityplayer.getX();
double d5 = y - entityplayer.getY();
@@ -687,10 +1115,12 @@
@@ -687,10 +1120,12 @@
}
public void saveAll() {
@@ -984,7 +992,7 @@
}
public UserWhiteList getWhiteList() {
@@ -712,15 +1142,19 @@
@@ -712,15 +1147,19 @@
public void reloadWhiteList() {}
public void sendLevelInfo(ServerPlayer player, ServerLevel world) {
@@ -1008,7 +1016,7 @@
}
player.connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.LEVEL_CHUNKS_LOAD_START, 0.0F));
@@ -729,8 +1163,16 @@
@@ -729,8 +1168,16 @@
public void sendAllPlayerInfo(ServerPlayer player) {
player.inventoryMenu.sendAllDataToRemote();
@@ -1026,7 +1034,7 @@
}
public int getPlayerCount() {
@@ -746,6 +1188,7 @@
@@ -746,6 +1193,7 @@
}
public void setUsingWhiteList(boolean whitelistEnabled) {
@@ -1034,7 +1042,7 @@
this.doWhiteList = whitelistEnabled;
}
@@ -786,12 +1229,36 @@
@@ -786,12 +1234,36 @@
}
public void removeAll() {
@@ -1073,7 +1081,7 @@
public void broadcastSystemMessage(Component message, boolean overlay) {
this.broadcastSystemMessage(message, (entityplayer) -> {
return message;
@@ -819,24 +1286,43 @@
@@ -819,24 +1291,43 @@
}
public void broadcastChatMessage(PlayerChatMessage message, ServerPlayer sender, ChatType.Bound params) {
@@ -1120,7 +1128,7 @@
}
if (flag1 && sender != null) {
@@ -845,20 +1331,27 @@
@@ -845,20 +1336,27 @@
}
@@ -1153,7 +1161,7 @@
Path path = file2.toPath();
if (FileUtil.isPathNormalized(path) && FileUtil.isPathPortable(path) && path.startsWith(file.getPath()) && file2.isFile()) {
@@ -867,7 +1360,7 @@
@@ -867,7 +1365,7 @@
}
serverstatisticmanager = new ServerStatsCounter(this.server, file1);
@@ -1162,7 +1170,7 @@
}
return serverstatisticmanager;
@@ -875,13 +1368,13 @@
@@ -875,13 +1373,13 @@
public PlayerAdvancements getPlayerAdvancements(ServerPlayer player) {
UUID uuid = player.getUUID();
@@ -1178,7 +1186,7 @@
}
advancementdataplayer.setPlayer(player);
@@ -932,15 +1425,28 @@
@@ -932,15 +1430,28 @@
}
public void reloadResources() {