aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2023-06-05 01:13:54 -0400
committerAaron <51387595+AzureAaron@users.noreply.github.com>2023-06-09 16:19:56 -0400
commit97384423da03f5d85ed5ec62a16f80d40f109b74 (patch)
tree038d3622b915f4a12d4e0ef18661dd1b92b4b1fd /src/main/java/me/xmrvizzy/skyblocker
parent2adaeb8c54ddffd4cdd6b5a58497a876ed0d97dd (diff)
downloadSkyblocker-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')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java32
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java55
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();
+ }
+}