aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-08-24 18:35:41 +0800
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-08-30 22:49:57 -0400
commitf1e63c12fda4ba8a5792b7e8b63d7b17372e7a70 (patch)
tree0e709ba1b4e16f49a2d35423277c06c91c4e2464 /src/main/java
parentd67f753d48ab18cee60271ff414d52f689ee359e (diff)
downloadSkyblocker-f1e63c12fda4ba8a5792b7e8b63d7b17372e7a70.tar.gz
Skyblocker-f1e63c12fda4ba8a5792b7e8b63d7b17372e7a70.tar.bz2
Skyblocker-f1e63c12fda4ba8a5792b7e8b63d7b17372e7a70.zip
Add interact lever check
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/Room.java11
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java17
2 files changed, 18 insertions, 10 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 3f69fca8..8e8fb767 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
@@ -363,11 +363,12 @@ public class Room {
*/
protected void onUseBlock(World world, BlockHitResult hitResult) {
BlockState state = world.getBlockState(hitResult.getBlockPos());
- if (!state.isOf(Blocks.CHEST) && !state.isOf(Blocks.PLAYER_HEAD) && !state.isOf(Blocks.PLAYER_WALL_HEAD)) {
- return;
+ if (state.isOf(Blocks.CHEST) || state.isOf(Blocks.PLAYER_HEAD) || state.isOf(Blocks.PLAYER_WALL_HEAD)) {
+ 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));
+ } else if (state.isOf(Blocks.LEVER)) {
+ secretWaypoints.column(hitResult.getBlockPos()).values().stream().filter(SecretWaypoint::isLever).forEach(SecretWaypoint::setFound);
}
- 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));
}
/**
@@ -398,7 +399,7 @@ public class Room {
}
protected void markSecrets(int secretIndex, boolean found) {
- secretWaypoints.row(secretIndex).values().forEach(SecretWaypoint.getStatusSetter(found));
+ secretWaypoints.row(secretIndex).values().forEach(found ? SecretWaypoint::setFound : SecretWaypoint::setMissing);
}
public enum Type {
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 e44f2ebe..c2658fd3 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
@@ -12,7 +12,6 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import java.util.List;
-import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.function.ToDoubleFunction;
@@ -42,10 +41,6 @@ public class SecretWaypoint {
return secretWaypoint -> entity.squaredDistanceTo(secretWaypoint.centerPos) <= 36D;
}
- static Consumer<SecretWaypoint> getStatusSetter(boolean found) {
- return secretWaypoint -> secretWaypoint.missing = !found;
- }
-
boolean shouldRender() {
return category.isEnabled() && missing;
}
@@ -54,6 +49,10 @@ public class SecretWaypoint {
return category.needsInteraction();
}
+ boolean isLever() {
+ return category.isLever();
+ }
+
boolean needsItemPickup() {
return category.needsItemPickup();
}
@@ -62,6 +61,10 @@ public class SecretWaypoint {
this.missing = false;
}
+ void setMissing() {
+ this.missing = true;
+ }
+
/**
* Renders the secret waypoint, including a filled cube, a beacon beam, the name, and the distance from the player.
*/
@@ -114,6 +117,10 @@ public class SecretWaypoint {
return this == CHEST || this == WITHER;
}
+ boolean isLever() {
+ return this == LEVER;
+ }
+
boolean needsItemPickup() {
return this == ITEM || this == BAT;
}