Scissors/patches/server/0023-Reset-large-tags.patch

55 lines
2.3 KiB
Diff
Raw Normal View History

2022-07-28 03:57:50 +00:00
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2022-12-11 06:04:11 +00:00
From: Telesphoreo <me@telesphoreo.me>
Date: Sat, 10 Dec 2022 23:38:53 -0600
2022-07-28 03:57:50 +00:00
Subject: [PATCH] Reset large tags
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
2023-06-09 01:14:22 +00:00
index b367ec1feaccbd67e9e28c0d0515e163f37135fe..d1547b9ba36baec925751b9bb0498c8a8cac12f8 100644
2022-07-28 03:57:50 +00:00
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
2023-06-09 00:58:46 +00:00
@@ -21,6 +21,7 @@ import java.util.function.Predicate;
2022-07-28 03:57:50 +00:00
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.annotation.Nullable;
+import me.totalfreedom.scissors.NbtUtility;
import net.minecraft.ChatFormatting;
import net.minecraft.Util;
import net.minecraft.advancements.CriteriaTriggers;
2023-06-09 00:58:46 +00:00
@@ -253,6 +254,12 @@ public final class ItemStack {
2022-07-28 03:57:50 +00:00
// CraftBukkit - break into own method
private void load(CompoundTag nbttagcompound) {
+ // Scissors start - Reset large tags
+ if (NbtUtility.isTooLarge(nbttagcompound)) {
+ // Reset tag without destroying item
+ nbttagcompound = NbtUtility.Item.removeItemData(nbttagcompound);
+ }
+ // Scissors end
2022-12-11 06:04:11 +00:00
this.item = (Item) BuiltInRegistries.ITEM.get(new ResourceLocation(nbttagcompound.getString("id")));
2022-07-28 03:57:50 +00:00
this.count = nbttagcompound.getByte("Count");
if (nbttagcompound.contains("tag", 10)) {
2023-06-09 01:14:22 +00:00
@@ -550,7 +557,11 @@ public final class ItemStack {
2022-07-28 03:57:50 +00:00
nbt.putString("id", minecraftkey == null ? "minecraft:air" : minecraftkey.toString());
nbt.putByte("Count", (byte) this.count);
if (this.tag != null) {
- nbt.put("tag", this.tag.copy());
+ // Scissors start - Don't save large tags
+ if (!NbtUtility.isTooLarge(this.tag)) {
+ nbt.put("tag", this.tag.copy());
+ }
+ // Scissors end
}
return nbt;
2023-06-09 01:14:22 +00:00
@@ -880,6 +891,9 @@ public final class ItemStack {
2022-07-28 03:57:50 +00:00
// Paper end
public void setTag(@Nullable CompoundTag nbt) {
+ // Scissors start - Ignore large tags
+ if (NbtUtility.isTooLarge(nbt)) return;
+ // Scissors end
this.tag = nbt;
this.processEnchantOrder(this.tag); // Paper
if (this.getItem().canBeDepleted()) {