Skip to content

Commit 9069ede

Browse files
authored
Add Configurable-villager-search-radius (#1478)
1 parent d51b4a3 commit 9069ede

1 file changed

Lines changed: 54 additions & 0 deletions

File tree

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
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

Comments
 (0)