diff options
| author | Kevin <92656833+kevinthegreat1@users.noreply.github.com> | 2024-01-01 14:50:01 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-01 01:50:01 -0500 |
| commit | 37eb5bfad25b1e0c3326ed27744c38f81513b5e4 (patch) | |
| tree | f218b51ff9fe54597f7126115547fb15f12bbb4e /src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets | |
| parent | 8005dd9afe963a461619ee3da603d8202292840b (diff) | |
| download | Skyblocker-37eb5bfad25b1e0c3326ed27744c38f81513b5e4.tar.gz Skyblocker-37eb5bfad25b1e0c3326ed27744c38f81513b5e4.tar.bz2 Skyblocker-37eb5bfad25b1e0c3326ed27744c38f81513b5e4.zip | |
Waterboard Solver (#467)
* Add waterboard detection and parsing
* Solve waterboard
* Render lines through walls
* Fix lines
* Add lever highlights
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets')
| -rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/DungeonManager.java | 12 | ||||
| -rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/Room.java | 16 |
2 files changed, 14 insertions, 14 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/DungeonManager.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/DungeonManager.java index 70a0fd8c..bd10767f 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/DungeonManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/DungeonManager.java @@ -16,9 +16,11 @@ import de.hysky.skyblocker.config.SkyblockerConfig; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.debug.Debug; import de.hysky.skyblocker.utils.Constants; +import de.hysky.skyblocker.utils.Tickable; import de.hysky.skyblocker.utils.Utils; import de.hysky.skyblocker.utils.scheduler.Scheduler; import it.unimi.dsi.fastutil.objects.Object2ByteMap; +import it.unimi.dsi.fastutil.objects.Object2ByteMaps; import it.unimi.dsi.fastutil.objects.Object2ByteOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectIntPair; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; @@ -91,7 +93,7 @@ public class DungeonManager { * @implNote Not using {@link Registry#getId(Object) Registry#getId(Block)} and {@link Blocks Blocks} since this is also used by {@link de.hysky.skyblocker.skyblock.dungeon.secrets.DungeonRoomsDFU DungeonRoomsDFU}, which runs outside of Minecraft. */ @SuppressWarnings("JavadocReference") - protected static final Object2ByteMap<String> NUMERIC_ID = new Object2ByteOpenHashMap<>(Map.ofEntries( + protected static final Object2ByteMap<String> NUMERIC_ID = Object2ByteMaps.unmodifiable(new Object2ByteOpenHashMap<>(Map.ofEntries( Map.entry("minecraft:stone", (byte) 1), Map.entry("minecraft:diorite", (byte) 2), Map.entry("minecraft:polished_diorite", (byte) 3), @@ -113,7 +115,7 @@ public class DungeonManager { Map.entry("minecraft:gray_terracotta", (byte) 19), Map.entry("minecraft:cyan_terracotta", (byte) 20), Map.entry("minecraft:black_terracotta", (byte) 21) - )); + ))); /** * Block data for dungeon rooms. See {@link de.hysky.skyblocker.skyblock.dungeon.secrets.DungeonRoomsDFU DungeonRoomsDFU} for format details and how it's generated. * All access to this map must check {@link #isRoomsLoaded()} to prevent concurrent modification. @@ -502,7 +504,7 @@ public class DungeonManager { * <li> Create a new room. </li> * </ul> * <li> Sets {@link #currentRoom} to the current room, either created from the previous step or from {@link #rooms}. </li> - * <li> Calls {@link Room#tick()} on {@link #currentRoom}. </li> + * <li> Calls {@link Tickable#tick(MinecraftClient)} on {@link #currentRoom}. </li> * </ul> */ @SuppressWarnings("JavadocReference") @@ -560,7 +562,7 @@ public class DungeonManager { } currentRoom = room; } - currentRoom.tick(); + currentRoom.tick(client); } /** @@ -728,7 +730,7 @@ public class DungeonManager { * * @return {@code true} if {@link #currentRoom} is not null and {@link #isRoomMatched(Room)} */ - private static boolean isCurrentRoomMatched() { + public static boolean isCurrentRoomMatched() { return isRoomMatched(currentRoom); } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/Room.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/Room.java index 4857e8fe..3e25a8f1 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/Room.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/Room.java @@ -299,20 +299,18 @@ public class Room implements Tickable, Renderable { */ @SuppressWarnings("JavadocReference") @Override - public void tick() { - MinecraftClient client = MinecraftClient.getInstance(); - ClientWorld world = client.world; - if (world == null) { + public void tick(MinecraftClient client) { + if (client.world == null) { return; } for (Tickable tickable : tickables) { - tickable.tick(); + tickable.tick(client); } // Wither and blood door if (SkyblockerConfigManager.get().locations.dungeons.doorHighlight.enableDoorHighlight && doorPos == null) { - doorPos = DungeonMapUtils.getWitherBloodDoorPos(world, segments); + doorPos = DungeonMapUtils.getWitherBloodDoorPos(client.world, segments); if (doorPos != null) { doorBox = new Box(doorPos.getX(), doorPos.getY(), doorPos.getZ(), doorPos.getX() + DOOR_SIZE.getX(), doorPos.getY() + DOOR_SIZE.getY(), doorPos.getZ() + DOOR_SIZE.getZ()); } @@ -329,7 +327,7 @@ public class Room implements Tickable, Renderable { } findRoom = CompletableFuture.runAsync(() -> { for (BlockPos pos : BlockPos.iterate(player.getBlockPos().add(-5, -5, -5), player.getBlockPos().add(5, 5, 5))) { - if (segments.contains(DungeonMapUtils.getPhysicalRoomPos(pos)) && notInDoorway(pos) && checkedBlocks.add(pos) && checkBlock(world, pos)) { + if (segments.contains(DungeonMapUtils.getPhysicalRoomPos(pos)) && notInDoorway(pos) && checkedBlocks.add(pos) && checkBlock(client.world, pos)) { break; } } @@ -506,14 +504,14 @@ public class Room implements Tickable, Renderable { /** * Fails if !{@link #isMatched()} */ - protected BlockPos actualToRelative(BlockPos pos) { + public BlockPos actualToRelative(BlockPos pos) { return DungeonMapUtils.actualToRelative(direction, physicalCornerPos, pos); } /** * Fails if !{@link #isMatched()} */ - protected BlockPos relativeToActual(BlockPos pos) { + public BlockPos relativeToActual(BlockPos pos) { return DungeonMapUtils.relativeToActual(direction, physicalCornerPos, pos); } |
