diff options
author | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2023-08-24 18:35:41 +0800 |
---|---|---|
committer | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2023-08-30 22:49:57 -0400 |
commit | f1e63c12fda4ba8a5792b7e8b63d7b17372e7a70 (patch) | |
tree | 0e709ba1b4e16f49a2d35423277c06c91c4e2464 /src/main/java | |
parent | d67f753d48ab18cee60271ff414d52f689ee359e (diff) | |
download | Skyblocker-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.java | 11 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java | 17 |
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; } |