-
-
Notifications
You must be signed in to change notification settings - Fork 378
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Configurable-villager-search-radius (#1478)
- Loading branch information
Showing
1 changed file
with
54 additions
and
0 deletions.
There are no files selected for viewing
54 changes: 54 additions & 0 deletions
54
patches/server/0306-Configurable-villager-search-radius.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Pantera <zeruskr@gmail.com> | ||
Date: Fri, 26 Jan 2024 15:57:24 +0900 | ||
Subject: [PATCH] Configurable-villager-search-radius | ||
|
||
|
||
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 | ||
index abcc3ef59475ac170fd10b4dd4a4f3371faf17e0..bcb39d162c3401db471688738f32e9383af45e01 100644 | ||
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java | ||
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java | ||
@@ -65,7 +65,7 @@ public class AcquirePoi { | ||
}; | ||
// Paper start - optimise POI access | ||
java.util.List<Pair<Holder<PoiType>, BlockPos>> poiposes = new java.util.ArrayList<>(); | ||
- io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), 48, 48*48, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); | ||
+ 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 | ||
Set<Pair<Holder<PoiType>, BlockPos>> set = new java.util.HashSet<>(poiposes); | ||
// Paper end - optimise POI access | ||
Path path = findPathToPois(entity, set); | ||
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 | ||
index 8db20db72cd51046213625fac46c35854c59ec5d..08f5f8509b095677a9983292320f20de543790b2 100644 | ||
--- a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java | ||
+++ b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java | ||
@@ -56,7 +56,7 @@ public class NearestBedSensor extends Sensor<Mob> { | ||
// Paper start - optimise POI access | ||
java.util.List<Pair<Holder<PoiType>, BlockPos>> poiposes = new java.util.ArrayList<>(); | ||
// don't ask me why it's unbounded. ask mojang. | ||
- io.papermc.paper.util.PoiAccess.findAnyPoiPositions(poiManager, type -> type.is(PoiTypes.HOME), predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); | ||
+ 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 | ||
Path path = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes)); | ||
// Paper end - optimise POI access | ||
if (path != null && path.canReach()) { | ||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java | ||
index a78173ac1a8a71048bd6dbad84c0163e51cd150f..578cb0964fc970dd20170266604137c1ea80d8b0 100644 | ||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java | ||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java | ||
@@ -2900,6 +2900,8 @@ public class PurpurWorldConfig { | ||
public boolean villagerDisplayTradeItem = true; | ||
public int villagerSpawnIronGolemRadius = 0; | ||
public int villagerSpawnIronGolemLimit = 0; | ||
+ public int villagerAcquirePoiSearchRadius = 48; | ||
+ public int villagerNearestBedSensorSearchRadius = 48; | ||
private void villagerSettings() { | ||
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); | ||
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); | ||
@@ -2936,6 +2938,8 @@ public class PurpurWorldConfig { | ||
villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); | ||
villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); | ||
villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); | ||
+ villagerAcquirePoiSearchRadius = getInt("mobs.villager.search-radius.acquire-poi", villagerAcquirePoiSearchRadius); | ||
+ villagerNearestBedSensorSearchRadius = getInt("mobs.villager.search-radius.nearest-bed-sensor", villagerNearestBedSensorSearchRadius); | ||
} | ||
|
||
public boolean vindicatorRidable = false; |