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/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java index 0f0a3b3776c607217a15c5f61d60f6a98f1c7584..ac62e4e6842a474a1284ae7ac8890cc00b55aa64 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -2077,6 +2077,11 @@ public class WorldServer extends World implements GeneratorAccessSeed { }); optional1.ifPresent((villageplacetype) -> { this.getMinecraftServer().execute(() -> { + // Paper start + if (!optional.isPresent() && this.getPoiStorage().test(blockposition1, com.google.common.base.Predicates.alwaysTrue())) { + this.getPoiStorage().remove(blockposition1); + } + // Paper end this.y().a(blockposition1, villageplacetype); PacketDebug.a(this, blockposition1); }); @@ -2084,6 +2089,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } } + public final VillagePlace getPoiStorage() { return this.y(); } // Paper - OBFHELPER public VillagePlace y() { return this.getChunkProvider().j(); } diff --git a/src/main/java/net/minecraft/world/entity/ai/village/poi/VillagePlace.java b/src/main/java/net/minecraft/world/entity/ai/village/poi/VillagePlace.java index 04b01cb841dc4f34ded5aaa4ea7a8e6d4b470183..ce165233739c7b92a76031b949f269bd0a11149c 100644 --- a/src/main/java/net/minecraft/world/entity/ai/village/poi/VillagePlace.java +++ b/src/main/java/net/minecraft/world/entity/ai/village/poi/VillagePlace.java @@ -54,6 +54,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); } @@ -138,6 +139,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);