aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-03-14 15:37:36 -0400
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-03-14 15:37:36 -0400
commit9a40d6b5b12bf54b7adeed63ba44a4da587828ac (patch)
tree50ccea6bea938eb66f72e892c32addb00d375bce /src/main/java/de/hysky/skyblocker/skyblock
parentce0ea61955381a678c9bd5cd44dceadd041c65d8 (diff)
downloadSkyblocker-9a40d6b5b12bf54b7adeed63ba44a4da587828ac.tar.gz
Skyblocker-9a40d6b5b12bf54b7adeed63ba44a4da587828ac.tar.bz2
Skyblocker-9a40d6b5b12bf54b7adeed63ba44a4da587828ac.zip
Fix Dungeon Map
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonMap.java40
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/DungeonManager.java7
2 files changed, 36 insertions, 11 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonMap.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonMap.java
index 9464fcf8..577cdb13 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonMap.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonMap.java
@@ -4,20 +4,38 @@ import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.utils.scheduler.Scheduler;
import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
+import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.LightmapTextureManager;
import net.minecraft.client.render.MapRenderer;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.item.FilledMapItem;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.Items;
import net.minecraft.item.map.MapState;
public class DungeonMap {
- private static final int mapId = 1024;
+ private static final int DEFAULT_MAP_ID = 1024;
+ private static int cachedMapId = -1;
+
+ public static void init() {
+ ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> dispatcher.register(ClientCommandManager.literal("skyblocker")
+ .then(ClientCommandManager.literal("hud")
+ .then(ClientCommandManager.literal("dungeon")
+ .executes(Scheduler.queueOpenScreenCommand(DungeonMapConfigScreen::new))
+ )
+ )
+ ));
+ ClientPlayConnectionEvents.JOIN.register((handler, sender, client) -> reset());
+ }
+
public static void render(MatrixStack matrices) {
MinecraftClient client = MinecraftClient.getInstance();
if (client.player == null || client.world == null) return;
+ int mapId = getMapId(client.player.getInventory().main.get(8));
+
MapState state = FilledMapItem.getMapState(mapId, client.world);
if (state == null) return;
@@ -35,10 +53,20 @@ public class DungeonMap {
matrices.pop();
}
- public static void init() { //Todo: consider renaming the command to a more general name since it'll also have dungeon score and maybe other stuff in the future
- ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> dispatcher.register(ClientCommandManager.literal("skyblocker")
- .then(ClientCommandManager.literal("hud")
- .then(ClientCommandManager.literal("dungeonmap")
- .executes(Scheduler.queueOpenScreenCommand(DungeonMapConfigScreen::new))))));
+ public static int getMapId(ItemStack stack) {
+ if (stack.isOf(Items.FILLED_MAP) && stack.hasNbt()) {
+ @SuppressWarnings("DataFlowIssue")
+ int mapId = FilledMapItem.getMapId(stack);
+ cachedMapId = mapId;
+ return mapId;
+ } else if (cachedMapId != -1) {
+ return cachedMapId;
+ } else {
+ return DEFAULT_MAP_ID;
+ }
+ }
+
+ private static void reset() {
+ cachedMapId = -1;
}
}
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 a207ddc7..c1ab226d 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
@@ -15,6 +15,7 @@ import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.config.SkyblockerConfig;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.debug.Debug;
+import de.hysky.skyblocker.skyblock.dungeon.DungeonMap;
import de.hysky.skyblocker.utils.Constants;
import de.hysky.skyblocker.utils.Tickable;
import de.hysky.skyblocker.utils.Utils;
@@ -529,11 +530,7 @@ public class DungeonManager {
physicalEntrancePos = DungeonMapUtils.getPhysicalRoomPos(playerPos);
currentRoom = newRoom(Room.Type.ENTRANCE, physicalEntrancePos);
}
- ItemStack stack = client.player.getInventory().main.get(8);
- if (!stack.isOf(Items.FILLED_MAP)) {
- return;
- }
- MapState map = FilledMapItem.getMapState(FilledMapItem.getMapId(stack), client.world);
+ MapState map = FilledMapItem.getMapState(DungeonMap.getMapId(client.player.getInventory().main.get(8)), client.world);
if (map == null) {
return;
}