Skip to content

Commit e17dd85

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 51be4d3 commit e17dd85

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
@@ -51,11 +51,11 @@ public static void initialize() {
5151
final var centerPos = getOriginForNextSpawn(player);
5252
final var checkRange = LittleJoysConfig.getActive().fishingSpots.minimumDistanceBetween;
5353
final var spawnRange = LittleJoysConfig.getActive().fishingSpots.spawnDistance;
54-
final var closestFishingSpot = poiManager.findClosest(it -> it.is(ModPoiTypeTags.FISHING_SPOTS),
54+
final var fishingSpotInRange = poiManager.getInRange(it -> it.is(ModPoiTypeTags.FISHING_SPOTS),
5555
centerPos,
5656
checkRange,
57-
PoiManager.Occupancy.ANY);
58-
if (closestFishingSpot.isEmpty()) {
57+
PoiManager.Occupancy.ANY).findAny();
58+
if (fishingSpotInRange.isEmpty()) {
5959
final var offsetX = random.nextInt(spawnRange + spawnRange) - spawnRange;
6060
final var offsetZ = random.nextInt(spawnRange + spawnRange) - spawnRange;
6161
final var randomOffsetPos = new BlockPos(centerPos.getX() + offsetX, centerPos.getX(), centerPos.getZ() + offsetZ);
@@ -65,10 +65,14 @@ public static void initialize() {
6565
final var totalSpots = ChunkLimitManager.get(level).getTotalFishingSpotsInChunk(aboveSurfacePos);
6666
final var maxSpots = LittleJoysConfig.getActive().fishingSpots.totalLimitPerChunk;
6767
if (maxSpots > 0 && totalSpots >= maxSpots) {
68+
// If we have exceeded the total, don't bother re-checking until 10 seconds have passed
69+
littleJoysData.putInt(FISHING_SPOT_COOLDOWN, 200);
6870
return;
6971
}
7072

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

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

0 commit comments

Comments
 (0)