diff --git a/patches/server/0002-Return-null-when-a-show_entity-hover-event-s-UUID-is.patch b/patches/server/0002-Return-null-when-a-show_entity-hover-event-s-UUID-is.patch new file mode 100644 index 0000000..fa3c9fc --- /dev/null +++ b/patches/server/0002-Return-null-when-a-show_entity-hover-event-s-UUID-is.patch @@ -0,0 +1,42 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Video +Date: Sat, 12 Mar 2022 19:34:59 -0700 +Subject: [PATCH] Return null when a show_entity hover event's UUID isn't valid + + +diff --git a/src/main/java/net/minecraft/network/chat/HoverEvent.java b/src/main/java/net/minecraft/network/chat/HoverEvent.java +index 587db9a70f8f930412d34c4a412c19a30faa2a4e..b50cd7a39c077dcbabdfea1b9290bf5b144d4384 100644 +--- a/src/main/java/net/minecraft/network/chat/HoverEvent.java ++++ b/src/main/java/net/minecraft/network/chat/HoverEvent.java +@@ -174,7 +174,14 @@ public class HoverEvent { + } else { + JsonObject jsonObject = json.getAsJsonObject(); + EntityType entityType = Registry.ENTITY_TYPE.get(new ResourceLocation(GsonHelper.getAsString(jsonObject, "type"))); +- UUID uUID = UUID.fromString(GsonHelper.getAsString(jsonObject, "id")); ++ // Scissors start ++ UUID uUID; ++ try { ++ uUID = UUID.fromString(GsonHelper.getAsString(jsonObject, "id")); ++ } catch (Exception ex) { ++ return null; ++ } ++ // Scissors end + Component component = Component.Serializer.fromJson(jsonObject.get("name")); + return new HoverEvent.EntityTooltipInfo(entityType, uUID, component); + } +@@ -186,7 +193,14 @@ public class HoverEvent { + CompoundTag compoundTag = TagParser.parseTag(text.getString()); + Component component = Component.Serializer.fromJson(compoundTag.getString("name")); + EntityType entityType = Registry.ENTITY_TYPE.get(new ResourceLocation(compoundTag.getString("type"))); +- UUID uUID = UUID.fromString(compoundTag.getString("id")); ++ // Scissors start ++ UUID uUID; ++ try { ++ uUID = UUID.fromString(compoundTag.getString("id")); ++ } catch (Exception ex) { ++ return null; ++ } ++ // Scissors end + return new HoverEvent.EntityTooltipInfo(entityType, uUID, component); + } catch (Exception var5) { + return null; diff --git a/patches/server/0003-Fixes-invalid-LootTables-causing-problems-when-appli.patch b/patches/server/0003-Fixes-invalid-LootTables-causing-problems-when-appli.patch new file mode 100644 index 0000000..d6e793c --- /dev/null +++ b/patches/server/0003-Fixes-invalid-LootTables-causing-problems-when-appli.patch @@ -0,0 +1,46 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Telesphoreo +Date: Fri, 10 Jun 2022 22:55:01 -0500 +Subject: [PATCH] Fixes invalid LootTables causing problems when applied to + Minecart entities + + +diff --git a/src/main/java/com/destroystokyo/paper/loottable/PaperContainerEntityLootableInventory.java b/src/main/java/com/destroystokyo/paper/loottable/PaperContainerEntityLootableInventory.java +index d4a8c1bbb8fef27ac42bdf27dde495b4c649e6cb..865c61accf211d28be3c82dcf158fec9778b50c1 100644 +--- a/src/main/java/com/destroystokyo/paper/loottable/PaperContainerEntityLootableInventory.java ++++ b/src/main/java/com/destroystokyo/paper/loottable/PaperContainerEntityLootableInventory.java +@@ -17,7 +17,7 @@ public class PaperContainerEntityLootableInventory implements PaperLootableEntit + + @Override + public org.bukkit.loot.LootTable getLootTable() { +- return entity.getLootTable() != null && !entity.getLootTable().getPath().isEmpty() ? Bukkit.getLootTable(CraftNamespacedKey.fromMinecraft(entity.getLootTable())) : null; ++ return entity.getLootTable() != null && !entity.getLootTable().getPath().isEmpty() && entity.getLootTable().toString().length() < 256 ? Bukkit.getLootTable(CraftNamespacedKey.fromMinecraft(entity.getLootTable())) : null; // Scissors - Validate length of loot tables before even trying + } + + @Override +diff --git a/src/main/java/com/destroystokyo/paper/loottable/PaperTileEntityLootableInventory.java b/src/main/java/com/destroystokyo/paper/loottable/PaperTileEntityLootableInventory.java +index 94dc68182ec5f6dc1294ad15523427836228086a..07075cea760562c901d4469a7f88271c3ffa30bb 100644 +--- a/src/main/java/com/destroystokyo/paper/loottable/PaperTileEntityLootableInventory.java ++++ b/src/main/java/com/destroystokyo/paper/loottable/PaperTileEntityLootableInventory.java +@@ -15,7 +15,7 @@ public class PaperTileEntityLootableInventory implements PaperLootableBlockInven + + @Override + public org.bukkit.loot.LootTable getLootTable() { +- return tileEntityLootable.lootTable != null && !tileEntityLootable.lootTable.getPath().isEmpty() ? Bukkit.getLootTable(CraftNamespacedKey.fromMinecraft(tileEntityLootable.lootTable)) : null; ++ return tileEntityLootable.lootTable != null && !tileEntityLootable.lootTable.getPath().isEmpty() && tileEntityLootable.lootTable.toString().length() < 256 ? Bukkit.getLootTable(CraftNamespacedKey.fromMinecraft(tileEntityLootable.lootTable)) : null; // Scissors - Validate length of loot tables before even trying + } + + @Override +diff --git a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java +index d559f93a9a09bac414dd5d58afccad42c127f09b..8ac4e76bf9acf2f99539c4f874ac5c8605573604 100644 +--- a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java ++++ b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java +@@ -45,7 +45,7 @@ public abstract class RandomizableContainerBlockEntity extends BaseContainerBloc + protected boolean tryLoadLootTable(CompoundTag nbt) { + this.lootableData.loadNbt(nbt); // Paper + if (nbt.contains("LootTable", 8)) { +- this.lootTable = new ResourceLocation(nbt.getString("LootTable")); ++ this.lootTable = ResourceLocation.tryParse(nbt.getString("LootTable")); // Scissors - Validate loot tables + try { org.bukkit.craftbukkit.util.CraftNamespacedKey.fromMinecraft(this.lootTable); } catch (IllegalArgumentException ex) { this.lootTable = null; } // Paper - validate + this.lootTableSeed = nbt.getLong("LootTableSeed"); + return false; // Paper - always load the items, table may still remain