From 6b3a6aefae6654e9fe5e008b129cbad912e6d106 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Sat, 9 Jan 2021 14:19:17 +0100 Subject: [PATCH] Remove stale POIs --- .../0648-Remove-stale-POIs.patch | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Spigot-Server-Patches/0648-Remove-stale-POIs.patch diff --git a/Spigot-Server-Patches/0648-Remove-stale-POIs.patch b/Spigot-Server-Patches/0648-Remove-stale-POIs.patch new file mode 100644 index 000000000..bc754b217 --- /dev/null +++ b/Spigot-Server-Patches/0648-Remove-stale-POIs.patch @@ -0,0 +1,49 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Shane Freeder +Date: Sat, 9 Jan 2021 14:17:07 +0100 +Subject: [PATCH] Remove stale POIs + + +diff --git a/src/main/java/net/minecraft/server/VillagePlace.java b/src/main/java/net/minecraft/server/VillagePlace.java +index b926cebd053bef829517c9d9bbf1c609c23ca04a..6a0f07b13eef5560dfc7c7b39618c0b825533aec 100644 +--- a/src/main/java/net/minecraft/server/VillagePlace.java ++++ b/src/main/java/net/minecraft/server/VillagePlace.java +@@ -41,6 +41,7 @@ public class VillagePlace extends RegionFileSection { + ((VillagePlaceSection) this.e(SectionPosition.a(blockposition).s())).a(blockposition, villageplacetype); + } + ++ public void remove(BlockPosition blockposition) { this.a(blockposition); } // Paper - OBFHELPER + public void a(BlockPosition blockposition) { + ((VillagePlaceSection) this.e(SectionPosition.a(blockposition).s())).a(blockposition); + } +@@ -125,6 +126,7 @@ public class VillagePlace extends RegionFileSection { + return ((VillagePlaceSection) this.e(SectionPosition.a(blockposition).s())).c(blockposition); + } + ++ public final boolean test(BlockPosition blockposition, Predicate predicate) { return this.a(blockposition, predicate); } // Paper - OBFHELPER + public boolean a(BlockPosition blockposition, Predicate predicate) { + return (Boolean) this.d(SectionPosition.a(blockposition).s()).map((villageplacesection) -> { + return villageplacesection.a(blockposition, predicate); +diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java +index 5b0b6edfa790918e56399ff6c83f3feb6e5aca49..9b6dbadcbae284e089e38b21b596d78624d48ddd 100644 +--- a/src/main/java/net/minecraft/server/WorldServer.java ++++ b/src/main/java/net/minecraft/server/WorldServer.java +@@ -1942,6 +1942,10 @@ public class WorldServer extends World implements GeneratorAccessSeed { + Optional optional = VillagePlaceType.b(iblockdata); + Optional optional1 = VillagePlaceType.b(iblockdata1); + ++ // Paper start ++ if (!optional.isPresent() && this.getPoiStorage().test(blockposition, com.google.common.base.Predicates.alwaysTrue())) ++ this.getPoiStorage().remove(blockposition); ++ // Paper end + if (!Objects.equals(optional, optional1)) { + BlockPosition blockposition1 = blockposition.immutableCopy(); + +@@ -1960,6 +1964,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { + } + } + ++ public final VillagePlace getPoiStorage() { return this.y(); } // Paper - OBFHELPER + public VillagePlace y() { + return this.getChunkProvider().j(); + }