diff --git a/patches/server/0041-Fixes-out-of-bounds-HangingEntity-crash-exploit.patch b/patches/server/0041-Fixes-out-of-bounds-HangingEntity-crash-exploit.patch new file mode 100644 index 0000000..cc0a294 --- /dev/null +++ b/patches/server/0041-Fixes-out-of-bounds-HangingEntity-crash-exploit.patch @@ -0,0 +1,24 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Telesphoreo +Date: Mon, 22 Aug 2022 21:33:37 -0500 +Subject: [PATCH] Fixes out of bounds HangingEntity crash exploit + + +diff --git a/src/main/java/net/minecraft/world/entity/decoration/HangingEntity.java b/src/main/java/net/minecraft/world/entity/decoration/HangingEntity.java +index 334a47b5e0d205c57dfcbb17168cbd3f21d15606..0227f4ed153d229747722ab709932741e0998dc1 100644 +--- a/src/main/java/net/minecraft/world/entity/decoration/HangingEntity.java ++++ b/src/main/java/net/minecraft/world/entity/decoration/HangingEntity.java +@@ -270,6 +270,13 @@ public abstract class HangingEntity extends Entity { + public void readAdditionalSaveData(CompoundTag nbt) { + BlockPos blockposition = new BlockPos(nbt.getInt("TileX"), nbt.getInt("TileY"), nbt.getInt("TileZ")); + ++ // Scissors start - Fixes exploit where bad TileX, TileY, and TileZ coordinates can crash servers ++ if (level.isLoadedAndInBounds(blockposition)) ++ { ++ this.pos = blockposition; ++ } ++ // Scissors end ++ + if (!blockposition.closerThan(this.blockPosition(), 16.0D)) { + HangingEntity.LOGGER.error("Hanging entity at invalid position: {}", blockposition); + } else {