ef0e5a642d
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 9ae3f10f SPIGOT-3842: Add Player#fireworkBoost() and expand Firework API 48c0c547 PR-786: Add methods to get sounds from entities CraftBukkit Changes: 5cc9c022a SPIGOT-7152: Handle hand item changing during air interact event 4ffa1acf6 SPIGOT-7154: Players get kicked when interacting with a conversation 4daa21123 SPIGOT-3842: Add Player#fireworkBoost() and expand Firework API e5d6a9bbf PR-1100: Add methods to get sounds from entities b7e9f1c8b SPIGOT-7146: Reduce use of Material switch in ItemMeta Spigot Changes: 4c157bb4 Rebuild patches
48 Zeilen
2.9 KiB
Diff
48 Zeilen
2.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Wed, 1 Jul 2020 03:12:06 -0400
|
|
Subject: [PATCH] Clean up duplicated GameProfile Properties
|
|
|
|
We had a bug where we accidently cloned properties resulting in skulls
|
|
growing to large sizes and preventing login.
|
|
|
|
This now automatically cleans up the extra properties.
|
|
|
|
diff --git a/src/main/java/net/minecraft/nbt/NbtUtils.java b/src/main/java/net/minecraft/nbt/NbtUtils.java
|
|
index b31741a9c3363e4288636ceff9b38c598a84aa43..46681f3fa63516aa750de11cf1dee17cb3734fcd 100644
|
|
--- a/src/main/java/net/minecraft/nbt/NbtUtils.java
|
|
+++ b/src/main/java/net/minecraft/nbt/NbtUtils.java
|
|
@@ -93,7 +93,8 @@ public final class NbtUtils {
|
|
for(String string2 : compoundTag.getAllKeys()) {
|
|
ListTag listTag = compoundTag.getList(string2, 10);
|
|
|
|
- for(int i = 0; i < listTag.size(); ++i) {
|
|
+ if (listTag.size() == 0) continue; // Paper - remove duplicate properties
|
|
+ for (int i = listTag.size() - 1; i < listTag.size(); ++i) { // Paper - remove duplicate properties
|
|
CompoundTag compoundTag2 = listTag.getCompound(i);
|
|
String string3 = compoundTag2.getString("Value");
|
|
if (compoundTag2.contains("Signature", 8)) {
|
|
diff --git a/src/main/java/net/minecraft/world/item/PlayerHeadItem.java b/src/main/java/net/minecraft/world/item/PlayerHeadItem.java
|
|
index 2fb1500e9d3202b6377bf4d8e50102a98f409148..72a0c7ad03b18c3156b4f3c7240f7551583f981c 100644
|
|
--- a/src/main/java/net/minecraft/world/item/PlayerHeadItem.java
|
|
+++ b/src/main/java/net/minecraft/world/item/PlayerHeadItem.java
|
|
@@ -52,6 +52,18 @@ public class PlayerHeadItem extends StandingAndWallBlockItem {
|
|
});
|
|
// CraftBukkit start
|
|
} else {
|
|
+ // Paper start - clean up old duplicated properties
|
|
+ CompoundTag properties = nbt.getCompound("SkullOwner").getCompound("Properties");
|
|
+ for (String key : properties.getAllKeys()) {
|
|
+ net.minecraft.nbt.ListTag values = properties.getList(key, 10);
|
|
+ if (values.size() > 1) {
|
|
+ net.minecraft.nbt.Tag texture = values.get(values.size() - 1);
|
|
+ values = new net.minecraft.nbt.ListTag();
|
|
+ values.add(texture);
|
|
+ properties.put(key, values);
|
|
+ }
|
|
+ }
|
|
+ // Paper end
|
|
net.minecraft.nbt.ListTag textures = nbt.getCompound("SkullOwner").getCompound("Properties").getList("textures", 10); // Safe due to method contracts
|
|
for (int i = 0; i < textures.size(); i++) {
|
|
if (textures.get(i) instanceof CompoundTag && !((CompoundTag) textures.get(i)).contains("Signature", 8) && ((CompoundTag) textures.get(i)).getString("Value").trim().isEmpty()) {
|