From e1778e0b61ae87ff21bf10c949741121ebda2a1b Mon Sep 17 00:00:00 2001 From: DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> Date: Sun, 29 Jan 2023 20:15:57 +0100 Subject: [PATCH 1/5] start --- build.gradle.kts | 13 +- .../dev/dediamondpro/skyguide/SkyGuide.kt | 9 +- .../skyguide/command/SkyGuideCommand.kt | 12 +- .../dediamondpro/skyguide/config/Config.kt | 219 +++++------------- .../dev/dediamondpro/skyguide/gui/Button.kt | 4 +- .../dev/dediamondpro/skyguide/gui/MapGui.kt | 12 +- .../dev/dediamondpro/skyguide/gui/NpcGui.kt | 2 +- .../skyguide/handlers/AssetHandler.kt | 10 +- .../skyguide/handlers/FirstLaunchHandler.kt | 5 +- .../skyguide/handlers/KeyBindHandler.kt | 35 --- .../dev/dediamondpro/skyguide/hud/MiniMap.kt | 153 +++++++++--- .../skyguide/listeners/MessageListener.kt | 2 +- .../dev/dediamondpro/skyguide/map/Island.kt | 2 +- .../map/navigation/NavigationHandler.kt | 3 +- .../skyguide/map/poi/DestinationPoi.kt | 4 +- .../dev/dediamondpro/skyguide/map/poi/Npc.kt | 4 +- .../skyguide/map/poi/PointOfInterest.kt | 4 +- .../dediamondpro/skyguide/map/poi/Portal.kt | 3 +- .../skyguide/map/poi/SkytilsWaypoint.kt | 2 +- .../dediamondpro/skyguide/utils/GuiUtils.kt | 3 +- .../dediamondpro/skyguide/utils/ItemUtils.kt | 2 +- .../skyguide/utils/PlayerUtils.kt | 2 +- .../skyguide/utils/RenderUtils.kt | 3 +- .../dev/dediamondpro/skyguide/utils/SBInfo.kt | 2 +- .../dediamondpro/skyguide/utils/Waypoint.kt | 32 --- 25 files changed, 216 insertions(+), 326 deletions(-) delete mode 100644 src/main/kotlin/dev/dediamondpro/skyguide/handlers/KeyBindHandler.kt delete mode 100644 src/main/kotlin/dev/dediamondpro/skyguide/utils/Waypoint.kt diff --git a/build.gradle.kts b/build.gradle.kts index 7593c7f..e456fc3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -62,21 +62,22 @@ repositories { dependencies { modRuntimeOnly("me.djtheredstoner:DevAuth-forge-legacy:1.1.0") + //modRuntimeOnly("com.github.romangraef:notenoughupdates:30f7cf9e:all") - shade("gg.essential:loader-launchwrapper:1.1.3") - modCompileOnly("gg.essential:essential-1.8.9-forge:4804+g97db1f45b") + // Basic OneConfig dependencies for legacy versions. See OneConfig example mod for more info + compileOnly("cc.polyfrost:oneconfig-1.8.9-forge:0.2.0-alpha171") // Should not be included in jar + // include should be replaced with a configuration that includes this in the jar + shade("cc.polyfrost:oneconfig-wrapper-launchwrapper:1.0.0-alpha8") // Should be included in jar annotationProcessor("org.spongepowered:mixin:0.8.5:processor") compileOnly("org.spongepowered:mixin:0.8.5") - - modCompileOnly(runtimeMod("com.github.romangraef:notenoughupdates:30f7cf9e:all")!!) } loom { noServerRunConfigs() if (project.platform.isForge) { launchConfigs.named("client") { - arg("--tweakClass", "gg.essential.loader.stage0.EssentialSetupTweaker") + arg("--tweakClass", "cc.polyfrost.oneconfigwrapper.OneConfigWrapper") property("mixin.debug.export", "true") val modFiles = runtimeMod.files arg("--mods", modFiles.joinToString(",") { it.relativeTo(file("run")).path }) @@ -154,7 +155,7 @@ tasks { attributes(mapOf( "ModSide" to "CLIENT", "TweakOrder" to "0", - "TweakClass" to "gg.essential.loader.stage0.EssentialSetupTweaker", + "TweakClass" to "cc.polyfrost.oneconfigwrapper.OneConfigWrapper", "ForceLoadAsMod" to true )) } diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/SkyGuide.kt b/src/main/kotlin/dev/dediamondpro/skyguide/SkyGuide.kt index 1a97b9f..d0db095 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/SkyGuide.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/SkyGuide.kt @@ -5,8 +5,6 @@ import dev.dediamondpro.skyguide.compat.SkytilsCompat import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.gui.NpcGui import dev.dediamondpro.skyguide.handlers.AssetHandler -import dev.dediamondpro.skyguide.handlers.KeyBindHandler -import dev.dediamondpro.skyguide.hud.MiniMap import dev.dediamondpro.skyguide.handlers.FirstLaunchHandler import dev.dediamondpro.skyguide.listeners.MessageListener import dev.dediamondpro.skyguide.map.navigation.NavigationHandler @@ -21,7 +19,7 @@ import net.minecraftforge.fml.common.event.FMLPostInitializationEvent modid = SkyGuide.ID, name = SkyGuide.NAME, version = SkyGuide.VER, - modLanguageAdapter = "gg.essential.api.utils.KotlinAdapter" + modLanguageAdapter = "cc.polyfrost.oneconfig.utils.KotlinLanguageAdapter" ) object SkyGuide { const val NAME = "@NAME@" @@ -30,13 +28,12 @@ object SkyGuide { @Mod.EventHandler fun postInitialization(event: FMLPostInitializationEvent) { - Config.preload() + Config if (Config.downloadAtLaunch) AssetHandler.initialize() - KeyBindHandler.init() MinecraftForge.EVENT_BUS.register(SBInfo()) - MinecraftForge.EVENT_BUS.register(MiniMap()) MinecraftForge.EVENT_BUS.register(GuiUtils()) MinecraftForge.EVENT_BUS.register(AssetHandler()) + MinecraftForge.EVENT_BUS.register(Config.miniMap) MinecraftForge.EVENT_BUS.register(SkytilsCompat()) MinecraftForge.EVENT_BUS.register(MessageListener()) MinecraftForge.EVENT_BUS.register(NavigationHandler()) diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/command/SkyGuideCommand.kt b/src/main/kotlin/dev/dediamondpro/skyguide/command/SkyGuideCommand.kt index 4bbe62b..795c349 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/command/SkyGuideCommand.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/command/SkyGuideCommand.kt @@ -1,5 +1,9 @@ package dev.dediamondpro.skyguide.command +import cc.polyfrost.oneconfig.libs.universal.UChat +import cc.polyfrost.oneconfig.libs.universal.UDesktop +import cc.polyfrost.oneconfig.libs.universal.UMinecraft +import cc.polyfrost.oneconfig.libs.universal.wrappers.UPlayer import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.gui.MapGui import dev.dediamondpro.skyguide.gui.NpcGui @@ -9,10 +13,6 @@ import dev.dediamondpro.skyguide.map.navigation.Destination import dev.dediamondpro.skyguide.map.navigation.NavigationHandler import dev.dediamondpro.skyguide.utils.GuiUtils import dev.dediamondpro.skyguide.utils.SBInfo -import gg.essential.universal.UChat -import gg.essential.universal.UDesktop -import gg.essential.universal.UMinecraft -import gg.essential.universal.wrappers.UPlayer import kotlinx.serialization.json.Json import kotlinx.serialization.serializer import net.minecraft.client.entity.AbstractClientPlayer @@ -38,11 +38,11 @@ class SkyGuideCommand : CommandBase() { override fun processCommand(sender: ICommandSender, args: Array) { if (args.isEmpty()) { - GuiUtils.displayScreen(Config.gui()!!) + Config.openGui() return } when (args[0]) { - "map" -> if(SBInfo.inSkyblock) GuiUtils.displayScreen(MapGui()) + "map" -> if (SBInfo.inSkyblock) GuiUtils.displayScreen(MapGui()) "waypoint" -> { if (args.size < 3) { UChat.chat("${EnumChatFormatting.RED}Please specify the coordinates!") diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt b/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt index c3dac44..55725a0 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt @@ -1,225 +1,123 @@ package dev.dediamondpro.skyguide.config -import dev.dediamondpro.skyguide.SkyGuide +import cc.polyfrost.oneconfig.config.Config +import cc.polyfrost.oneconfig.config.annotations.Dropdown +import cc.polyfrost.oneconfig.config.annotations.HUD +import cc.polyfrost.oneconfig.config.annotations.KeyBind +import cc.polyfrost.oneconfig.config.annotations.NonProfileSpecific +import cc.polyfrost.oneconfig.config.annotations.Slider +import cc.polyfrost.oneconfig.config.annotations.Switch +import cc.polyfrost.oneconfig.config.core.OneColor +import cc.polyfrost.oneconfig.config.core.OneKeyBind +import cc.polyfrost.oneconfig.config.data.Mod +import cc.polyfrost.oneconfig.config.data.ModType +import cc.polyfrost.oneconfig.config.migration.VigilanceMigrator +import cc.polyfrost.oneconfig.libs.universal.UKeyboard +import dev.dediamondpro.skyguide.gui.MapGui import dev.dediamondpro.skyguide.handlers.AssetHandler +import dev.dediamondpro.skyguide.hud.MiniMap +import dev.dediamondpro.skyguide.utils.GuiUtils +import dev.dediamondpro.skyguide.utils.SBInfo import dev.dediamondpro.skyguide.utils.TickDelay -import gg.essential.vigilance.Vigilant -import gg.essential.vigilance.data.Property -import gg.essential.vigilance.data.PropertyType import java.awt.Color -import java.io.File -private val configFile by lazy { - val parent = File("config", "skyguide") - if (!parent.exists() && !parent.mkdirs()) - throw IllegalStateException("Could not create config directory.") - File(parent, "skyguide.toml") -} - -object Config : Vigilant(configFile, SkyGuide.NAME) { +object Config : Config( + Mod("SkyGuide", ModType.SKYBLOCK, VigilanceMigrator("config/skyguide/skyguide.toml")), + "SkyGuide.json" +) { // General - @Property( - type = PropertyType.SELECTOR, + @Dropdown( name = "Texture Quality", description = "The quality of the textures.", options = ["low", "medium", "high"], category = "General" ) + @NonProfileSpecific var textureQuality = 1 - @Property( - type = PropertyType.SWITCH, + @Switch( name = "Keep In Memory", description = "Keep all assets in memory.", category = "General" ) + @NonProfileSpecific var keepAssetsLoaded = true - @Property( - type = PropertyType.SWITCH, + @Switch( name = "Download at launch", description = "Download all assets at launch.", category = "General" ) + @NonProfileSpecific var downloadAtLaunch = false - @Property( - type = PropertyType.SWITCH, + @Switch( name = "Lazy Loading", description = "Load assets as they are needed.", category = "General" ) + @NonProfileSpecific var lazyLoading = true // Map - @Property( - type = PropertyType.DECIMAL_SLIDER, + @KeyBind( + name = "Map Keybind", + description = "The keybind to open the map.", + category = "Map" + ) + var mapKeyBind = OneKeyBind(UKeyboard.KEY_M) + + @Slider( name = "Default Scale", description = "The default scale of the map.", category = "Map", - minF = 0.25f, maxF = 5f + min = 0.25f, max = 5f ) var defaultScale = 2f - @Property( - type = PropertyType.DECIMAL_SLIDER, + @Slider( name = "Player Pointer Size", description = "The size of the player pointer.", category = "Map", - minF = 7f, maxF = 49f + min = 7f, max = 49f ) var mapPointerSize = 14f - @Property( - type = PropertyType.SWITCH, + @Switch( name = "Show MVP Warps", description = "Show MVP warps on the map.", category = "Map", ) var showMVPWarps = true - @Property( - type = PropertyType.SWITCH, + @Switch( name = "Show NPCs", description = "Show npcs on the map.", category = "Map", ) var showNpcs = true - @Property( - type = PropertyType.COLOR, + @cc.polyfrost.oneconfig.config.annotations.Color( allowAlpha = false, name = "Pin Color", description = "The color of the destination pin.", category = "Map" ) - var pinColor = Color.RED + var pinColor = OneColor(Color.RED) // Mini-Map - @Property( - type = PropertyType.SWITCH, - name = "Enable Mini-Map", - description = "Enable the mini-map.", - category = "Mini-Map" - ) - var miniMapEnabled = true - - @Property( - type = PropertyType.SELECTOR, - name = "Mini-Map Location", - description = "The location of the mini-map.", - options = ["Top Left", "Top Right", "Bottom Left", "Bottom Right"], - category = "Mini-Map" - ) - var miniMapLocation = 1 - - @Property( - type = PropertyType.DECIMAL_SLIDER, - name = "Scale", - description = "The scale of the mini-map.", - category = "Mini-Map", - minF = 0.25f, maxF = 5f - ) - var miniMapScale = 0.70f - - @Property( - type = PropertyType.SWITCH, - name = "Rotate With Player", - description = "Rotate the map with the player.", - category = "Mini-Map" - ) - var rotateWithPlayer = true - - @Property( - type = PropertyType.DECIMAL_SLIDER, - name = "Zoom Factor", - description = "The zoom factor of the map.", - minF = 0.25f, maxF = 5f, - category = "Mini-Map" - ) - var mapZoom = 1.5f - - @Property( - type = PropertyType.DECIMAL_SLIDER, - name = "Underground Zoom Multiplier", - description = "The zoom multiplier of the map when underground.", - minF = 0.25f, maxF = 5f, - category = "Mini-Map" - ) - var undergroundMapZoom = 2f - - @Property( - type = PropertyType.SWITCH, - name = "Background", - description = "Whether the map has a background", - category = "Mini-Map" - ) - var background = false - - @Property( - type = PropertyType.COLOR, - name = "Background Color", - description = "The color of the background", + @HUD( + name = "Mini-Map", category = "Mini-Map" ) - var backgroundColor = Color(0, 0, 0) - - @Property( - type = PropertyType.SWITCH, - name = "Show PIOs", - description = "Whether to show points of interests (npcs, portals, ...) on the mini-map.", - category = "Mini-Map" - ) - var showPIOs = true - - @Property( - type = PropertyType.DECIMAL_SLIDER, - name = "Player Pointer Size", - description = "The size of the player pointer.", - minF = 3.5f, maxF = 35f, - category = "Mini-Map" - ) - var miniMapPointerSize = 12f - - @Property( - type = PropertyType.SWITCH, - name = "Show in GUIs", - description = "Show the mini-map in GUIs.", - category = "Mini-Map" - ) - var showInGUIs = false - - @Property( - type = PropertyType.SWITCH, - name = "Show in F3", - description = "Show the mini-map in the F3 screen.", - category = "Mini-Map" - ) - var showInF3 = false - - @Property( - type = PropertyType.SWITCH, - name = "Show in Chat", - description = "Show the mini-map while the chat is opened.", - category = "Mini-Map" - ) - var showInChat = true - - @Property( - type = PropertyType.SWITCH, - name = "Smooth images", - description = "Smooth the images using linear scaling.\nCan reduce flicker of the mini-map on some monitors but might look worse.", - category = "Mini-Map" - ) - var smoothImages = false + val miniMap = MiniMap() // Integration - @Property( - type = PropertyType.SWITCH, + @Switch( name = "Show Skytils Waypoints", description = "Show Skytils waypoints on the map.", category = "Integration", @@ -227,8 +125,7 @@ object Config : Vigilant(configFile, SkyGuide.NAME) { ) var skytilsWaypoints = true - @Property( - type = PropertyType.SWITCH, + @Switch( name = "Show Disabled Skytils Waypoints", description = "Whether to show disabled Skytils waypoints on the map.", category = "Integration", @@ -238,25 +135,12 @@ object Config : Vigilant(configFile, SkyGuide.NAME) { // Hidden - @Property( - type = PropertyType.SWITCH, - category = "Hidden", - name = "Download Assets", - hidden = true - ) var downloadAssets = true - - @Property( - type = PropertyType.SLIDER, - name = "First Launch Version", - category = "Hidden", - hidden = true - ) var firstLaunchVersion = 0 init { initialize() - registerListener("textureQuality") { _: Any -> + addListener("textureQuality") { TickDelay(1) { if (AssetHandler.downloadedAssets) { AssetHandler.updateTextures() @@ -264,5 +148,8 @@ object Config : Vigilant(configFile, SkyGuide.NAME) { } } addDependency("lazyLoading", "keepAssetsLoaded") + registerKeyBind(mapKeyBind) { + if (SBInfo.inSkyblock) GuiUtils.displayScreen(MapGui()) + } } } \ No newline at end of file diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/gui/Button.kt b/src/main/kotlin/dev/dediamondpro/skyguide/gui/Button.kt index cc6699f..9847e33 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/gui/Button.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/gui/Button.kt @@ -1,9 +1,9 @@ package dev.dediamondpro.skyguide.gui +import cc.polyfrost.oneconfig.libs.universal.UGraphics +import cc.polyfrost.oneconfig.libs.universal.UMatrixStack import dev.dediamondpro.skyguide.utils.GuiUtils import dev.dediamondpro.skyguide.utils.RenderUtils -import gg.essential.universal.UGraphics -import gg.essential.universal.UMatrixStack import java.awt.Color import java.util.function.Consumer import kotlin.math.pow diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/gui/MapGui.kt b/src/main/kotlin/dev/dediamondpro/skyguide/gui/MapGui.kt index 472ee18..357632b 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/gui/MapGui.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/gui/MapGui.kt @@ -1,5 +1,10 @@ package dev.dediamondpro.skyguide.gui +import cc.polyfrost.oneconfig.libs.universal.UGraphics +import cc.polyfrost.oneconfig.libs.universal.UMatrixStack +import cc.polyfrost.oneconfig.libs.universal.UResolution +import cc.polyfrost.oneconfig.libs.universal.UScreen +import cc.polyfrost.oneconfig.libs.universal.wrappers.UPlayer import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.handlers.AssetHandler import dev.dediamondpro.skyguide.map.Island @@ -7,16 +12,9 @@ import dev.dediamondpro.skyguide.map.SkyblockMap import dev.dediamondpro.skyguide.map.navigation.Destination import dev.dediamondpro.skyguide.map.navigation.NavigationHandler import dev.dediamondpro.skyguide.utils.* -import gg.essential.universal.UGraphics -import gg.essential.universal.UMatrixStack -import gg.essential.universal.UMinecraft -import gg.essential.universal.UResolution -import gg.essential.universal.UScreen -import gg.essential.universal.wrappers.UPlayer import org.lwjgl.input.Mouse import org.lwjgl.opengl.GL11 import java.awt.Color -import java.net.URLEncoder class MapGui : UScreen() { private var world = SkyblockMap.getCurrentWorld() ?: SkyblockMap.worlds.values.firstOrNull() diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/gui/NpcGui.kt b/src/main/kotlin/dev/dediamondpro/skyguide/gui/NpcGui.kt index dda7ddd..4c578c8 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/gui/NpcGui.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/gui/NpcGui.kt @@ -1,11 +1,11 @@ package dev.dediamondpro.skyguide.gui +import cc.polyfrost.oneconfig.libs.universal.* import dev.dediamondpro.skyguide.map.poi.Npc import dev.dediamondpro.skyguide.utils.GuiUtils import dev.dediamondpro.skyguide.utils.ItemUtils import dev.dediamondpro.skyguide.utils.RenderUtils import dev.dediamondpro.skyguide.utils.roundTo -import gg.essential.universal.* import kotlinx.serialization.json.Json import kotlinx.serialization.serializer import net.minecraft.client.gui.Gui diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/handlers/AssetHandler.kt b/src/main/kotlin/dev/dediamondpro/skyguide/handlers/AssetHandler.kt index 8d5f5f2..35c807a 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/handlers/AssetHandler.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/handlers/AssetHandler.kt @@ -1,14 +1,14 @@ package dev.dediamondpro.skyguide.handlers +import cc.polyfrost.oneconfig.libs.universal.UChat +import cc.polyfrost.oneconfig.libs.universal.UGraphics +import cc.polyfrost.oneconfig.libs.universal.UMinecraft +import cc.polyfrost.oneconfig.libs.universal.utils.ReleasedDynamicTexture +import cc.polyfrost.oneconfig.utils.Multithreading import dev.dediamondpro.skyguide.SkyGuide import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.map.SkyblockMap import dev.dediamondpro.skyguide.utils.* -import gg.essential.api.utils.Multithreading -import gg.essential.universal.UChat -import gg.essential.universal.UGraphics -import gg.essential.universal.UMinecraft -import gg.essential.universal.utils.ReleasedDynamicTexture import net.minecraft.util.EnumChatFormatting import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import net.minecraftforge.fml.common.gameevent.TickEvent diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/handlers/FirstLaunchHandler.kt b/src/main/kotlin/dev/dediamondpro/skyguide/handlers/FirstLaunchHandler.kt index c3c4ecd..c09b238 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/handlers/FirstLaunchHandler.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/handlers/FirstLaunchHandler.kt @@ -1,8 +1,8 @@ package dev.dediamondpro.skyguide.handlers +import cc.polyfrost.oneconfig.libs.universal.UChat import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.utils.SBInfo -import gg.essential.universal.UChat import net.minecraft.util.EnumChatFormatting import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent @@ -18,8 +18,7 @@ class FirstLaunchHandler { "${EnumChatFormatting.YELLOW}To configure SkyGuide please do /skyguide!" ) Config.firstLaunchVersion = 1 - Config.markDirty() - Config.writeData() + Config.save() } } } \ No newline at end of file diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/handlers/KeyBindHandler.kt b/src/main/kotlin/dev/dediamondpro/skyguide/handlers/KeyBindHandler.kt deleted file mode 100644 index b7e1cd8..0000000 --- a/src/main/kotlin/dev/dediamondpro/skyguide/handlers/KeyBindHandler.kt +++ /dev/null @@ -1,35 +0,0 @@ -package dev.dediamondpro.skyguide.handlers - -import dev.dediamondpro.skyguide.SkyGuide -import dev.dediamondpro.skyguide.gui.MapGui -import dev.dediamondpro.skyguide.map.SkyblockMap -import dev.dediamondpro.skyguide.utils.GuiUtils -import dev.dediamondpro.skyguide.utils.SBInfo -import gg.essential.universal.UKeyboard -import net.minecraft.client.settings.KeyBinding -import net.minecraftforge.common.MinecraftForge -import net.minecraftforge.fml.client.registry.ClientRegistry.registerKeyBinding -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent -import net.minecraftforge.fml.common.gameevent.InputEvent.KeyInputEvent - -object KeyBindHandler { - private val keybindings = mapOf( - KeyBinding("Open Map", UKeyboard.KEY_M, SkyGuide.NAME) to { - if (SBInfo.inSkyblock) GuiUtils.displayScreen(MapGui()) - } - ) - - fun init() { - MinecraftForge.EVENT_BUS.register(this) - keybindings.forEach { (keybinding) -> - registerKeyBinding(keybinding) - } - } - - @SubscribeEvent - fun onKeyPressed(event: KeyInputEvent) { - keybindings.forEach { (keybinding, action) -> - if (keybinding.isPressed) action() - } - } -} \ No newline at end of file diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/hud/MiniMap.kt b/src/main/kotlin/dev/dediamondpro/skyguide/hud/MiniMap.kt index 4277584..2f71c9b 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/hud/MiniMap.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/hud/MiniMap.kt @@ -1,41 +1,119 @@ package dev.dediamondpro.skyguide.hud +import cc.polyfrost.oneconfig.config.annotations.Dropdown +import cc.polyfrost.oneconfig.config.annotations.Exclude +import cc.polyfrost.oneconfig.config.annotations.Slider +import cc.polyfrost.oneconfig.config.annotations.Switch +import cc.polyfrost.oneconfig.config.core.OneColor +import cc.polyfrost.oneconfig.hud.BasicHud +import cc.polyfrost.oneconfig.hud.Hud +import cc.polyfrost.oneconfig.libs.universal.* +import cc.polyfrost.oneconfig.libs.universal.wrappers.UPlayer import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.map.Island import dev.dediamondpro.skyguide.map.SkyblockMap import dev.dediamondpro.skyguide.map.Textures import dev.dediamondpro.skyguide.utils.* -import gg.essential.universal.UGraphics -import gg.essential.universal.UMinecraft -import gg.essential.universal.UResolution -import gg.essential.universal.UScreen -import gg.essential.universal.wrappers.UPlayer import net.minecraftforge.client.event.RenderGameOverlayEvent +import net.minecraftforge.fml.common.eventhandler.EventPriority import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import org.lwjgl.opengl.GL11 import kotlin.math.pow -class MiniMap { +class MiniMap : Hud(true, 0f, 0f, 0.7f) { + @Switch( + name = "Rotate With Player", + description = "Rotate the map with the player.", + category = "Mini-Map" + ) + var rotateWithPlayer = true + + @Slider( + name = "Zoom Factor", + description = "The zoom factor of the map.", + min = 0.25f, max = 5f, + category = "Mini-Map" + ) + var mapZoom = 1.5f + + @Slider( + name = "Underground Zoom Multiplier", + description = "The zoom multiplier of the map when underground.", + min = 0.25f, max = 5f, + category = "Mini-Map" + ) + var undergroundMapZoom = 2f + + @Switch( + name = "Background", + description = "Whether the map has a background", + category = "Mini-Map" + ) + var background = false + + @cc.polyfrost.oneconfig.config.annotations.Color( + name = "Background Color", + description = "The color of the background", + category = "Mini-Map" + ) + var backgroundColor = OneColor(0, 0, 0) + + @Switch( + name = "Show PIOs", + description = "Whether to show points of interests (npcs, portals, ...) on the mini-map.", + category = "Mini-Map" + ) + var showPIOs = true + + @Slider( + name = "Player Pointer Size", + description = "The size of the player pointer.", + min = 3.5f, max = 35f, + category = "Mini-Map" + ) + var miniMapPointerSize = 12f + + @Switch( + name = "Smooth images", + description = "Smooth the images using linear scaling. Can reduce flicker of the mini-map on some monitors but might look worse.", + category = "Mini-Map" + ) + var smoothImages = false + + @Exclude private var fadeProgress = 1f + @Exclude private var zoomStart = 1f + + @Exclude private var zoomChange = 0f + + @Exclude private var zoomProgress = 1f + @Exclude private var prevIsland: Island? = null + + @Exclude private var prevImage: Textures? = null - @SubscribeEvent - fun draw(event: RenderGameOverlayEvent.Post) { + @Exclude + private var partialTicks = 0f + + @SubscribeEvent(priority = EventPriority.HIGHEST) + fun draw(event: RenderGameOverlayEvent.Pre) { if (event.type != RenderGameOverlayEvent.ElementType.ALL || !shouldShow()) return - val island = SkyblockMap.getCurrentIsland() ?: return - val scale = Config.miniMapScale - val x = if (Config.miniMapLocation % 2 == 0) 0f else UResolution.scaledWidth - 150f * scale - val y = if (Config.miniMapLocation < 2) 0f else UResolution.scaledHeight - 150f * scale + partialTicks = event.partialTicks + } + + override fun draw(matrices: UMatrixStack?, x: Float, y: Float, scale: Float, example: Boolean) { + val island = SkyblockMap.getCurrentIsland() + ?: if (example) SkyblockMap.getIslandByZone("hub") ?: return else return val image = island.getImage(UPlayer.getPosX().toFloat(), UPlayer.getPosY().toFloat(), UPlayer.getPosZ().toFloat()) - val zoomTarget = if (image.underground) Config.undergroundMapZoom else 1f + val zoomTarget = if (image.underground) undergroundMapZoom else 1f if (prevIsland == island && zoomTarget != zoomStart + zoomChange) { zoomStart += zoomChange * easeInOutQuad(zoomProgress) zoomChange = zoomTarget - zoomStart @@ -47,7 +125,7 @@ class MiniMap { } if (zoomProgress != 1f) zoomProgress += GuiUtils.getHudDeltaTime() / 350f zoomProgress = zoomProgress.coerceAtMost(1f) - val totalScale = scale * Config.mapZoom * (zoomStart + zoomChange * easeInOutQuad(zoomProgress)) + val totalScale = scale * mapZoom * (zoomStart + zoomChange * easeInOutQuad(zoomProgress)) if (island == prevIsland && prevImage != image && fadeProgress == 1f) fadeProgress = 0f if (fadeProgress != 1f) fadeProgress += GuiUtils.getHudDeltaTime() / 350f fadeProgress = fadeProgress.coerceAtMost(1f) @@ -61,11 +139,11 @@ class MiniMap { (150f * scale * UResolution.scaleFactor).toInt(), (150f * scale * UResolution.scaleFactor).toInt() ) - if (Config.background) RenderUtils.drawRect(x, y, 150 * scale, 150 * scale, Config.backgroundColor.rgb) + if (background) RenderUtils.drawRect(x, y, 150 * scale, 150 * scale, backgroundColor.rgb) UGraphics.GL.translate(x + 75.0 * scale, y + 75.0 * scale, 0.0) - if (Config.rotateWithPlayer) { + if (rotateWithPlayer) { UGraphics.GL.rotate( - 180f - UPlayer.getHeadRotation(event.partialTicks), + 180f - UPlayer.getHeadRotation(partialTicks), 0.0f, 0.0f, 1.0f @@ -74,29 +152,29 @@ class MiniMap { if (fadeProgress != 1f && prevImage != null) { UGraphics.color4f(1f, 1f, 1f, 1f - easeInOutQuad(fadeProgress)) prevImage!!.draw( - (island.topX - UPlayer.getOffsetX(event.partialTicks)) * totalScale, - (island.topY - UPlayer.getOffsetY(event.partialTicks)) * totalScale, + (island.topX - UPlayer.getOffsetX(partialTicks)) * totalScale, + (island.topY - UPlayer.getOffsetY(partialTicks)) * totalScale, island.width * totalScale, island.height * totalScale ) } UGraphics.color4f(1f, 1f, 1f, easeInOutQuad(fadeProgress)) image.draw( - (island.topX - UPlayer.getOffsetX(event.partialTicks)) * totalScale, - (island.topY - UPlayer.getOffsetY(event.partialTicks)) * totalScale, + (island.topX - UPlayer.getOffsetX(partialTicks)) * totalScale, + (island.topY - UPlayer.getOffsetY(partialTicks)) * totalScale, island.width * totalScale, island.height * totalScale, - if (Config.smoothImages) GL11.GL_LINEAR else GL11.GL_NEAREST + if (smoothImages) GL11.GL_LINEAR else GL11.GL_NEAREST ) UGraphics.color4f(1f, 1f, 1f, 1f) UGraphics.GL.popMatrix() - if (Config.showPIOs) island.drawPioMiniMap( - x + 75 * scale - UPlayer.getOffsetX(event.partialTicks) * totalScale, - y + 75 * scale - UPlayer.getOffsetY(event.partialTicks) * totalScale, + if (showPIOs) island.drawPioMiniMap( + x + 75 * scale - UPlayer.getOffsetX(partialTicks) * totalScale, + y + 75 * scale - UPlayer.getOffsetY(partialTicks) * totalScale, x + 75.0 * scale, y + 75.0 * scale, totalScale, - Math.toRadians(180.0 + UPlayer.getHeadRotation(event.partialTicks)) + Math.toRadians(180.0 + UPlayer.getHeadRotation(partialTicks)) ) UGraphics.GL.pushMatrix() GL11.glScissor( @@ -107,9 +185,9 @@ class MiniMap { ) UGraphics.GL.translate(x + 75.0 * scale, y + 75.0 * scale, 0.0) UGraphics.disableDepth() - if (!Config.rotateWithPlayer) { + if (!rotateWithPlayer) { UGraphics.GL.rotate( - 180f + UPlayer.getHeadRotation(event.partialTicks), + 180f + UPlayer.getHeadRotation(partialTicks), 0.0f, 0.0f, 1.0f @@ -117,10 +195,10 @@ class MiniMap { } RenderUtils.drawImage( "/assets/skyguide/player.png", - -Config.miniMapPointerSize * scale / 2, - -Config.miniMapPointerSize * scale / 2, - Config.miniMapPointerSize * scale, - Config.miniMapPointerSize * scale + -miniMapPointerSize * scale / 2, + -miniMapPointerSize * scale / 2, + miniMapPointerSize * scale, + miniMapPointerSize * scale ) UGraphics.enableDepth() GL11.glDisable(GL11.GL_SCISSOR_TEST) @@ -131,11 +209,12 @@ class MiniMap { } } - private fun shouldShow(): Boolean { - return Config.miniMapEnabled - && (Config.showInGUIs || UScreen.currentScreen == null || UMinecraft.getMinecraft().ingameGUI.chatGUI.chatOpen) - && (Config.showInChat || !UMinecraft.getMinecraft().ingameGUI.chatGUI.chatOpen) - && (Config.showInF3 || !UMinecraft.getMinecraft().gameSettings.showDebugInfo) + override fun getWidth(scale: Float, example: Boolean): Float { + return 150f * scale + } + + override fun getHeight(scale: Float, example: Boolean): Float { + return 150f * scale } private fun easeInOutQuad(x: Float): Float { diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/listeners/MessageListener.kt b/src/main/kotlin/dev/dediamondpro/skyguide/listeners/MessageListener.kt index b80b1da..1b04307 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/listeners/MessageListener.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/listeners/MessageListener.kt @@ -1,7 +1,7 @@ package dev.dediamondpro.skyguide.listeners +import cc.polyfrost.oneconfig.libs.universal.UScreen import dev.dediamondpro.skyguide.gui.MapGui -import gg.essential.universal.UScreen import net.minecraftforge.client.event.ClientChatReceivedEvent import net.minecraftforge.fml.common.eventhandler.SubscribeEvent diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/map/Island.kt b/src/main/kotlin/dev/dediamondpro/skyguide/map/Island.kt index 619c134..ba93c90 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/map/Island.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/map/Island.kt @@ -1,10 +1,10 @@ package dev.dediamondpro.skyguide.map +import cc.polyfrost.oneconfig.libs.universal.UGraphics import dev.dediamondpro.skyguide.compat.SkytilsCompat import dev.dediamondpro.skyguide.map.navigation.NavigationHandler import dev.dediamondpro.skyguide.map.poi.* import dev.dediamondpro.skyguide.utils.GuiUtils -import gg.essential.universal.UGraphics import kotlin.math.cos import kotlin.math.sin diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/map/navigation/NavigationHandler.kt b/src/main/kotlin/dev/dediamondpro/skyguide/map/navigation/NavigationHandler.kt index 91cdcaa..de539ad 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/map/navigation/NavigationHandler.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/map/navigation/NavigationHandler.kt @@ -1,10 +1,9 @@ package dev.dediamondpro.skyguide.map.navigation +import cc.polyfrost.oneconfig.libs.universal.UChat import dev.dediamondpro.skyguide.map.Island import dev.dediamondpro.skyguide.map.SkyblockMap import dev.dediamondpro.skyguide.map.poi.DestinationPoi -import dev.dediamondpro.skyguide.map.poi.Portal -import gg.essential.universal.UChat import net.minecraft.util.EnumChatFormatting import net.minecraftforge.client.event.RenderWorldLastEvent import net.minecraftforge.event.world.WorldEvent diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/DestinationPoi.kt b/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/DestinationPoi.kt index e9e9b1b..a2858e1 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/DestinationPoi.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/DestinationPoi.kt @@ -1,12 +1,12 @@ package dev.dediamondpro.skyguide.map.poi +import cc.polyfrost.oneconfig.libs.universal.UChat +import cc.polyfrost.oneconfig.libs.universal.UGraphics import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.map.navigation.Destination import dev.dediamondpro.skyguide.map.navigation.NavigationHandler import dev.dediamondpro.skyguide.utils.GuiUtils import dev.dediamondpro.skyguide.utils.RenderUtils -import gg.essential.universal.UChat -import gg.essential.universal.UGraphics import net.minecraft.util.EnumChatFormatting import kotlin.math.pow import kotlin.math.sqrt diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/Npc.kt b/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/Npc.kt index c444131..36c5957 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/Npc.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/Npc.kt @@ -1,10 +1,10 @@ package dev.dediamondpro.skyguide.map.poi +import cc.polyfrost.oneconfig.libs.universal.UDesktop +import cc.polyfrost.oneconfig.libs.universal.UGraphics import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.map.navigation.* import dev.dediamondpro.skyguide.utils.ItemUtils -import gg.essential.universal.UDesktop -import gg.essential.universal.UGraphics import kotlinx.serialization.Serializable import kotlinx.serialization.Transient import java.net.URI diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/PointOfInterest.kt b/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/PointOfInterest.kt index 0d37bb5..937214e 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/PointOfInterest.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/PointOfInterest.kt @@ -1,9 +1,9 @@ package dev.dediamondpro.skyguide.map.poi +import cc.polyfrost.oneconfig.libs.universal.UMinecraft +import cc.polyfrost.oneconfig.libs.universal.UResolution import dev.dediamondpro.skyguide.map.Island import dev.dediamondpro.skyguide.utils.RenderUtils -import gg.essential.universal.UMinecraft -import gg.essential.universal.UResolution import kotlinx.serialization.Serializable import kotlinx.serialization.Transient import kotlin.math.pow diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/Portal.kt b/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/Portal.kt index f9e5745..cb7fadf 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/Portal.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/Portal.kt @@ -1,10 +1,9 @@ package dev.dediamondpro.skyguide.map.poi +import cc.polyfrost.oneconfig.libs.universal.UMinecraft import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.map.navigation.* -import dev.dediamondpro.skyguide.utils.GuiUtils import dev.dediamondpro.skyguide.utils.RenderUtils -import gg.essential.universal.UMinecraft import kotlinx.serialization.Serializable /** diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/SkytilsWaypoint.kt b/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/SkytilsWaypoint.kt index c29c53a..79d2c6e 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/SkytilsWaypoint.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/SkytilsWaypoint.kt @@ -1,11 +1,11 @@ package dev.dediamondpro.skyguide.map.poi +import cc.polyfrost.oneconfig.libs.universal.UGraphics import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.map.Island import dev.dediamondpro.skyguide.map.navigation.Destination import dev.dediamondpro.skyguide.map.navigation.NavigationHandler import dev.dediamondpro.skyguide.utils.RenderUtils -import gg.essential.universal.UGraphics import java.awt.Color class SkytilsWaypoint( diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/utils/GuiUtils.kt b/src/main/kotlin/dev/dediamondpro/skyguide/utils/GuiUtils.kt index 67874ba..d1996db 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/utils/GuiUtils.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/utils/GuiUtils.kt @@ -1,10 +1,9 @@ package dev.dediamondpro.skyguide.utils -import gg.essential.universal.UMinecraft +import cc.polyfrost.oneconfig.libs.universal.UMinecraft import net.minecraft.client.gui.GuiScreen import net.minecraftforge.client.event.GuiScreenEvent import net.minecraftforge.client.event.RenderGameOverlayEvent -import net.minecraftforge.client.event.RenderWorldEvent import net.minecraftforge.fml.common.eventhandler.EventPriority import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import net.minecraftforge.fml.common.gameevent.TickEvent diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/utils/ItemUtils.kt b/src/main/kotlin/dev/dediamondpro/skyguide/utils/ItemUtils.kt index c3be4c2..566d24c 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/utils/ItemUtils.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/utils/ItemUtils.kt @@ -1,6 +1,6 @@ package dev.dediamondpro.skyguide.utils -import gg.essential.universal.UMinecraft +import cc.polyfrost.oneconfig.libs.universal.UMinecraft import net.minecraft.client.renderer.RenderHelper import net.minecraft.init.Items import net.minecraft.item.ItemStack diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/utils/PlayerUtils.kt b/src/main/kotlin/dev/dediamondpro/skyguide/utils/PlayerUtils.kt index 48c2faf..f484acc 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/utils/PlayerUtils.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/utils/PlayerUtils.kt @@ -1,6 +1,6 @@ package dev.dediamondpro.skyguide.utils -import gg.essential.universal.wrappers.UPlayer +import cc.polyfrost.oneconfig.libs.universal.wrappers.UPlayer fun UPlayer.getOffsetX(partialTicks: Float): Float { return (getPrevPosX() + (getPosX() - getPrevPosX()) * partialTicks).toFloat() diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/utils/RenderUtils.kt b/src/main/kotlin/dev/dediamondpro/skyguide/utils/RenderUtils.kt index f70f61a..41a2fc8 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/utils/RenderUtils.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/utils/RenderUtils.kt @@ -1,7 +1,7 @@ package dev.dediamondpro.skyguide.utils +import cc.polyfrost.oneconfig.libs.universal.UGraphics import dev.dediamondpro.skyguide.handlers.AssetHandler -import gg.essential.universal.UGraphics import net.minecraft.client.Minecraft import net.minecraft.client.gui.FontRenderer import net.minecraft.client.gui.Gui @@ -15,7 +15,6 @@ import net.minecraft.util.EnumChatFormatting import net.minecraft.util.MathHelper import net.minecraft.util.ResourceLocation import org.lwjgl.opengl.GL11 -import org.lwjgl.opengl.GL14 import javax.vecmath.Vector3f import kotlin.math.cos import kotlin.math.roundToInt diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/utils/SBInfo.kt b/src/main/kotlin/dev/dediamondpro/skyguide/utils/SBInfo.kt index cc08715..638df08 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/utils/SBInfo.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/utils/SBInfo.kt @@ -1,8 +1,8 @@ package dev.dediamondpro.skyguide.utils +import cc.polyfrost.oneconfig.libs.universal.UMinecraft import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.handlers.AssetHandler -import gg.essential.universal.UMinecraft import kotlinx.serialization.Serializable import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/utils/Waypoint.kt b/src/main/kotlin/dev/dediamondpro/skyguide/utils/Waypoint.kt deleted file mode 100644 index 1f73f2a..0000000 --- a/src/main/kotlin/dev/dediamondpro/skyguide/utils/Waypoint.kt +++ /dev/null @@ -1,32 +0,0 @@ -package dev.dediamondpro.skyguide.utils - -import dev.dediamondpro.skyguide.map.SkyblockMap -import net.minecraft.util.BlockPos -import java.awt.Color - -data class Waypoint( - val zone: String, - val x: Float, - val y: Float, - var color: Int = Color.getHSBColor((Math.random() * 360f).toFloat(), 100f, 100f).rgb -) { - - fun draw(partialTicks: Float) { - if (!shouldDraw()) return - RenderUtils.renderBeaconBeam(BlockPos(getOffsetX().toInt(), 0, getOffsetY().toInt()), color, partialTicks) - } - - private fun getOffsetX(): Float { - val offset = SkyblockMap.getCurrentIsland()?.xOffset ?: 0f - return x - offset - } - - private fun getOffsetY(): Float { - val offset = SkyblockMap.getCurrentIsland()?.yOffset ?: 0f - return y - offset - } - - private fun shouldDraw(): Boolean { - return SkyblockMap.isZoneInWorld(zone) - } -} \ No newline at end of file From d13cac03cf0473042edf9303ebf128eb43416fce Mon Sep 17 00:00:00 2001 From: DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> Date: Wed, 1 Feb 2023 15:06:43 +0100 Subject: [PATCH 2/5] stuff --- .../dev/dediamondpro/skyguide/SkyGuide.kt | 3 +- .../dediamondpro/skyguide/config/Config.kt | 2 +- .../dev/dediamondpro/skyguide/hud/MiniMap.kt | 14 +-- .../dediamondpro/skyguide/map/SkyblockMap.kt | 1 + .../dev/dediamondpro/skyguide/utils/SBInfo.kt | 99 +++---------------- 5 files changed, 24 insertions(+), 95 deletions(-) diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/SkyGuide.kt b/src/main/kotlin/dev/dediamondpro/skyguide/SkyGuide.kt index d0db095..53f2c21 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/SkyGuide.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/SkyGuide.kt @@ -1,5 +1,6 @@ package dev.dediamondpro.skyguide +import cc.polyfrost.oneconfig.events.EventManager import dev.dediamondpro.skyguide.command.SkyGuideCommand import dev.dediamondpro.skyguide.compat.SkytilsCompat import dev.dediamondpro.skyguide.config.Config @@ -30,7 +31,7 @@ object SkyGuide { fun postInitialization(event: FMLPostInitializationEvent) { Config if (Config.downloadAtLaunch) AssetHandler.initialize() - MinecraftForge.EVENT_BUS.register(SBInfo()) + EventManager.INSTANCE.register(SBInfo) MinecraftForge.EVENT_BUS.register(GuiUtils()) MinecraftForge.EVENT_BUS.register(AssetHandler()) MinecraftForge.EVENT_BUS.register(Config.miniMap) diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt b/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt index 55725a0..8d2b11f 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt @@ -113,7 +113,7 @@ object Config : Config( name = "Mini-Map", category = "Mini-Map" ) - val miniMap = MiniMap() + var miniMap = MiniMap() // Integration diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/hud/MiniMap.kt b/src/main/kotlin/dev/dediamondpro/skyguide/hud/MiniMap.kt index 2f71c9b..4b9590d 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/hud/MiniMap.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/hud/MiniMap.kt @@ -1,16 +1,15 @@ package dev.dediamondpro.skyguide.hud -import cc.polyfrost.oneconfig.config.annotations.Dropdown import cc.polyfrost.oneconfig.config.annotations.Exclude import cc.polyfrost.oneconfig.config.annotations.Slider import cc.polyfrost.oneconfig.config.annotations.Switch import cc.polyfrost.oneconfig.config.core.OneColor -import cc.polyfrost.oneconfig.hud.BasicHud import cc.polyfrost.oneconfig.hud.Hud -import cc.polyfrost.oneconfig.libs.universal.* +import cc.polyfrost.oneconfig.libs.universal.UGraphics +import cc.polyfrost.oneconfig.libs.universal.UMatrixStack +import cc.polyfrost.oneconfig.libs.universal.UResolution import cc.polyfrost.oneconfig.libs.universal.wrappers.UPlayer -import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.map.Island import dev.dediamondpro.skyguide.map.SkyblockMap import dev.dediamondpro.skyguide.map.Textures @@ -109,8 +108,7 @@ class MiniMap : Hud(true, 0f, 0f, 0.7f) { } override fun draw(matrices: UMatrixStack?, x: Float, y: Float, scale: Float, example: Boolean) { - val island = SkyblockMap.getCurrentIsland() - ?: if (example) SkyblockMap.getIslandByZone("hub") ?: return else return + val island = SkyblockMap.getCurrentIsland() ?: return val image = island.getImage(UPlayer.getPosX().toFloat(), UPlayer.getPosY().toFloat(), UPlayer.getPosZ().toFloat()) val zoomTarget = if (image.underground) undergroundMapZoom else 1f @@ -220,4 +218,8 @@ class MiniMap : Hud(true, 0f, 0f, 0.7f) { private fun easeInOutQuad(x: Float): Float { return if (x < 0.5f) 2f * x * x else 1f - (-2f * x + 2f).pow(2f) / 2f } + + override fun shouldShow(): Boolean { + return super.shouldShow() && SBInfo.inSkyblock && SkyblockMap.currentIslandAvailable() + } } \ No newline at end of file diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/map/SkyblockMap.kt b/src/main/kotlin/dev/dediamondpro/skyguide/map/SkyblockMap.kt index a83ccfe..a1ae61c 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/map/SkyblockMap.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/map/SkyblockMap.kt @@ -59,6 +59,7 @@ object SkyblockMap { zoneToWorld[zone] = world } } + println("done loading") return true } } catch (e: Exception) { diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/utils/SBInfo.kt b/src/main/kotlin/dev/dediamondpro/skyguide/utils/SBInfo.kt index 638df08..dc9a2f2 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/utils/SBInfo.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/utils/SBInfo.kt @@ -1,93 +1,18 @@ package dev.dediamondpro.skyguide.utils -import cc.polyfrost.oneconfig.libs.universal.UMinecraft -import dev.dediamondpro.skyguide.config.Config +import cc.polyfrost.oneconfig.events.event.LocrawEvent +import cc.polyfrost.oneconfig.libs.eventbus.Subscribe +import cc.polyfrost.oneconfig.utils.hypixel.LocrawUtil import dev.dediamondpro.skyguide.handlers.AssetHandler -import kotlinx.serialization.Serializable -import kotlinx.serialization.decodeFromString -import kotlinx.serialization.json.Json -import net.minecraftforge.client.event.ClientChatReceivedEvent -import net.minecraftforge.event.world.WorldEvent -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent -import net.minecraftforge.fml.common.gameevent.TickEvent -import java.util.* -class SBInfo { - companion object { - var inSkyblock = false - private set - var locraw: LocrawObject? = null - private set - var zone: String = "unknown" - private set +object SBInfo { + val inSkyblock: Boolean + get() = LocrawUtil.INSTANCE?.locrawInfo?.rawGameType == "SKYBLOCK" + val zone: String + get() = LocrawUtil.INSTANCE?.locrawInfo?.gameMode ?: "unknown" - fun onHypixel(): Boolean { - return if (UMinecraft.getMinecraft().theWorld != null && UMinecraft.getMinecraft().thePlayer != null - && UMinecraft.getMinecraft().thePlayer.clientBrand != null - ) { - UMinecraft.getMinecraft().thePlayer.clientBrand.lowercase(Locale.getDefault()).contains("hypixel") - } else false - } + @Subscribe + fun onLocrawEvent(e: LocrawEvent) { + if (inSkyblock && !AssetHandler.downloadedAssets) AssetHandler.initialize() } - - private val json = Json { ignoreUnknownKeys = true } - private var lastSwap = -1L - private var lastLocraw = -1L - - @SubscribeEvent(receiveCanceled = true) - fun onMessage(event: ClientChatReceivedEvent) { - if (!onHypixel()) return - val message = event.message.unformattedText - if (message.startsWith("{") && message.endsWith("}")) { - try { - locraw = json.decodeFromString(message) - if (lastLocraw != -1L && !event.isCanceled) { - event.isCanceled = true - lastLocraw = -1L - } - if (locraw!!.gametype == "SKYBLOCK") { - inSkyblock = true - if (!AssetHandler.downloadedAssets) AssetHandler.initialize() - zone = locraw!!.mode - } else { - inSkyblock = false - } - } catch (e: Exception) { - e.printStackTrace() - } - - } - } - - @SubscribeEvent - fun onWorldChange(event: WorldEvent.Unload) { - if (!onHypixel()) { - inSkyblock = false - return - } - if (!Config.keepAssetsLoaded) AssetHandler.unloadAssets() - inSkyblock = false - zone = "unknown" - lastSwap = UMinecraft.getTime() - lastLocraw = -1L - locraw = null - } - - @SubscribeEvent - fun onTick(event: TickEvent.ClientTickEvent) { - if (!onHypixel() || event.phase != TickEvent.Phase.START) return - val currentTime = UMinecraft.getTime() - if (locraw == null && currentTime - lastSwap > 1500 && currentTime - lastLocraw > 20000) { - UMinecraft.getMinecraft().thePlayer.sendChatMessage("/locraw") - lastLocraw = currentTime - } - } -} - -@Serializable -data class LocrawObject( - val server: String, - val gametype: String = "unknown", - val mode: String = "unknown", - val map: String = "unknown" -) \ No newline at end of file +} \ No newline at end of file From 1c2ce59d7f96a6cf12f5d0854c8871a7cd77596c Mon Sep 17 00:00:00 2001 From: DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> Date: Wed, 1 Feb 2023 16:17:30 +0100 Subject: [PATCH 3/5] oneconfig beta 1 --- gradle.properties | 2 +- .../dediamondpro/skyguide/config/Config.kt | 74 +++++++++++-------- .../skyguide/handlers/AssetHandler.kt | 27 +++---- .../skyguide/handlers/FirstLaunchHandler.kt | 13 ++-- .../dev/dediamondpro/skyguide/hud/MiniMap.kt | 40 +++++----- .../map/navigation/DestinationAction.kt | 3 +- .../skyguide/map/navigation/NpcAction.kt | 3 +- .../skyguide/map/navigation/PortalAction.kt | 3 +- .../dev/dediamondpro/skyguide/map/poi/Npc.kt | 1 + .../dediamondpro/skyguide/utils/GuiUtils.kt | 4 +- .../resources/assets/skyguide/downloading.svg | 3 + 11 files changed, 97 insertions(+), 76 deletions(-) create mode 100644 src/main/resources/assets/skyguide/downloading.svg diff --git a/gradle.properties b/gradle.properties index 5b7f06d..5311b63 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_name = SkyGuide mod_id = skyguide -mod_version = 1.2.1 +mod_version = 1.2.1+oneconfig-beta1 essential.defaults.loom=0 diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt b/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt index 8d2b11f..89ee8d1 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt @@ -12,6 +12,7 @@ import cc.polyfrost.oneconfig.config.core.OneKeyBind import cc.polyfrost.oneconfig.config.data.Mod import cc.polyfrost.oneconfig.config.data.ModType import cc.polyfrost.oneconfig.config.migration.VigilanceMigrator +import cc.polyfrost.oneconfig.config.migration.VigilanceName import cc.polyfrost.oneconfig.libs.universal.UKeyboard import dev.dediamondpro.skyguide.gui.MapGui import dev.dediamondpro.skyguide.handlers.AssetHandler @@ -37,26 +38,29 @@ object Config : Config( var textureQuality = 1 @Switch( - name = "Keep In Memory", - description = "Keep all assets in memory.", + name = "Download Assets at launch", + description = "Download all assets at launch.", category = "General" ) + @VigilanceName( name = "Download at Launch", category = "General", subcategory = "") @NonProfileSpecific - var keepAssetsLoaded = true + var downloadAtLaunch = false @Switch( - name = "Download at launch", - description = "Download all assets at launch.", + name = "Keep Assets In Memory", + description = "Keep all assets in memory.", category = "General" ) + @VigilanceName( name = "Keep In Memory", category = "General", subcategory = "") @NonProfileSpecific - var downloadAtLaunch = false + var keepAssetsLoaded = true @Switch( - name = "Lazy Loading", + name = "Lazy Asset Loading", description = "Load assets as they are needed.", category = "General" ) + @VigilanceName( name = "Lazy Loading", category = "General", subcategory = "") @NonProfileSpecific var lazyLoading = true @@ -65,48 +69,53 @@ object Config : Config( @KeyBind( name = "Map Keybind", description = "The keybind to open the map.", - category = "Map" + category = "Map", + size = 2 ) var mapKeyBind = OneKeyBind(UKeyboard.KEY_M) - @Slider( - name = "Default Scale", - description = "The default scale of the map.", + @Switch( + name = "Show NPCs", + description = "Show npcs on the map.", category = "Map", - min = 0.25f, max = 5f + size = 2 ) - var defaultScale = 2f + var showNpcs = true - @Slider( - name = "Player Pointer Size", - description = "The size of the player pointer.", - category = "Map", - min = 7f, max = 49f - ) - var mapPointerSize = 14f @Switch( name = "Show MVP Warps", description = "Show MVP warps on the map.", category = "Map", + size = 2 ) var showMVPWarps = true - @Switch( - name = "Show NPCs", - description = "Show npcs on the map.", - category = "Map", - ) - var showNpcs = true - @cc.polyfrost.oneconfig.config.annotations.Color( allowAlpha = false, name = "Pin Color", description = "The color of the destination pin.", - category = "Map" + category = "Map", + size = 2 ) var pinColor = OneColor(Color.RED) + @Slider( + name = "Default Scale", + description = "The default scale of the map.", + category = "Map", + min = 0.25f, max = 5f + ) + var defaultScale = 2f + + @Slider( + name = "Player Pointer Size", + description = "The size of the player pointer.", + category = "Map", + min = 7f, max = 49f + ) + var mapPointerSize = 14f + // Mini-Map @HUD( @@ -121,7 +130,8 @@ object Config : Config( name = "Show Skytils Waypoints", description = "Show Skytils waypoints on the map.", category = "Integration", - subcategory = "Skytils" + subcategory = "Skytils", + size = 2 ) var skytilsWaypoints = true @@ -129,13 +139,17 @@ object Config : Config( name = "Show Disabled Skytils Waypoints", description = "Whether to show disabled Skytils waypoints on the map.", category = "Integration", - subcategory = "Skytils" + subcategory = "Skytils", + size = 2 ) var disabledSkytilsWaypoints = false // Hidden + @NonProfileSpecific var downloadAssets = true + + @NonProfileSpecific var firstLaunchVersion = 0 init { diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/handlers/AssetHandler.kt b/src/main/kotlin/dev/dediamondpro/skyguide/handlers/AssetHandler.kt index 35c807a..241b676 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/handlers/AssetHandler.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/handlers/AssetHandler.kt @@ -1,15 +1,18 @@ package dev.dediamondpro.skyguide.handlers -import cc.polyfrost.oneconfig.libs.universal.UChat import cc.polyfrost.oneconfig.libs.universal.UGraphics import cc.polyfrost.oneconfig.libs.universal.UMinecraft import cc.polyfrost.oneconfig.libs.universal.utils.ReleasedDynamicTexture +import cc.polyfrost.oneconfig.renderer.asset.Icon import cc.polyfrost.oneconfig.utils.Multithreading +import cc.polyfrost.oneconfig.utils.Notifications import dev.dediamondpro.skyguide.SkyGuide import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.map.SkyblockMap -import dev.dediamondpro.skyguide.utils.* -import net.minecraft.util.EnumChatFormatting +import dev.dediamondpro.skyguide.utils.IOUtils +import dev.dediamondpro.skyguide.utils.NetworkUtils +import dev.dediamondpro.skyguide.utils.WebAsset +import dev.dediamondpro.skyguide.utils.toFile import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import net.minecraftforge.fml.common.gameevent.TickEvent import net.minecraftforge.fml.common.gameevent.TickEvent.RenderTickEvent @@ -18,6 +21,7 @@ import java.io.IOException import java.net.URL import java.nio.file.Files import java.nio.file.StandardCopyOption +import java.util.concurrent.Callable import java.util.concurrent.CompletableFuture import java.util.concurrent.ConcurrentHashMap import javax.imageio.ImageIO @@ -37,18 +41,11 @@ class AssetHandler { currentFile = 0 currentPercent = 0f if (UMinecraft.getWorld() == null) return - postMessage() - } - - private fun postMessage() { - val percent = (currentFile.toFloat() + currentPercent) / totalFiles.toFloat() - if (percent == 1f) { - UChat.chat("${EnumChatFormatting.DARK_AQUA}${SkyGuide.NAME} > ${EnumChatFormatting.YELLOW}Finished downloading assets!") - downloadedAssets = true - } else { - UChat.chat("${EnumChatFormatting.DARK_AQUA}${SkyGuide.NAME} > ${EnumChatFormatting.YELLOW}Downloading assets... ${(percent * 100).toInt()}% ($currentFile/$totalFiles)") - TickDelay(20, AssetHandler::postMessage) - } + Notifications.INSTANCE.send( + "Downloading Assets", + "SkyGuide by DeDiamondPro", + Icon("/assets/skyguide/downloading.svg"), + Callable { (currentFile.toFloat() + currentPercent) / totalFiles.toFloat() }) } fun loadAsset(fileName: String): Boolean { diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/handlers/FirstLaunchHandler.kt b/src/main/kotlin/dev/dediamondpro/skyguide/handlers/FirstLaunchHandler.kt index c09b238..5c90104 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/handlers/FirstLaunchHandler.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/handlers/FirstLaunchHandler.kt @@ -1,9 +1,8 @@ package dev.dediamondpro.skyguide.handlers -import cc.polyfrost.oneconfig.libs.universal.UChat +import cc.polyfrost.oneconfig.utils.Notifications import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.utils.SBInfo -import net.minecraft.util.EnumChatFormatting import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent @@ -11,11 +10,11 @@ class FirstLaunchHandler { @SubscribeEvent fun clientTickEvent(e: ClientTickEvent) { if (Config.firstLaunchVersion != 1 && SBInfo.inSkyblock) { - UChat.chat( - "${EnumChatFormatting.YELLOW}Thank you for installing SkyGuide!" + - "\n${EnumChatFormatting.YELLOW}SkyGuide provides a neat mini-map" + - "\n${EnumChatFormatting.YELLOW}and a full map you can open by pressing m!\n" + - "${EnumChatFormatting.YELLOW}To configure SkyGuide please do /skyguide!" + Notifications.INSTANCE.send( + "Thank you for installing SkyGuide!", + "Press '${Config.mapKeyBind.display}' to open the map!\nDo '/skyguide' to configure skyguide!", + 10000f, + Runnable { Config.openGui() } ) Config.firstLaunchVersion = 1 Config.save() diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/hud/MiniMap.kt b/src/main/kotlin/dev/dediamondpro/skyguide/hud/MiniMap.kt index daaf159..e74e2e1 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/hud/MiniMap.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/hud/MiniMap.kt @@ -9,7 +9,9 @@ import cc.polyfrost.oneconfig.hud.Hud import cc.polyfrost.oneconfig.libs.universal.UGraphics import cc.polyfrost.oneconfig.libs.universal.UMatrixStack import cc.polyfrost.oneconfig.libs.universal.UResolution +import cc.polyfrost.oneconfig.libs.universal.UScreen import cc.polyfrost.oneconfig.libs.universal.wrappers.UPlayer +import dev.dediamondpro.skyguide.gui.MapGui import dev.dediamondpro.skyguide.map.Island import dev.dediamondpro.skyguide.map.SkyblockMap import dev.dediamondpro.skyguide.map.Textures @@ -20,7 +22,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import org.lwjgl.opengl.GL11 import kotlin.math.pow -class MiniMap : Hud(true, 0f, 0f, 0.7f) { +class MiniMap : Hud(true, 0f, 1815f, 0.7f) { @Switch( name = "Rotate With Player", description = "Rotate the map with the player.", @@ -28,21 +30,12 @@ class MiniMap : Hud(true, 0f, 0f, 0.7f) { ) var rotateWithPlayer = true - @Slider( - name = "Zoom Factor", - description = "The zoom factor of the map.", - min = 0.25f, max = 5f, - category = "Mini-Map" - ) - var mapZoom = 1.5f - - @Slider( - name = "Underground Zoom Multiplier", - description = "The zoom multiplier of the map when underground.", - min = 0.25f, max = 5f, + @Switch( + name = "Show PIOs", + description = "Whether to show points of interests (npcs, portals, ...) on the mini-map.", category = "Mini-Map" ) - var undergroundMapZoom = 2f + var showPIOs = true @Switch( name = "Background", @@ -58,12 +51,21 @@ class MiniMap : Hud(true, 0f, 0f, 0.7f) { ) var backgroundColor = OneColor(0, 0, 0) - @Switch( - name = "Show PIOs", - description = "Whether to show points of interests (npcs, portals, ...) on the mini-map.", + @Slider( + name = "Zoom Factor", + description = "The zoom factor of the map.", + min = 0.25f, max = 5f, category = "Mini-Map" ) - var showPIOs = true + var mapZoom = 1.5f + + @Slider( + name = "Underground Zoom Multiplier", + description = "The zoom multiplier of the map when underground.", + min = 0.25f, max = 5f, + category = "Mini-Map" + ) + var undergroundMapZoom = 2f @Slider( name = "Player Pointer Size", @@ -220,6 +222,6 @@ class MiniMap : Hud(true, 0f, 0f, 0.7f) { } override fun shouldShow(): Boolean { - return super.shouldShow() && SBInfo.inSkyblock && SkyblockMap.currentIslandAvailable() + return super.shouldShow() && SBInfo.inSkyblock && SkyblockMap.currentIslandAvailable() && UScreen.currentScreen !is MapGui } } \ No newline at end of file diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/map/navigation/DestinationAction.kt b/src/main/kotlin/dev/dediamondpro/skyguide/map/navigation/DestinationAction.kt index e20f491..1ebdb73 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/map/navigation/DestinationAction.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/map/navigation/DestinationAction.kt @@ -1,5 +1,6 @@ package dev.dediamondpro.skyguide.map.navigation +import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.utils.RenderUtils import net.minecraft.util.BlockPos import net.minecraft.util.EnumChatFormatting @@ -13,7 +14,7 @@ class DestinationAction(private val destination: Destination) : NavigationAction destination.x.toDouble(), destination.y?.toDouble() ?: 0.0, destination.z.toDouble() - ), Color.RED.rgb, partialTicks + ), Config.pinColor.rgb, partialTicks ) if (destination.y != null) RenderUtils.renderWayPoint( mutableListOf("${EnumChatFormatting.BLUE}${destination.name.replaceFirstChar { it.uppercase() }}"), diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/map/navigation/NpcAction.kt b/src/main/kotlin/dev/dediamondpro/skyguide/map/navigation/NpcAction.kt index bc9f264..e6f4d3f 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/map/navigation/NpcAction.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/map/navigation/NpcAction.kt @@ -1,5 +1,6 @@ package dev.dediamondpro.skyguide.map.navigation +import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.map.poi.Npc import dev.dediamondpro.skyguide.utils.RenderUtils import net.minecraft.util.BlockPos @@ -11,7 +12,7 @@ class NpcAction(private val npc: Npc, private val destination: Destination) : Na override fun drawAction(partialTicks: Float) { RenderUtils.renderBeaconBeam( BlockPos(npc.x.toDouble(), npc.y.toDouble(), npc.z.toDouble()), - Color.RED.rgb, + Config.pinColor.rgb, partialTicks ) RenderUtils.renderWayPoint( diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/map/navigation/PortalAction.kt b/src/main/kotlin/dev/dediamondpro/skyguide/map/navigation/PortalAction.kt index a942e0a..f72ea70 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/map/navigation/PortalAction.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/map/navigation/PortalAction.kt @@ -1,5 +1,6 @@ package dev.dediamondpro.skyguide.map.navigation +import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.map.SkyblockMap import dev.dediamondpro.skyguide.map.poi.Portal import dev.dediamondpro.skyguide.utils.RenderUtils @@ -12,7 +13,7 @@ class PortalAction(private val portal: Portal, private val destination: Destinat override fun drawAction(partialTicks: Float) { RenderUtils.renderBeaconBeam( BlockPos(portal.x.toDouble(), portal.y.toDouble(), portal.z.toDouble()), - Color.RED.rgb, + Config.pinColor.rgb, partialTicks ) RenderUtils.renderWayPoint( diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/Npc.kt b/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/Npc.kt index 36c5957..8d6e099 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/Npc.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/map/poi/Npc.kt @@ -28,6 +28,7 @@ class Npc( } override fun drawIcon(x: Float, y: Float) { + UGraphics.enableDepth() UGraphics.GL.pushMatrix() UGraphics.GL.translate(x - 16, y - 16, 0f) UGraphics.GL.scale(2.0, 2.0, 1.0) diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/utils/GuiUtils.kt b/src/main/kotlin/dev/dediamondpro/skyguide/utils/GuiUtils.kt index d1996db..b5c509c 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/utils/GuiUtils.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/utils/GuiUtils.kt @@ -51,10 +51,12 @@ class GuiUtils { @SubscribeEvent(priority = EventPriority.LOWEST) fun onHudRenderEvent(event: RenderGameOverlayEvent.Post) { if (event.type != RenderGameOverlayEvent.ElementType.ALL) return + prevHudDeltaTime = hudDeltaTime hudDeltaTime = 0L } companion object { + private var prevHudDeltaTime: Long = 0L private var hudDeltaTime: Long = 0L private var guiDeltaTime: Long = 0L private var time = -1L @@ -74,7 +76,7 @@ class GuiUtils { private set fun getHudDeltaTime(): Long { - return hudDeltaTime + return if (hudDeltaTime == 0L) prevHudDeltaTime else hudDeltaTime } fun getGuiDeltaTime(): Long { diff --git a/src/main/resources/assets/skyguide/downloading.svg b/src/main/resources/assets/skyguide/downloading.svg new file mode 100644 index 0000000..4c5a5d0 --- /dev/null +++ b/src/main/resources/assets/skyguide/downloading.svg @@ -0,0 +1,3 @@ + + + From bd5821788d3cf52bd111a8342b1784f93bbe8494 Mon Sep 17 00:00:00 2001 From: DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> Date: Wed, 1 Feb 2023 16:28:10 +0100 Subject: [PATCH 4/5] small fixes --- src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt | 2 +- src/main/kotlin/dev/dediamondpro/skyguide/hud/MiniMap.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt b/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt index 89ee8d1..552c9c4 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt @@ -163,7 +163,7 @@ object Config : Config( } addDependency("lazyLoading", "keepAssetsLoaded") registerKeyBind(mapKeyBind) { - if (SBInfo.inSkyblock) GuiUtils.displayScreen(MapGui()) + if (SBInfo.inSkyblock && enabled) GuiUtils.displayScreen(MapGui()) } } } \ No newline at end of file diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/hud/MiniMap.kt b/src/main/kotlin/dev/dediamondpro/skyguide/hud/MiniMap.kt index e74e2e1..5155a4f 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/hud/MiniMap.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/hud/MiniMap.kt @@ -22,7 +22,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import org.lwjgl.opengl.GL11 import kotlin.math.pow -class MiniMap : Hud(true, 0f, 1815f, 0.7f) { +class MiniMap : Hud(true, 1815f, 0f, 0.7f) { @Switch( name = "Rotate With Player", description = "Rotate the map with the player.", From b8cddc19f4cb0fb5a24f2907574af6f2b78acc0b Mon Sep 17 00:00:00 2001 From: DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> Date: Tue, 28 Feb 2023 18:00:13 +0100 Subject: [PATCH 5/5] add blur to map --- build.gradle.kts | 2 +- src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt | 6 ++++++ src/main/kotlin/dev/dediamondpro/skyguide/gui/MapGui.kt | 5 ++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index e456fc3..b53d2ea 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -65,7 +65,7 @@ dependencies { //modRuntimeOnly("com.github.romangraef:notenoughupdates:30f7cf9e:all") // Basic OneConfig dependencies for legacy versions. See OneConfig example mod for more info - compileOnly("cc.polyfrost:oneconfig-1.8.9-forge:0.2.0-alpha171") // Should not be included in jar + compileOnly("cc.polyfrost:oneconfig-1.8.9-forge:0.2.0-alpha179") // Should not be included in jar // include should be replaced with a configuration that includes this in the jar shade("cc.polyfrost:oneconfig-wrapper-launchwrapper:1.0.0-alpha8") // Should be included in jar diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt b/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt index 552c9c4..08d020a 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/config/Config.kt @@ -100,6 +100,12 @@ object Config : Config( ) var pinColor = OneColor(Color.RED) + @Switch( + name = "Background Blur", + description = "Background blur behind the map. Could cause lag when map is open" + ) + var mapBlur = true + @Slider( name = "Default Scale", description = "The default scale of the map.", diff --git a/src/main/kotlin/dev/dediamondpro/skyguide/gui/MapGui.kt b/src/main/kotlin/dev/dediamondpro/skyguide/gui/MapGui.kt index 357632b..5cfdf93 100644 --- a/src/main/kotlin/dev/dediamondpro/skyguide/gui/MapGui.kt +++ b/src/main/kotlin/dev/dediamondpro/skyguide/gui/MapGui.kt @@ -5,6 +5,7 @@ import cc.polyfrost.oneconfig.libs.universal.UMatrixStack import cc.polyfrost.oneconfig.libs.universal.UResolution import cc.polyfrost.oneconfig.libs.universal.UScreen import cc.polyfrost.oneconfig.libs.universal.wrappers.UPlayer +import cc.polyfrost.oneconfig.utils.gui.BlurScreen import dev.dediamondpro.skyguide.config.Config import dev.dediamondpro.skyguide.handlers.AssetHandler import dev.dediamondpro.skyguide.map.Island @@ -16,7 +17,7 @@ import org.lwjgl.input.Mouse import org.lwjgl.opengl.GL11 import java.awt.Color -class MapGui : UScreen() { +class MapGui : UScreen(), BlurScreen { private var world = SkyblockMap.getCurrentWorld() ?: SkyblockMap.worlds.values.firstOrNull() private val buttons = mutableListOf