89 lines
5.0 KiB
Diff
89 lines
5.0 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: MrHua269 <novau233@163.com>
|
|
Date: Sat, 27 Jan 2024 12:45:40 +0000
|
|
Subject: [PATCH] Gale Reduce acquire POI for stuck entities
|
|
|
|
|
|
diff --git a/src/main/java/me/earthme/luminol/LuminolConfig.java b/src/main/java/me/earthme/luminol/LuminolConfig.java
|
|
index fcd532898e099a809969603941b90fdd415b03c3..d032786938db9725e1be72dae63a1387bcb69d79 100644
|
|
--- a/src/main/java/me/earthme/luminol/LuminolConfig.java
|
|
+++ b/src/main/java/me/earthme/luminol/LuminolConfig.java
|
|
@@ -12,14 +12,10 @@ import org.apache.logging.log4j.Logger;
|
|
import org.bukkit.Bukkit;
|
|
|
|
import java.util.*;
|
|
-import java.util.logging.Level;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
|
|
-import net.minecraft.core.registries.BuiltInRegistries;
|
|
import net.minecraft.server.MinecraftServer;
|
|
-import org.bukkit.configuration.ConfigurationSection;
|
|
-import net.minecraft.world.entity.EntityType;
|
|
|
|
public class LuminolConfig {
|
|
private static final Logger logger = LogManager.getLogger();
|
|
@@ -58,6 +54,7 @@ public class LuminolConfig {
|
|
public static int activationDistanceMod;
|
|
public static double entityWakeUpDurationRatioStandardDeviation = 0.2;
|
|
public static boolean loadChunksToActiveClimbingEntities = false;
|
|
+ public static int acquirePoiForStuckEntityInterval = 60;
|
|
|
|
|
|
public static void init() throws IOException {
|
|
@@ -171,6 +168,7 @@ public class LuminolConfig {
|
|
initDAB();
|
|
entityWakeUpDurationRatioStandardDeviation = get("optimizations.entity_wakeup_duration_ratio_standard_deviation",entityWakeUpDurationRatioStandardDeviation);
|
|
loadChunksToActiveClimbingEntities = get("optimizations.load_chunks_to_active_climbing_entities",loadChunksToActiveClimbingEntities);
|
|
+ acquirePoiForStuckEntityInterval = get("optimizations.acquire_poi_for_stuck_entity_interval", acquirePoiForStuckEntityInterval);
|
|
}
|
|
|
|
public static <T> T get(String key,T def){
|
|
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..961d3df1ca72d36ed7f0008bac346c95e07a0288 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
|
|
@@ -9,10 +9,13 @@ import java.util.Set;
|
|
import java.util.function.Predicate;
|
|
import java.util.stream.Collectors;
|
|
import javax.annotation.Nullable;
|
|
+
|
|
+import me.earthme.luminol.LuminolConfig;
|
|
import net.minecraft.core.BlockPos;
|
|
import net.minecraft.core.GlobalPos;
|
|
import net.minecraft.core.Holder;
|
|
import net.minecraft.network.protocol.game.DebugPackets;
|
|
+import net.minecraft.server.level.ServerLevel;
|
|
import net.minecraft.util.RandomSource;
|
|
import net.minecraft.world.entity.Mob;
|
|
import net.minecraft.world.entity.PathfinderMob;
|
|
@@ -26,6 +29,13 @@ import org.apache.commons.lang3.mutable.MutableLong;
|
|
public class AcquirePoi {
|
|
public static final int SCAN_RANGE = 48;
|
|
|
|
+ // Gale start - Airplane - reduce acquire POI for stuck entities
|
|
+ public static void addAdditionalTimeToMutableLongIfEntityIsStuck(MutableLong mutableLong, ServerLevel world, PathfinderMob entity) {
|
|
+ long stuckEntityAdditionalWaitTime = LuminolConfig.acquirePoiForStuckEntityInterval;
|
|
+ mutableLong.add(stuckEntityAdditionalWaitTime <= 0L ? 0L : entity.getNavigation().isStuck() ? stuckEntityAdditionalWaitTime : 0L);
|
|
+ }
|
|
+ // Gale end - Airplane - reduce acquire POI for stuck entities
|
|
+
|
|
public static BehaviorControl<PathfinderMob> create(Predicate<Holder<PoiType>> poiPredicate, MemoryModuleType<GlobalPos> poiPosModule, boolean onlyRunIfChild, Optional<Byte> entityStatus) {
|
|
return create(poiPredicate, poiPosModule, poiPosModule, onlyRunIfChild, entityStatus);
|
|
}
|
|
@@ -42,12 +52,13 @@ public class AcquirePoi {
|
|
return false;
|
|
} else if (mutableLong.getValue() == 0L) {
|
|
mutableLong.setValue(world.getGameTime() + (long)world.random.nextInt(20));
|
|
+ addAdditionalTimeToMutableLongIfEntityIsStuck(mutableLong, world, entity); // Gale - Airplane - reduce acquire POI for stuck entities
|
|
return false;
|
|
} else if (world.getGameTime() < mutableLong.getValue()) {
|
|
return false;
|
|
} else {
|
|
mutableLong.setValue(time + 20L + (long)world.getRandom().nextInt(20));
|
|
- if (entity.getNavigation().isStuck()) mutableLong.add(200); // Paper - Perf: Wait an additional 10s to check again if they're stuck
|
|
+ addAdditionalTimeToMutableLongIfEntityIsStuck(mutableLong, world, entity); // Gale - Airplane - reduce acquire POI for stuck entities
|
|
PoiManager poiManager = world.getPoiManager();
|
|
long2ObjectMap.long2ObjectEntrySet().removeIf((entry) -> {
|
|
return !entry.getValue().isStillValid(time);
|