|
| 1 | +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
| 2 | +From: Pantera <zeruskr@gmail.com> |
| 3 | +Date: Fri, 26 Jan 2024 15:57:24 +0900 |
| 4 | +Subject: [PATCH] Configurable-villager-search-radius |
| 5 | + |
| 6 | + |
| 7 | +diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java |
| 8 | +index abcc3ef59475ac170fd10b4dd4a4f3371faf17e0..bcb39d162c3401db471688738f32e9383af45e01 100644 |
| 9 | +--- a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java |
| 10 | ++++ b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java |
| 11 | +@@ -65,7 +65,7 @@ public class AcquirePoi { |
| 12 | + }; |
| 13 | + // Paper start - optimise POI access |
| 14 | + java.util.List<Pair<Holder<PoiType>, BlockPos>> poiposes = new java.util.ArrayList<>(); |
| 15 | +- io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), 48, 48*48, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); |
| 16 | ++ io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), world.purpurConfig.villagerAcquirePoiSearchRadius, world.purpurConfig.villagerAcquirePoiSearchRadius*world.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); // Purpur |
| 17 | + Set<Pair<Holder<PoiType>, BlockPos>> set = new java.util.HashSet<>(poiposes); |
| 18 | + // Paper end - optimise POI access |
| 19 | + Path path = findPathToPois(entity, set); |
| 20 | +diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java |
| 21 | +index 8db20db72cd51046213625fac46c35854c59ec5d..08f5f8509b095677a9983292320f20de543790b2 100644 |
| 22 | +--- a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java |
| 23 | ++++ b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java |
| 24 | +@@ -56,7 +56,7 @@ public class NearestBedSensor extends Sensor<Mob> { |
| 25 | + // Paper start - optimise POI access |
| 26 | + java.util.List<Pair<Holder<PoiType>, BlockPos>> poiposes = new java.util.ArrayList<>(); |
| 27 | + // don't ask me why it's unbounded. ask mojang. |
| 28 | +- io.papermc.paper.util.PoiAccess.findAnyPoiPositions(poiManager, type -> type.is(PoiTypes.HOME), predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); |
| 29 | ++ io.papermc.paper.util.PoiAccess.findAnyPoiPositions(poiManager, type -> type.is(PoiTypes.HOME), predicate, entity.blockPosition(), world.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); // Purpur |
| 30 | + Path path = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes)); |
| 31 | + // Paper end - optimise POI access |
| 32 | + if (path != null && path.canReach()) { |
| 33 | +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java |
| 34 | +index a78173ac1a8a71048bd6dbad84c0163e51cd150f..578cb0964fc970dd20170266604137c1ea80d8b0 100644 |
| 35 | +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java |
| 36 | ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java |
| 37 | +@@ -2900,6 +2900,8 @@ public class PurpurWorldConfig { |
| 38 | + public boolean villagerDisplayTradeItem = true; |
| 39 | + public int villagerSpawnIronGolemRadius = 0; |
| 40 | + public int villagerSpawnIronGolemLimit = 0; |
| 41 | ++ public int villagerAcquirePoiSearchRadius = 48; |
| 42 | ++ public int villagerNearestBedSensorSearchRadius = 48; |
| 43 | + private void villagerSettings() { |
| 44 | + villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); |
| 45 | + villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); |
| 46 | +@@ -2936,6 +2938,8 @@ public class PurpurWorldConfig { |
| 47 | + villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); |
| 48 | + villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); |
| 49 | + villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); |
| 50 | ++ villagerAcquirePoiSearchRadius = getInt("mobs.villager.search-radius.acquire-poi", villagerAcquirePoiSearchRadius); |
| 51 | ++ villagerNearestBedSensorSearchRadius = getInt("mobs.villager.search-radius.nearest-bed-sensor", villagerNearestBedSensorSearchRadius); |
| 52 | + } |
| 53 | + |
| 54 | + public boolean vindicatorRidable = false; |
0 commit comments