Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@
import de.hysky.skyblocker.config.ConfigUtils;
import de.hysky.skyblocker.config.SkyblockerConfig;
import de.hysky.skyblocker.config.configs.DungeonsConfig;
import de.hysky.skyblocker.skyblock.dungeon.DungeonMapConfigScreen;
import de.hysky.skyblocker.skyblock.dungeon.DungeonMapWidget;
import de.hysky.skyblocker.skyblock.tabhud.config.WidgetsConfigurationScreen;
import de.hysky.skyblocker.skyblock.tabhud.screenbuilder.WidgetManager;
import de.hysky.skyblocker.utils.Location;
import de.hysky.skyblocker.utils.waypoint.Waypoint.Type;
import net.azureaaron.dandelion.systems.ButtonOption;
import net.azureaaron.dandelion.systems.ConfigCategory;
Expand Down Expand Up @@ -57,7 +60,7 @@ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig
newValue -> config.dungeons.onlyHighlightDonatedItems = newValue)
.controller(ConfigUtils.createBooleanController())
.build())
.option(Option.<Boolean>createBuilder()
.option(Option.<Boolean>createBuilder()
.name(Text.translatable("skyblocker.config.dungeons.sellableItemsHighlighter"))
.description(Text.translatable("skyblocker.config.dungeons.sellableItemsHighlighter.@Tooltip"))
.binding(defaults.dungeons.sellableItemsHighlighter,
Expand Down Expand Up @@ -174,13 +177,16 @@ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig
.name(Text.translatable("skyblocker.config.dungeons.map.mapScaling"))
.binding(defaults.dungeons.dungeonMap.mapScaling,
() -> config.dungeons.dungeonMap.mapScaling,
newValue -> config.dungeons.dungeonMap.mapScaling = newValue)
newValue -> {
config.dungeons.dungeonMap.mapScaling = newValue;
DungeonMapWidget.INSTANCE.update();
})
.controller(FloatController.createBuilder().build())
.build())
.option(ButtonOption.createBuilder()
.name(Text.translatable("skyblocker.config.dungeons.map.mapScreen"))
.prompt(Text.translatable("text.skyblocker.open"))
.action(screen -> MinecraftClient.getInstance().setScreen(new DungeonMapConfigScreen(screen)))
.action(screen -> MinecraftClient.getInstance().setScreen(new WidgetsConfigurationScreen(Location.DUNGEON, WidgetManager.ScreenLayer.HUD, screen)))
.build())
.build())

Expand Down Expand Up @@ -792,11 +798,7 @@ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig
.name(Text.translatable("skyblocker.config.dungeons.dungeonScore.scoreScaling"))
.binding(defaults.dungeons.dungeonScore.scoreScaling,
() -> config.dungeons.dungeonScore.scoreScaling,
newValue -> {
config.dungeons.dungeonScore.scoreX = config.dungeons.dungeonScore.scoreX + (int) ((config.dungeons.dungeonScore.scoreScaling - newValue) * 38.0);
config.dungeons.dungeonScore.scoreY = config.dungeons.dungeonScore.scoreY + (int) ((config.dungeons.dungeonScore.scoreScaling - newValue) * MinecraftClient.getInstance().textRenderer.fontHeight / 2.0);
config.dungeons.dungeonScore.scoreScaling = newValue;
})
newValue -> config.dungeons.dungeonScore.scoreScaling = newValue)
.controller(FloatController.createBuilder().build())
.build())
.build())
Expand Down
24 changes: 4 additions & 20 deletions src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonMap.java
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
package de.hysky.skyblocker.skyblock.dungeon;

import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.annotations.Init;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.config.configs.DungeonsConfig;
import de.hysky.skyblocker.mixins.accessors.MapStateAccessor;
import de.hysky.skyblocker.skyblock.dungeon.secrets.DungeonManager;
import de.hysky.skyblocker.skyblock.dungeon.secrets.DungeonMapUtils;
import de.hysky.skyblocker.skyblock.dungeon.secrets.DungeonPlayerManager;
import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.skyblock.tabhud.config.WidgetsConfigurationScreen;
import de.hysky.skyblocker.skyblock.tabhud.screenbuilder.WidgetManager;
import de.hysky.skyblocker.utils.Location;
import de.hysky.skyblocker.utils.render.HudHelper;
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.fabricmc.fabric.api.client.rendering.v1.hud.HudElementRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.hud.VanillaHudElements;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.MapRenderState;
Expand All @@ -29,7 +27,6 @@
import net.minecraft.item.map.MapDecoration;
import net.minecraft.item.map.MapDecorationTypes;
import net.minecraft.item.map.MapState;
import net.minecraft.util.Identifier;
import net.minecraft.world.World;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
Expand All @@ -44,35 +41,22 @@

public class DungeonMap {
private static final Logger LOGGER = LoggerFactory.getLogger(DungeonMap.class);
private static final Identifier DUNGEON_MAP = SkyblockerMod.id("dungeon_map");
private static final MapIdComponent DEFAULT_MAP_ID_COMPONENT = new MapIdComponent(1024);
private static final MapRenderState MAP_RENDER_STATE = new MapRenderState();
private static MapIdComponent cachedMapIdComponent = null;

@Init
public static void init() {
HudElementRegistry.attachElementAfter(VanillaHudElements.STATUS_EFFECTS, DUNGEON_MAP, (context, tickCounter) -> render(context));
ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> dispatcher.register(ClientCommandManager.literal("skyblocker")
.then(ClientCommandManager.literal("hud")
.then(ClientCommandManager.literal("dungeon")
.executes(Scheduler.queueOpenScreenCommand(DungeonMapConfigScreen::new))
.executes(Scheduler.queueOpenScreenCommand(new WidgetsConfigurationScreen(Location.DUNGEON, WidgetManager.ScreenLayer.HUD, null)))
)
)
));
ClientPlayConnectionEvents.JOIN.register((handler, sender, client) -> reset());
}

private static boolean shouldProcess() {
return Utils.isInDungeons() && DungeonScore.isDungeonStarted() && !DungeonManager.isInBoss();
}

private static void render(DrawContext context) {
DungeonsConfig.DungeonMap dungeonMap = SkyblockerConfigManager.get().dungeons.dungeonMap;
if (shouldProcess() && dungeonMap.enableMap) {
render(context, dungeonMap.mapX, dungeonMap.mapY, dungeonMap.mapScaling, dungeonMap.fancyMap);
}
}

public static void render(DrawContext context, int x, int y, float scale, boolean fancy) {
render(context, x, y, scale, fancy, Integer.MIN_VALUE, Integer.MIN_VALUE, null);
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package de.hysky.skyblocker.skyblock.dungeon;

import de.hysky.skyblocker.annotations.RegisterWidget;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.config.configs.DungeonsConfig;
import de.hysky.skyblocker.skyblock.dungeon.secrets.DungeonManager;
import de.hysky.skyblocker.skyblock.tabhud.config.WidgetsConfigurationScreen;
import de.hysky.skyblocker.skyblock.tabhud.widget.HudWidget;
import de.hysky.skyblocker.utils.Location;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gl.RenderPipelines;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;

import java.util.Set;

@RegisterWidget
public class DungeonMapWidget extends HudWidget {
private static final Set<Location> AVAILABLE_LOCATIONS = Set.of(Location.DUNGEON);
private static final Identifier MAP_BACKGROUND = Identifier.ofVanilla("textures/map/map_background.png");
public static DungeonMapWidget INSTANCE;

public DungeonMapWidget() {
super("dungeon_map");
INSTANCE = this;
update();
}

@Override
public Set<Location> availableLocations() {
return AVAILABLE_LOCATIONS;
}

@Override
public void setEnabledIn(Location location, boolean enabled) {
if (!availableLocations().contains(location)) return;
SkyblockerConfigManager.get().dungeons.dungeonMap.enableMap = enabled;
}

@Override
public boolean isEnabledIn(Location location) {
if (!availableLocations().contains(location)) return false;
return SkyblockerConfigManager.get().dungeons.dungeonMap.enableMap;
}

@Override
public void update() {
float size = 128 * SkyblockerConfigManager.get().dungeons.dungeonMap.mapScaling;
setDimensions((int) size);
}

private void renderConfig(DrawContext context) {
float scaling = SkyblockerConfigManager.get().dungeons.dungeonMap.mapScaling;
int size = (int) (128 * scaling);
context.drawTexture(RenderPipelines.GUI_TEXTURED, MAP_BACKGROUND, x, y, 0, 0, size, size, size, size);
}

private boolean shouldRender() {
return DungeonScore.isDungeonStarted() && !DungeonManager.isInBoss();
}

@Override
protected void renderWidget(DrawContext context, int mouseX, int mouseY, float delta) {
// Show the default map texture if outside of Dungeons
if (MinecraftClient.getInstance().currentScreen instanceof WidgetsConfigurationScreen && !shouldRender()) {
renderConfig(context);
return;
}
if (!shouldRender()) return;
DungeonsConfig.DungeonMap dungeonMap = SkyblockerConfigManager.get().dungeons.dungeonMap;
DungeonMap.render(context, x, y, dungeonMap.mapScaling, dungeonMap.fancyMap);
}

@Override
public Text getDisplayName() {
return Text.translatable("skyblocker.config.dungeons.map");
}
}
Loading