diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2023-06-05 01:13:54 -0400 |
---|---|---|
committer | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2023-06-09 16:19:56 -0400 |
commit | 97384423da03f5d85ed5ec62a16f80d40f109b74 (patch) | |
tree | 038d3622b915f4a12d4e0ef18661dd1b92b4b1fd /src/main/java/me/xmrvizzy/skyblocker | |
parent | 2adaeb8c54ddffd4cdd6b5a58497a876ed0d97dd (diff) | |
download | Skyblocker-97384423da03f5d85ed5ec62a16f80d40f109b74.tar.gz Skyblocker-97384423da03f5d85ed5ec62a16f80d40f109b74.tar.bz2 Skyblocker-97384423da03f5d85ed5ec62a16f80d40f109b74.zip |
Add Dungeon Map Placement Screen!
You can now move the dungeon map to wherever you want on your screen! No
longer is it locked to the top left.
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker')
4 files changed, 90 insertions, 1 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index e0f950d0..bfc5013b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -11,6 +11,7 @@ import me.xmrvizzy.skyblocker.skyblock.StatusBarTracker; import me.xmrvizzy.skyblocker.skyblock.api.RepositoryUpdate; import me.xmrvizzy.skyblocker.skyblock.api.StatsCommand; import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonBlaze; +import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonMap; import me.xmrvizzy.skyblocker.skyblock.dungeon.LividColor; import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHud; import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip; @@ -79,6 +80,7 @@ public class SkyblockerMod implements ClientModInitializer { FishingHelper.init(); TabHud.init(); containerSolverManager.init(); + DungeonMap.init(); scheduler.scheduleCyclic(Utils::sbChecker, 20); scheduler.scheduleCyclic(DiscordRPCManager::update, 100); scheduler.scheduleCyclic(DungeonBlaze::update, 4); diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 7fdd7254..b1bc2001 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -278,6 +278,8 @@ public class SkyblockerConfig implements ConfigData { public boolean croesusHelper = true; public boolean enableMap = true; public float mapScaling = 1f; + public int mapX = 2; + public int mapY = 2; public boolean solveThreeWeirdos = true; public boolean blazesolver = true; public boolean solveTrivia = true; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java index dda8da41..6aaee632 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java @@ -2,8 +2,14 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; import org.apache.commons.lang3.StringUtils; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.brigadier.Command; + import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; +import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.render.MapRenderer; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.util.math.MatrixStack; @@ -11,8 +17,11 @@ import net.minecraft.item.FilledMapItem; import net.minecraft.item.ItemStack; import net.minecraft.item.map.MapState; import net.minecraft.nbt.NbtCompound; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; public class DungeonMap { + private static final Identifier MAP_BACKGROUND = new Identifier("textures/map/map_background.png"); public static void render(MatrixStack matrices) { MinecraftClient client = MinecraftClient.getInstance(); @@ -28,14 +37,35 @@ public class DungeonMap { MapRenderer map = client.gameRenderer.getMapRenderer(); MapState state = FilledMapItem.getMapState(mapid, client.world); float scaling = SkyblockerConfig.get().locations.dungeons.mapScaling; + int x = SkyblockerConfig.get().locations.dungeons.mapX; + int y = SkyblockerConfig.get().locations.dungeons.mapY; if (state == null) return; matrices.push(); - matrices.translate(2, 2, 0); + matrices.translate(x, y, 0); matrices.scale(scaling, scaling, 0f); map.draw( matrices, vertices, mapid, state, false, 15728880); vertices.draw(); matrices.pop(); } } + + public static void renderHUDMap(MatrixStack matrices, int x, int y) { + RenderSystem.setShaderTexture(0, MAP_BACKGROUND); + DrawableHelper.drawTexture(matrices, x, y, 0, 0, 64, 64, 64, 64); + } + + public static void init() { + ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> { + dispatcher.register(ClientCommandManager.literal("skyblocker") + .then(ClientCommandManager.literal("hud") + .then(ClientCommandManager.literal("dungeonmap") + .executes(context -> { + MinecraftClient client = context.getSource().getClient(); + client.send(() -> client.setScreen(new DungeonMapConfigScreen(Text.literal("Dungeon Map Config")))); + + return Command.SINGLE_SUCCESS; + })))); + }); + } }
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java new file mode 100644 index 00000000..d0f36a69 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java @@ -0,0 +1,55 @@ +package me.xmrvizzy.skyblocker.skyblock.dungeon; + +import java.awt.Color; + +import me.shedaniel.autoconfig.AutoConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.RenderUtils; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.Text; + +public class DungeonMapConfigScreen extends Screen { + + private int hudX = SkyblockerConfig.get().locations.dungeons.mapX; + private int hudY = SkyblockerConfig.get().locations.dungeons.mapY; + + protected DungeonMapConfigScreen(Text title) { + super(title); + } + + @Override + public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { + super.render(matrices, mouseX, mouseY, delta); + renderBackground(matrices); + DungeonMap.renderHUDMap(matrices, hudX, hudY); + drawCenteredTextWithShadow(matrices, textRenderer, "Right Click To Reset Position", width / 2, height / 2, Color.GRAY.getRGB()); + } + + @Override + public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) { + if(RenderUtils.pointExistsInArea((int) mouseX, (int) mouseY, hudX, hudY, hudX + 64, hudY + 64) && button == 0) { + hudX = (int) Math.max(Math.min(mouseX - 32, this.width - 64), 0); + hudY = (int) Math.max(Math.min(mouseY - 32, this.height - 64), 0); + } + return super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY); + } + + @Override + public boolean mouseClicked(double mouseX, double mouseY, int button) { + if(button == 1) { + hudX = 2; + hudY = 2; + } + + return super.mouseClicked(mouseX, mouseY, button); + } + + @Override + public void close() { + SkyblockerConfig.get().locations.dungeons.mapX = hudX; + SkyblockerConfig.get().locations.dungeons.mapY = hudY; + AutoConfig.getConfigHolder(SkyblockerConfig.class).save(); + super.close(); + } +} |