aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-08-20 14:37:22 +0800
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-08-30 22:49:56 -0400
commit3a3199f804b2267b436a336e5fe1a924013c138d (patch)
tree8e4c55bdd1fcbeca5e89aadbbf5a9893b05bfb44 /src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets
parentf51e8de1532b7fe052fe518638f46e9e5c5fd602 (diff)
downloadSkyblocker-3a3199f804b2267b436a336e5fe1a924013c138d.tar.gz
Skyblocker-3a3199f804b2267b436a336e5fe1a924013c138d.tar.bz2
Skyblocker-3a3199f804b2267b436a336e5fe1a924013c138d.zip
Refactor Room
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/Room.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java18
2 files changed, 20 insertions, 2 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/Room.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/Room.java
index 383e246d..c8bb27aa 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/Room.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/Room.java
@@ -366,7 +366,7 @@ public class Room {
if (!state.isOf(Blocks.CHEST) && !state.isOf(Blocks.PLAYER_HEAD) && !state.isOf(Blocks.PLAYER_WALL_HEAD)) {
return;
}
- secretWaypoints.column(hitResult.getBlockPos()).values().stream().filter(secretWaypoint -> secretWaypoint.category.needsInteraction()).findAny()
+ secretWaypoints.column(hitResult.getBlockPos()).values().stream().filter(SecretWaypoint::needsInteraction).findAny()
.ifPresent(secretWaypoint -> onSecretFound(secretWaypoint, "[Skyblocker] Detected {} interaction, setting secret #{} as found", secretWaypoint.category, secretWaypoint.secretIndex));
}
@@ -381,7 +381,7 @@ public class Room {
if (SecretWaypoint.SECRET_ITEMS.stream().noneMatch(itemEntity.getStack().getName().getString()::contains)) {
return;
}
- secretWaypoints.values().stream().filter(secretWaypoint -> secretWaypoint.category.needsItemPickup()).min(Comparator.comparingDouble(secretWaypoint -> collector.squaredDistanceTo(secretWaypoint.centerPos))).filter(secretWaypoint -> collector.squaredDistanceTo(secretWaypoint.centerPos) <= 36D)
+ secretWaypoints.values().stream().filter(SecretWaypoint::needsItemPickup).min(Comparator.comparingDouble(SecretWaypoint.getSquaredDistanceToFunction(collector))).filter(SecretWaypoint.getRangePredicate(collector))
.ifPresent(secretWaypoint -> onSecretFound(secretWaypoint, "[Skyblocker] Detected {} picked up a {} from a {} secret, setting secret #{} as found", collector.getName().getString(), itemEntity.getName().getString(), secretWaypoint.category, secretWaypoint.secretIndex));
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java
index 73a03fbc..3da9f487 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java
@@ -5,6 +5,7 @@ import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.utils.RenderHelper;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
import net.minecraft.client.MinecraftClient;
+import net.minecraft.entity.Entity;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.math.BlockPos;
@@ -12,6 +13,7 @@ import net.minecraft.util.math.Vec3d;
import java.util.List;
import java.util.function.Predicate;
+import java.util.function.ToDoubleFunction;
public class SecretWaypoint {
static final List<String> SECRET_ITEMS = List.of("Decoy", "Defuse Kit", "Dungeon Chest Key", "Healing VIII", "Inflatable Jerry", "Spirit Leap", "Training Weights", "Trap", "Treasure Talisman");
@@ -31,10 +33,26 @@ public class SecretWaypoint {
this.missing = true;
}
+ static ToDoubleFunction<SecretWaypoint> getSquaredDistanceToFunction(Entity entity) {
+ return secretWaypoint -> entity.squaredDistanceTo(secretWaypoint.centerPos);
+ }
+
+ static Predicate<SecretWaypoint> getRangePredicate(Entity entity) {
+ return secretWaypoint -> entity.squaredDistanceTo(secretWaypoint.centerPos) <= 36D;
+ }
+
public boolean shouldRender() {
return category.isEnabled() && missing;
}
+ boolean needsInteraction() {
+ return category.needsInteraction();
+ }
+
+ boolean needsItemPickup() {
+ return category.needsItemPickup();
+ }
+
public void setFound() {
this.missing = false;
}