diff options
author | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-03-14 15:37:36 -0400 |
---|---|---|
committer | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-03-14 15:37:36 -0400 |
commit | 9a40d6b5b12bf54b7adeed63ba44a4da587828ac (patch) | |
tree | 50ccea6bea938eb66f72e892c32addb00d375bce /src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonMap.java | |
parent | ce0ea61955381a678c9bd5cd44dceadd041c65d8 (diff) | |
download | Skyblocker-9a40d6b5b12bf54b7adeed63ba44a4da587828ac.tar.gz Skyblocker-9a40d6b5b12bf54b7adeed63ba44a4da587828ac.tar.bz2 Skyblocker-9a40d6b5b12bf54b7adeed63ba44a4da587828ac.zip |
Fix Dungeon Map
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonMap.java')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonMap.java | 40 |
1 files changed, 34 insertions, 6 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; } } |