9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-19 15:09:25 +00:00
Files
Leaf/patches/server/0070-Skip-null-banner-pattern.patch
2024-05-19 09:03:01 -04:00

112 lines
7.0 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
Date: Thu, 9 May 2024 20:30:32 -0400
Subject: [PATCH] Skip null banner pattern
Try to fix https://github.com/PaperMC/Paper/issues/10677
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 16dba0fe00150ea919deff052b5dc7a2732741c1..f838839aba8b00474c6f7c95c37a88bb3bf4a884 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -377,6 +377,7 @@ public abstract class PlayerList {
ClientboundPlayerInfoUpdatePacket packet = ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(List.of(player)); // Paper - Add Listing API for Player
final List<ServerPlayer> onlinePlayers = Lists.newArrayListWithExpectedSize(this.players.size() - 1); // Paper - Use single player info update packet on join
+ System.out.println("看380: " + this.players.size());
for (int i = 0; i < this.players.size(); ++i) {
ServerPlayer entityplayer1 = (ServerPlayer) this.players.get(i);
@@ -698,6 +699,7 @@ public abstract class PlayerList {
// CraftBukkit start
// this.broadcastAll(new ClientboundPlayerInfoRemovePacket(List.of(entityplayer.getUUID())));
ClientboundPlayerInfoRemovePacket packet = new ClientboundPlayerInfoRemovePacket(List.of(entityplayer.getUUID()));
+ System.out.println("看702: " + this.players.size());
for (int i = 0; i < this.players.size(); i++) {
ServerPlayer entityplayer2 = (ServerPlayer) this.players.get(i);
@@ -724,6 +726,7 @@ public abstract class PlayerList {
ServerPlayer entityplayer;
+ System.out.println("看729: " + this.players.size());
for (int i = 0; i < this.players.size(); ++i) {
entityplayer = (ServerPlayer) this.players.get(i);
if (entityplayer.getUUID().equals(uuid) || (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() && entityplayer.getGameProfile().getName().equalsIgnoreCase(gameprofile.getName()))) { // Paper - validate usernames
@@ -776,6 +779,7 @@ public abstract class PlayerList {
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, io.papermc.paper.adventure.PaperAdventure.asAdventure(ichatmutablecomponent)); // Paper - Adventure
} else {
// return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile) ? IChatBaseComponent.translatable("multiplayer.disconnect.server_full") : null;
+ System.out.println("看782: " + this.players.size());
if (this.players.size() >= this.maxPlayers && !(player.hasPermission("purpur.joinfullserver") || this.canBypassPlayerLimit(gameprofile))) { // Purpur
event.disallow(PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure
}
@@ -1080,6 +1084,7 @@ public abstract class PlayerList {
for (ServerPlayer targetPlayer : sendAllPlayerInfoBucket) {
// Gale end - Purpur - spread out sending all player info
var target = targetPlayer.getBukkitEntity();;
+ System.out.println("看1087: " + this.players.size());
final List<ServerPlayer> list = new java.util.ArrayList<>(this.players.size());
for (ServerPlayer player : this.players) {
if (target.canSee(player.getUUID())) {
@@ -1111,6 +1116,7 @@ public abstract class PlayerList {
// CraftBukkit start - add a world/entity limited version
public void broadcastAll(Packet packet, net.minecraft.world.entity.player.Player entityhuman) {
+ System.out.println("看1119: " + this.players.size());
for (int i = 0; i < this.players.size(); ++i) {
ServerPlayer entityplayer = this.players.get(i);
if (entityhuman != null && !entityplayer.getBukkitEntity().canSee(entityhuman.getBukkitEntity())) {
@@ -1121,6 +1127,7 @@ public abstract class PlayerList {
}
public void broadcastAll(Packet packet, Level world) {
+ System.out.println("看1130: " + this.players.size());
for (int i = 0; i < world.players().size(); ++i) {
((ServerPlayer) world.players().get(i)).connection.send(packet);
}
@@ -1180,6 +1187,7 @@ public abstract class PlayerList {
if (scoreboardteam == null) {
this.broadcastSystemMessage(message, false);
} else {
+ System.out.println("看1190: " + this.players.size());
for (int i = 0; i < this.players.size(); ++i) {
ServerPlayer entityplayer = (ServerPlayer) this.players.get(i);
@@ -1192,6 +1200,7 @@ public abstract class PlayerList {
}
public String[] getPlayerNamesArray() {
+ System.out.println("看1203: " + this.players.size());
String[] astring = new String[this.players.size()];
for (int i = 0; i < this.players.size(); ++i) {
@@ -1307,6 +1316,7 @@ public abstract class PlayerList {
}
public void broadcast(@Nullable net.minecraft.world.entity.player.Player player, double x, double y, double z, double distance, ResourceKey<Level> worldKey, Packet<?> packet) {
+ System.out.println("看1319: " + this.players.size());
for (int i = 0; i < this.players.size(); ++i) {
ServerPlayer entityplayer = (ServerPlayer) this.players.get(i);
@@ -1338,6 +1348,7 @@ public abstract class PlayerList {
io.papermc.paper.util.MCUtil.ensureMain("Save Players" , () -> { // Paper - Ensure main
int numSaved = 0;
long now = MinecraftServer.currentTick;
+ System.out.println("看1351: " + this.players.size());
for (int i = 0; i < this.players.size(); ++i) {
ServerPlayer entityplayer = this.players.get(i);
if (interval == -1 || now - entityplayer.lastSave >= interval) {
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java
index 6a3b0c7f0cc3ffb17a231383ad103fa792d7b7ba..3286a2a485dab1fb35910ffa350b1d85fde3ad80 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java
@@ -79,6 +79,7 @@ public class CraftMetaBanner extends CraftMetaItem implements BannerMeta {
List<BannerPatternLayers.Layer> patterns = entityTag.layers();
for (int i = 0; i < Math.min(patterns.size(), 20); i++) {
BannerPatternLayers.Layer p = patterns.get(i);
+ if (p.pattern() == null || p.pattern().value() == null) continue; // Leaf - Skip null banner pattern
DyeColor color = DyeColor.getByWoolData((byte) p.color().getId());
PatternType pattern = CraftPatternType.minecraftHolderToBukkit(p.pattern());