diff --git a/build.gradle b/build.gradle index 1d6d6c3..7322a23 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.10-SNAPSHOT' + id 'fabric-loom' version '1.14-SNAPSHOT' id 'maven-publish' } @@ -10,20 +10,21 @@ base { archivesName = project.archives_base_name } +loom { + mods { + "amap" { + sourceSet sourceSets.main + } + } +} repositories { - // Add repositories to retrieve artifacts from in here. - // You should only use this when depending on other mods because - // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. - // See https://docs.gradle.org/current/userguide/declaring_repositories.html - // for more information about repositories. maven { url 'https://repo.sleeping.town' } maven { url 'https://maven.parchmentmc.org' } maven { url 'https://maven.terraformersmc.com' } } dependencies { - // To change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings loom.layered() { officialMojangMappings() @@ -32,52 +33,39 @@ dependencies { modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - - modImplementation "com.terraformersmc:modmenu:${project.modmenu_version}" - modImplementation "folk.sisby:surveyor:${project.surveyor_version}" implementation "folk.sisby:kaleido-config:${project.kaleido_version}" + + modCompileOnly "com.terraformersmc:modmenu:${project.modmenu_version}" } processResources { inputs.property "version", project.version inputs.property "minecraft_version", project.minecraft_version - inputs.property "loader_version", project.loader_version - filteringCharset "UTF-8" filesMatching("fabric.mod.json") { - expand "version": project.version, - "minecraft_version": project.minecraft_version, - "loader_version": project.loader_version + expand "version": inputs.properties.version, + "minecraft_version": inputs.properties.minecraft_version } } -def targetJavaVersion = 21 tasks.withType(JavaCompile).configureEach { - // ensure that the encoding is set to UTF-8, no matter what the system default is - // this fixes some edge cases with special characters not displaying correctly - // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html - // If Javadoc is generated, this must be specified in that task too. it.options.encoding = "UTF-8" - if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) { - it.options.release.set(targetJavaVersion) - } + it.options.release = 21 } java { - def javaVersion = JavaVersion.toVersion(targetJavaVersion) - if (JavaVersion.current() < javaVersion) { - toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion) - } - // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task - // if it is present. - // If you remove this line, sources will not be generated. withSourcesJar() + + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 } jar { + inputs.property "archivesName", project.base.archivesName + from("LICENSE") { - rename { "${it}_${project.archivesBaseName}" } + rename { "${it}_${inputs.properties.archivesName}" } } } diff --git a/gradle.properties b/gradle.properties index e7f5604..2cd75c3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://modmuss50.me/fabric.html minecraft_version=1.21.1 -loader_version=0.16.10 +loader_version=0.18.2 parchment_mc_version=1.21.1 parchment_version=2024.11.17 # Mod Properties @@ -12,7 +12,7 @@ maven_group=cc.abbie archives_base_name=amap # Dependencies # check this on https://modmuss50.me/fabric.html -fabric_version=0.115.3+1.21.1 -surveyor_version=1.0.0-alpha.6+1.21 -kaleido_version=0.3.1+1.3.2 +fabric_version=0.116.7+1.21.1 +surveyor_version=1.1.0+1.21 +kaleido_version=0.3.3+1.3.2 modmenu_version=11.0.3 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index a4b76b9..f8e1ee3 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cea7a79..23449a2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index f5feea6..adff685 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright © 2015 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -86,8 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -115,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -173,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -206,15 +203,14 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/gradlew.bat b/gradlew.bat index 9b42019..e509b2d 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,11 +70,10 @@ goto fail :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell diff --git a/src/main/java/cc/abbie/amap/client/AMapClient.java b/src/main/java/cc/abbie/amap/client/AMapClient.java index e60cb5b..0853756 100644 --- a/src/main/java/cc/abbie/amap/client/AMapClient.java +++ b/src/main/java/cc/abbie/amap/client/AMapClient.java @@ -5,6 +5,7 @@ import folk.sisby.surveyor.WorldSummary; import folk.sisby.surveyor.client.SurveyorClientEvents; import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientWorldEvents; import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; @@ -18,7 +19,7 @@ public void onInitializeClient() { WorldSummary.enableTerrain(); WorldSummary.enableLandmarks(); - SurveyorClientEvents.Register.worldLoad(AMap.id("world_load"), MapStorage.INSTANCE); + ClientWorldEvents.AFTER_CLIENT_WORLD_CHANGE.register(MapStorage.INSTANCE::onWorldLoad); SurveyorClientEvents.Register.terrainUpdated(AMap.id("terrain_updated"), MapStorage.INSTANCE); SurveyorClientEvents.Register.landmarksAdded(AMap.id("landmarks_added"), MapStorage.INSTANCE); SurveyorClientEvents.Register.landmarksRemoved(AMap.id("landmarks_removed"), MapStorage.INSTANCE); diff --git a/src/main/java/cc/abbie/amap/client/ChunkRenderer.java b/src/main/java/cc/abbie/amap/client/ChunkRenderer.java index 660645e..cce2e34 100644 --- a/src/main/java/cc/abbie/amap/client/ChunkRenderer.java +++ b/src/main/java/cc/abbie/amap/client/ChunkRenderer.java @@ -20,7 +20,7 @@ import net.minecraft.world.level.material.MapColor; import folk.sisby.surveyor.terrain.LayerSummary; -import folk.sisby.surveyor.terrain.RegionSummary; +import folk.sisby.surveyor.util.RegionPos; import folk.sisby.surveyor.util.RegistryPalette; import java.util.HashMap; @@ -38,8 +38,8 @@ public static void bakeChunk(ChunkPos chunkPos) { // needed for shading // done first to cancel as early as possible (map gets are expensive?) ChunkPos northChunkPos = new ChunkPos(chunkPos.x, chunkPos.z - 1); - ChunkPos northRegionPos = new ChunkPos(RegionSummary.chunkToRegion(northChunkPos.x), RegionSummary.chunkToRegion(northChunkPos.z)); - ChunkPos northRegionRelativePos = new ChunkPos(RegionSummary.regionRelative(northChunkPos.x), RegionSummary.regionRelative(northChunkPos.z)); + ChunkPos northRegionPos = new ChunkPos(RegionPos.chunkToRegion(northChunkPos.x), RegionPos.chunkToRegion(northChunkPos.z)); + ChunkPos northRegionRelativePos = new ChunkPos(RegionPos.regionRelative(northChunkPos.x), RegionPos.regionRelative(northChunkPos.z)); LayerSummary.Raw[][] northTerr = MapStorage.INSTANCE.regions.get(northRegionPos); if (northTerr == null) return; @@ -62,8 +62,8 @@ public static void bakeChunk(ChunkPos chunkPos) { RegistryAccess registryAccess = level.registryAccess(); Registry biomeRegistry = registryAccess.registryOrThrow(Registries.BIOME); - ChunkPos regionPos = new ChunkPos(RegionSummary.chunkToRegion(chunkPos.x), RegionSummary.chunkToRegion(chunkPos.z)); - ChunkPos regionRelativePos = new ChunkPos(RegionSummary.regionRelative(chunkPos.x), RegionSummary.regionRelative(chunkPos.z)); + ChunkPos regionPos = new ChunkPos(RegionPos.chunkToRegion(chunkPos.x), RegionPos.chunkToRegion(chunkPos.z)); + ChunkPos regionRelativePos = new ChunkPos(RegionPos.regionRelative(chunkPos.x), RegionPos.regionRelative(chunkPos.z)); LayerSummary.Raw[][] terr = MapStorage.INSTANCE.regions.get(regionPos); RegistryPalette.ValueView blockPalette = MapStorage.INSTANCE.blockPalettes.get(chunkPos); RegistryPalette.ValueView biomePalette = MapStorage.INSTANCE.biomePalettes.get(chunkPos); diff --git a/src/main/java/cc/abbie/amap/client/MapStorage.java b/src/main/java/cc/abbie/amap/client/MapStorage.java index 033442e..1c33cca 100644 --- a/src/main/java/cc/abbie/amap/client/MapStorage.java +++ b/src/main/java/cc/abbie/amap/client/MapStorage.java @@ -4,33 +4,29 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.Level; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.levelgen.structure.Structure; import folk.sisby.surveyor.WorldSummary; +import folk.sisby.surveyor.client.SurveyorClient; import folk.sisby.surveyor.client.SurveyorClientEvents; import folk.sisby.surveyor.landmark.Landmark; import folk.sisby.surveyor.landmark.WorldLandmarks; import folk.sisby.surveyor.terrain.ChunkSummary; import folk.sisby.surveyor.terrain.LayerSummary; -import folk.sisby.surveyor.terrain.RegionSummary; -import folk.sisby.surveyor.terrain.WorldTerrainSummary; +import folk.sisby.surveyor.util.RegionPos; import folk.sisby.surveyor.util.RegistryPalette; import java.util.BitSet; -import java.util.Collection; import java.util.Map; import java.util.UUID; // mostly copied from https://github.com/HestiMae/hoofprint/blob/777a182f5e0136d8e3b9a5b9c9362fe6dc41ea72/src/main/java/garden/hestia/hoofprint/HoofprintMapStorage.java -public class MapStorage implements SurveyorClientEvents.WorldLoad, SurveyorClientEvents.TerrainUpdated, SurveyorClientEvents.LandmarksAdded, SurveyorClientEvents.LandmarksRemoved { +public class MapStorage implements SurveyorClientEvents.TerrainUpdated, SurveyorClientEvents.LandmarksAdded, SurveyorClientEvents.LandmarksRemoved { public static final MapStorage INSTANCE = new MapStorage(); public Map regions = new Object2ObjectOpenHashMap<>(); @@ -39,45 +35,65 @@ public class MapStorage implements SurveyorClientEvents.WorldLoad, SurveyorClien public Map> landmarks = new Object2ObjectOpenHashMap<>(); @Override - public void onTerrainUpdated(Level level, WorldTerrainSummary terrainSummary, Collection chunks) { - for (ChunkPos pos : chunks) { - ChunkSummary chunk = terrainSummary.get(pos); - if (chunk == null) continue; - LayerSummary.Raw layerSummary = chunk.toSingleLayer(null, null, level.getHeight()); - // empty chunks will return null for toSingleLayer, we don't want this - if (layerSummary == null) layerSummary = new LayerSummary.Raw(new BitSet(256), new int[256], new int[256], new int[256], new int[256], new int[256], new int[256]); - regions.computeIfAbsent( - new ChunkPos(RegionSummary.chunkToRegion(pos.x), RegionSummary.chunkToRegion(pos.z)), - c -> new LayerSummary.Raw[32][32] - )[RegionSummary.regionRelative(pos.x)][RegionSummary.regionRelative(pos.z)] - = layerSummary; - blockPalettes.put(pos, terrainSummary.getBlockPalette(pos)); - biomePalettes.put(pos, terrainSummary.getBiomePalette(pos)); - ChunkRenderer.dirtyChunks.add(pos); + public void onTerrainUpdated(WorldSummary summary, Map chunks) { + var terrainSummary = summary.terrain(); + var level = summary.world(); + if (terrainSummary != null && level != null) { + for (Map.Entry entry : chunks.entrySet()) { + for (ChunkPos pos : entry.getKey().toChunks(entry.getValue())) { + ChunkSummary chunk = terrainSummary.get(pos); + if (chunk == null) continue; + LayerSummary.Raw layerSummary = chunk.toSingleLayer(null, null, level.getHeight()); + // empty chunks will return null for toSingleLayer, we don't want this + if (layerSummary == null) layerSummary = new LayerSummary.Raw(new BitSet(256), new int[256], new int[256], new int[256], new int[256], new int[256], new int[256]); + regions.computeIfAbsent( + new ChunkPos(RegionPos.chunkToRegion(pos.x), RegionPos.chunkToRegion(pos.z)), + c -> new LayerSummary.Raw[32][32] + )[RegionPos.regionRelative(pos.x)][RegionPos.regionRelative(pos.z)] + = layerSummary; + blockPalettes.put(pos, terrainSummary.getBlockPalette(pos)); + biomePalettes.put(pos, terrainSummary.getBiomePalette(pos)); + ChunkRenderer.dirtyChunks.add(pos); + } + } } } - @Override - public void onWorldLoad(ClientLevel clientLevel, WorldSummary summary, LocalPlayer player, Map terrain, Multimap, ChunkPos> structures, Multimap multimap) { + public void onWorldLoad(Minecraft client, ClientLevel level) { regions.clear(); biomePalettes.clear(); blockPalettes.clear(); ChunkRenderer.clear(); - updateLandmarks(summary.landmarks()); - onTerrainUpdated(clientLevel, summary.terrain(), WorldTerrainSummary.toKeys(terrain)); + var summary = WorldSummary.of(level); + if (summary != null) { + var landmarks = summary.landmarks(); + if (landmarks != null) { + updateLandmarks(landmarks); + } + var terrain = summary.terrain(); + if (terrain != null) { + onTerrainUpdated(summary, terrain.bitSet(SurveyorClient.getExploration())); + } + } } @Override - public void onLandmarksAdded(Level level, WorldLandmarks worldLandmarks, Multimap multimap) { - updateLandmarks(worldLandmarks); + public void onLandmarksAdded(WorldSummary summary, Multimap landmarks) { + var worldLandmarks = summary.landmarks(); + if (worldLandmarks != null) { + updateLandmarks(worldLandmarks); + } } @Override - public void onLandmarksRemoved(Level level, WorldLandmarks worldLandmarks, Multimap multimap) { - updateLandmarks(worldLandmarks); + public void onLandmarksRemoved(WorldSummary summary, Multimap landmarks) { + var worldLandmarks = summary.landmarks(); + if (worldLandmarks != null) { + updateLandmarks(worldLandmarks); + } } private void updateLandmarks(WorldLandmarks worldLandmarks) { - landmarks = worldLandmarks.asMap(null); + landmarks = worldLandmarks.asMap(SurveyorClient.getExploration()).rowMap(); } } diff --git a/src/main/java/cc/abbie/amap/client/minimap/InfoRenderer.java b/src/main/java/cc/abbie/amap/client/minimap/InfoRenderer.java index aa5165e..8a19c92 100644 --- a/src/main/java/cc/abbie/amap/client/minimap/InfoRenderer.java +++ b/src/main/java/cc/abbie/amap/client/minimap/InfoRenderer.java @@ -1,26 +1,31 @@ package cc.abbie.amap.client.minimap; +import cc.abbie.amap.client.minimap.config.MinimapConfig; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.FormattedCharSequence; +import net.minecraft.util.Mth; import net.minecraft.world.phys.Vec3; import cc.abbie.amap.client.AMapKeybinds; public class InfoRenderer { - public static boolean showCoordinates = true; - public static boolean showMenuKey = true; - public static int getHeight() { int lineHeight = Minecraft.getInstance().font.lineHeight; int height = 0; - if (showCoordinates) { + if (MinimapConfig.INSTANCE.minimap.showCoordinates.value() != MinimapConfig.Minimap.CoordinatesType.DISABLED) { + height += 2 * lineHeight; + } + if (MinimapConfig.INSTANCE.minimap.showBiome.value()) { height += 2 * lineHeight; } - if (showMenuKey) { + if (MinimapConfig.INSTANCE.minimap.showMenuKey.value()) { height += lineHeight; } @@ -34,20 +39,40 @@ public static void renderInfo(GuiGraphics gui, int centreX, int leftX, int right final int lineHeight = font.lineHeight; int yOffset = y; - if (showCoordinates) { + if (MinimapConfig.INSTANCE.minimap.showCoordinates.value() != MinimapConfig.Minimap.CoordinatesType.DISABLED) { LocalPlayer player = client.player; if (player == null) return; Vec3 eyePos = player.getEyePosition(partialTick); int footPos = (int) player.getPosition(partialTick).y; - gui.drawCenteredString(font, String.format("%+.2f, %+.2f", eyePos.x, eyePos.z), centreX, yOffset, -1); - yOffset += lineHeight; - gui.drawCenteredString(font, String.format("%.2f (%d)", eyePos.y, footPos), centreX, yOffset, -1); - yOffset += lineHeight; + if (MinimapConfig.INSTANCE.minimap.showCoordinates.value() == MinimapConfig.Minimap.CoordinatesType.TYPE1) { + gui.drawCenteredString(font, String.format("%+d, %+d", Mth.floor(eyePos.x), Mth.floor(eyePos.z)), centreX, yOffset, -1); + yOffset += lineHeight; + gui.drawCenteredString(font, String.format("%d", footPos), centreX, yOffset, -1); + yOffset += lineHeight; + } else { + gui.drawCenteredString(font, String.format("%+.2f, %+.2f", eyePos.x, eyePos.z), centreX, yOffset, -1); + yOffset += lineHeight; + gui.drawCenteredString(font, String.format("%.2f (%d)", eyePos.y, footPos), centreX, yOffset, -1); + yOffset += lineHeight; + } + } + + if (MinimapConfig.INSTANCE.minimap.showBiome.value()) { + ClientLevel level = client.level; + LocalPlayer player = client.player; + if (level == null || player == null) return; + + ResourceLocation biomeId = level.getBiome(player.blockPosition()).unwrapKey().orElseThrow().location(); + Component biomeName = Component.translatable("biome.%s.%s".formatted(biomeId.getNamespace(), biomeId.getPath())); + for (FormattedCharSequence infoLine : font.split(biomeName, rightX - leftX)) { + gui.drawCenteredString(font, infoLine, centreX, yOffset, -1); + yOffset += lineHeight; + } } - if (showMenuKey) { + if (MinimapConfig.INSTANCE.minimap.showMenuKey.value()) { Component infoLine = Component.translatable("info.amap.menuKey", AMapKeybinds.OPEN_MINIMAP_CONFIG.getTranslatedKeyMessage()); int textWidth = font.width(infoLine.getVisualOrderText()); gui.drawString(font, infoLine, rightX - textWidth, yOffset, -1); diff --git a/src/main/java/cc/abbie/amap/client/minimap/MinimapHud.java b/src/main/java/cc/abbie/amap/client/minimap/MinimapHud.java index 6d00d93..5f280f3 100644 --- a/src/main/java/cc/abbie/amap/client/minimap/MinimapHud.java +++ b/src/main/java/cc/abbie/amap/client/minimap/MinimapHud.java @@ -45,7 +45,7 @@ public class MinimapHud implements HudRenderCallback { @Override public void onHudRender(GuiGraphics gui, DeltaTracker deltaTracker) { - if (!MinimapConfig.INSTANCE.enable.value()) return; + if (!MinimapConfig.INSTANCE.enable.value() || Minecraft.getInstance().options.hideGui || Minecraft.getInstance().getDebugOverlay().showDebugScreen()) return; float tickDelta = deltaTracker.getGameTimeDeltaPartialTick(false); PoseStack pose = gui.pose(); diff --git a/src/main/java/cc/abbie/amap/client/minimap/config/MinimapConfig.java b/src/main/java/cc/abbie/amap/client/minimap/config/MinimapConfig.java index 44e00a2..cb26629 100644 --- a/src/main/java/cc/abbie/amap/client/minimap/config/MinimapConfig.java +++ b/src/main/java/cc/abbie/amap/client/minimap/config/MinimapConfig.java @@ -37,6 +37,7 @@ public static class Minimap extends Section { public final TrackedValue largeLabel = value(false); public final TrackedValue filtering = value(true); public final TrackedValue showCoordinates = value(CoordinatesType.TYPE2); + public final TrackedValue showBiome = value(true); public final TrackedValue showMenuKey = value(true); public final TrackedValue fontScale = value(Scale.AUTO); public final TrackedValue defaultZoom = value(Zoom.X1_0); diff --git a/src/main/resources/assets/amap/lang/en_us.json b/src/main/resources/assets/amap/lang/en_us.json index 8835134..d46ea03 100644 --- a/src/main/resources/assets/amap/lang/en_us.json +++ b/src/main/resources/assets/amap/lang/en_us.json @@ -3,6 +3,7 @@ "key.amap.worldmap.open": "Open world map", "key.categories.amap.minimap": "AMap minimap", + "key.amap.minimap.config": "Open minimap config", "key.amap.minimap.zoom_out": "Zoom out minimap", "key.amap.minimap.zoom_in": "Zoom in minimap", "key.amap.minimap.toggle_rotation": "Toggle rotation", @@ -32,6 +33,7 @@ "config.amap.option.minimap.largeLabel": "Large Map Label", "config.amap.option.minimap.filtering": "Filtering", "config.amap.option.minimap.showCoordinates": "Show Coordinates", + "config.amap.option.minimap.showBiome": "Show Biome", "config.amap.option.minimap.showMenuKey": "Show MenuKey", "config.amap.option.minimap.fontScale": "Font Scale", "config.amap.option.minimap.defaultZoom": "Default Zoom", diff --git a/src/main/resources/assets/amap/textures/landmark/default.png b/src/main/resources/assets/amap/textures/landmark/default.png deleted file mode 100644 index bb34df4..0000000 Binary files a/src/main/resources/assets/amap/textures/landmark/default.png and /dev/null differ