mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Configurable villager search radius
This commit is contained in:
@@ -1,54 +0,0 @@
|
|||||||
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/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
|
|
||||||
index 0d177e828c2b338ce93c58aaef04df326e1eb0b2..273ba657926ce72a7c82861e880a82bf7f322a0b 100644
|
|
||||||
--- a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
|
|
||||||
+++ b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
|
|
||||||
@@ -86,7 +86,7 @@ public class AcquirePoi {
|
|
||||||
};
|
|
||||||
// Paper start - optimise POI access
|
|
||||||
final 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);
|
|
||||||
final Set<Pair<Holder<PoiType>, BlockPos>> set = new java.util.HashSet<>(poiposes.size());
|
|
||||||
for (final Pair<Holder<PoiType>, BlockPos> poiPose : poiposes) {
|
|
||||||
if (worldPosBiPredicate.test(world, poiPose.getSecond())) {
|
|
||||||
diff --git a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java b/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java
|
|
||||||
index 92731b6b593289e9f583c9b705b219e81fcd8e73..9104d7010bda6f9f73b478c11490ef9c53f76da2 100644
|
|
||||||
--- a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java
|
|
||||||
+++ b/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 b59e74ec85573ced20a47f0f732608d057511e2d..eb3d81c9eb9a332fd39382d28d022395d9aa4390 100644
|
|
||||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
@@ -3013,6 +3013,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);
|
|
||||||
@@ -3051,6 +3053,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;
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
--- a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
|
||||||
|
+++ b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
|
||||||
|
@@ -86,7 +_,7 @@
|
||||||
|
};
|
||||||
|
// Paper start - optimise POI access
|
||||||
|
final java.util.List<Pair<Holder<PoiType>, BlockPos>> poiposes = new java.util.ArrayList<>();
|
||||||
|
- io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, acquirablePois, predicate1, mob.blockPosition(), 48, 48*48, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes);
|
||||||
|
+ io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, acquirablePois, predicate1, mob.blockPosition(), level.purpurConfig.villagerAcquirePoiSearchRadius, level.purpurConfig.villagerAcquirePoiSearchRadius*level.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); // Purpur - Configurable villager search radius
|
||||||
|
final Set<Pair<Holder<PoiType>, BlockPos>> set = new java.util.HashSet<>(poiposes.size());
|
||||||
|
for (final Pair<Holder<PoiType>, BlockPos> poiPose : poiposes) {
|
||||||
|
if (predicate.test(level, poiPose.getSecond())) {
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
--- a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java
|
||||||
|
+++ b/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java
|
||||||
|
@@ -56,7 +_,7 @@
|
||||||
|
// 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(), level.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); // Purpur - Configurable villager search radius
|
||||||
|
Path path = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes));
|
||||||
|
// Paper end - optimise POI access
|
||||||
|
if (path != null && path.canReach()) {
|
||||||
@@ -3012,6 +3012,8 @@ public class PurpurWorldConfig {
|
|||||||
public boolean villagerDisplayTradeItem = true;
|
public boolean villagerDisplayTradeItem = true;
|
||||||
public int villagerSpawnIronGolemRadius = 0;
|
public int villagerSpawnIronGolemRadius = 0;
|
||||||
public int villagerSpawnIronGolemLimit = 0;
|
public int villagerSpawnIronGolemLimit = 0;
|
||||||
|
public int villagerAcquirePoiSearchRadius = 48;
|
||||||
|
public int villagerNearestBedSensorSearchRadius = 48;
|
||||||
private void villagerSettings() {
|
private void villagerSettings() {
|
||||||
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
|
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
|
||||||
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
|
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
|
||||||
@@ -3050,6 +3052,8 @@ public class PurpurWorldConfig {
|
|||||||
villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem);
|
villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem);
|
||||||
villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius);
|
villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius);
|
||||||
villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit);
|
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;
|
public boolean vindicatorRidable = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user