Skip to content

Commit 42ba45b

Browse files
committed
fix: Avoid constantly requerying on failure to spawn a fishing spot, stop on any fishing spot instead of figuring out the nearest #24
1 parent 8622210 commit 42ba45b

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

common/src/main/java/net/blay09/mods/littlejoys/handler/FishingSpotHandler.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,11 @@ public static void initialize() {
5050
final var centerPos = getOriginForNextSpawn(player);
5151
final var checkRange = LittleJoysConfig.getActive().fishingSpots.minimumDistanceBetween;
5252
final var spawnRange = LittleJoysConfig.getActive().fishingSpots.spawnDistance;
53-
final var closestFishingSpot = poiManager.findClosest(it -> it.is(ModPoiTypeTags.FISHING_SPOTS),
53+
final var fishingSpotInRange = poiManager.getInRange(it -> it.is(ModPoiTypeTags.FISHING_SPOTS),
5454
centerPos,
5555
checkRange,
56-
PoiManager.Occupancy.ANY);
57-
if (closestFishingSpot.isEmpty()) {
56+
PoiManager.Occupancy.ANY).findAny();
57+
if (fishingSpotInRange.isEmpty()) {
5858
final var offsetX = random.nextInt(spawnRange + spawnRange) - spawnRange;
5959
final var offsetZ = random.nextInt(spawnRange + spawnRange) - spawnRange;
6060
final var randomOffsetPos = new BlockPos(centerPos.getX() + offsetX, centerPos.getX(), centerPos.getZ() + offsetZ);
@@ -64,10 +64,14 @@ public static void initialize() {
6464
final var totalSpots = ChunkLimitManager.get(level).getTotalFishingSpotsInChunk(aboveSurfacePos);
6565
final var maxSpots = LittleJoysConfig.getActive().fishingSpots.totalLimitPerChunk;
6666
if (maxSpots > 0 && totalSpots >= maxSpots) {
67+
// If we have exceeded the total, don't bother re-checking until 10 seconds have passed
68+
littleJoysData.putInt(FISHING_SPOT_COOLDOWN, 200);
6769
return;
6870
}
6971

7072
if (!level.getBlockState(aboveSurfacePos).canBeReplaced()) {
73+
// If this position was bad, try again in a second
74+
littleJoysData.putInt(FISHING_SPOT_COOLDOWN, 20);
7175
return;
7276
}
7377

@@ -79,6 +83,9 @@ public static void initialize() {
7983
ChunkLimitManager.get(level).trackFishingSpot(aboveSurfacePos);
8084
littleJoysData.putInt(FISHING_SPOT_COOLDOWN, Math.round(LittleJoysConfig.getActive().fishingSpots.spawnIntervalSeconds * 20));
8185
}, () -> littleJoysData.putInt(FISHING_SPOT_COOLDOWN, 20));
86+
} else {
87+
// If we have one in range, don't bother re-checking until 10 seconds have passed
88+
littleJoysData.putInt(FISHING_SPOT_COOLDOWN, 200);
8289
}
8390
}
8491
});

0 commit comments

Comments
 (0)