91 lines
5.1 KiB
Diff
91 lines
5.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: M2ke4U <79621885+MrHua269@users.noreply.github.com>
|
|
Date: Sun, 26 Nov 2023 17:30:32 +0800
|
|
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 8f8b29f80d1573981ccffd207dd6e0941e71a352..ba4cdaf499c7ffef0c7fbdd575bdba841bcb7282 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
|
|
@@ -7,12 +7,14 @@ import java.util.HashSet;
|
|
import java.util.Optional;
|
|
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 +28,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 +51,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 - 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);
|