uNmINeD 0.17.1 – Biomes

New uNmINeD development snapshot is available for download!


  • Added biome based styles (can be turned off)
  • Added styles for savanna, taiga and swamp biomes
  • Added biome support for 1.12 and older Java worlds
  • Added biome support for Bedrock (including the new 3D biomes in 1.18)
  • Added/fixed coarse dirt, podzol, Bedrock planks and some other block styles
  • Added different color for spruce and birch leaves
  • Improved shadow rendering speed
  • Improved Bedrock chunk scanning speed
  • Added features to handle JE/BE block name differences
  • Fixed Bedrock grass plant and grass block styles
  • Fixed Bedrock chunk load errors
  • (CLI) Added --mapsettings="mapsettingsfile.json" parameter to load map settings from file (see the included mapsettings-example.json for example).
Minecraft 1.18 Java world in uNmINeD with biome styles
Minecraft 1.18 Java world in uNmINeD with biome styles

This Post Has 10 Comments

  1. iLoveUnMined

    When copying the coordinates (right clicking, copy coords) if Y is a negative coord it defaults to 256.

    1. megasys

      Nice find, thank you. Fixed in 0.17.3.

  2. atanvard

    Hi, thanks for this great tool! This new version looks amazing!

    But I have some problems using it since the 1.18 update. Now, unmined doesn’t render some regions, or only renders a few random chunks within a region, of any world that has been created before 1.18 and has been optimized and played after the update. But this only happens at the lowest zoom levels: if I increase the zoom, I can see those areas, with chunks appearing or disappearing depending on the zoom level. This happens in all the levels (overworld, nether, end), and mainly affects regions with negative X values.

    In the game, everything is fine, there are no errors in the world.

    I have been using unmined previously for mapping all my worlds without problems.

    When this situation happens, the program also crashes frequently when I move the map to see other areas. Here is the log of the last crash, just in case it helps:

    ReactiveUI.UnhandledErrorException: An object implementing IHandleObservableErrors (often a ReactiveCommand or ObservableAsPropertyHelper) has errored, thereby breaking its observable pipeline. To prevent this, ensure the pipeline does not error, or Subscribe to the ThrownExceptions property of the object in question to handle the erroneous case.
    —> System.InvalidOperationException: Operation ReadSByte is not supported on tag type Int
    at Unmined.Minecraft.Nbt.NbtParserBase.CheckTagType(TagType tagType, String operation)
    at Unmined.Minecraft.Nbt.NbtStreamParser.ReadSByte()
    at Unmined.Level.DataSources.Java.Flattened.FlattenedSectionExtractor.Load(INbtParser parser, IBlockRegistry blockRegistry, IBiomeRegistry biomeRegistry)
    at Unmined.Level.DataSources.Java.Flattened.FlattenedChunkExtractor.g__ReadProps|10_0(c__DisplayClass10_0& )
    at Unmined.Level.DataSources.Java.Flattened.FlattenedChunkExtractor.Load(INbtParser parser, IBlockRegistry blockRegistry, IBiomeRegistry biomeRegistry)
    at Unmined.Level.DataSources.Java.JavaWorldRegion.c__DisplayClass12_0.b__0()
    at System.Threading.Tasks.Task`1.InnerInvoke()
    at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
    — End of stack trace from previous location —
    at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
    — End of stack trace from previous location —
    at Unmined.Level.DataSources.Java.JavaWorldRegion.LoadChunkData(ChunkPoint chunkPoint, CancellationToken ctsToken)
    at Unmined.Level.DataSources.Java.JavaWorldRegion.GetChunk(ChunkPoint chunkPoint, CancellationToken ctsToken)
    at Unmined.Project.WorkspaceMap.GetSliceAt(BlockPoint blockPoint)
    at Unmined.AvaloniaApp.Screens.Map.MapViewModel.c__DisplayClass136_0.<b__4>d.MoveNext()
    — End of inner exception stack trace —
    at ReactiveUI.RxApp.c__DisplayClass9_0.b__2() in /_/src/ReactiveUI/RxApp.cs:line 109
    at System.Reactive.Concurrency.Scheduler.Invoke(Action action) in /_/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Simple.cs:line 253
    at System.Reactive.Concurrency.Scheduler.c.b__74_0(IScheduler _, Action a) in /_/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Simple.cs:line 37
    at Avalonia.Threading.AvaloniaScheduler.c__DisplayClass4_1`1.b__1() in /_/src/Avalonia.Base/Threading/AvaloniaScheduler.cs:line 45
    at Avalonia.Threading.JobRunner.RunJobs(Nullable`1 priority) in /_/src/Avalonia.Base/Threading/JobRunner.cs:line 37
    at Avalonia.Win32.Win32Platform.WndProc(IntPtr hWnd, UInt32 msg, IntPtr wParam, IntPtr lParam) in /_/src/Windows/Avalonia.Win32/Win32Platform.cs:line 278
    at Avalonia.Win32.Interop.UnmanagedMethods.DispatchMessage(MSG& lpmsg)
    at Avalonia.Win32.Win32Platform.RunLoop(CancellationToken cancellationToken) in /_/src/Windows/Avalonia.Win32/Win32Platform.cs:line 205
    at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken) in /_/src/Avalonia.Base/Threading/Dispatcher.cs:line 61
    at Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(String[] args) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 126
    at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 175
    at Unmined.AvaloniaApp.Program.Main(String[] args)

    1. megasys

      Fixed in 0.17.2, thank you for the detailed report

      1. atanvard

        It works perfectly now, I can map all the world now! Many thanks!!!

  3. xWuss

    Great work, but I’m getting an Exception with an Java Edition 1.18 world.
    It worked the for the first few days of the server (with uNmINed 0.16.4) but since then I’m getting this error everytime I try to rende the map (using the linux cli version):

    [13:38:46 INF] (main) uNmINeD command line interface v0.17.1-dev
    [13:38:46 INF] (main) Platform: .NETCoreApp,Version=v6.0 (.NET 6.0.0-rtm.21522.10) on Linux 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30)
    [13:38:46 INF] (main) Architecture: X64, threads: 8, 64 bit: True
    [13:38:46 INF] (Web) World path: /var/www/mc.poebel.net/mc/server/world/
    [13:38:46 INF] (Web) Dimension: minecraft:overworld
    [13:38:47 INF] (JsLoader) Loading JS file /var/www/mc.poebel.net/mc/unmined/Metapacks/Default/tags.default.js
    [13:38:47 INF] (JsLoader) Loading JS file /var/www/mc.poebel.net/mc/unmined/Stylesheets/Default/stylesheet.js
    [13:38:48 INF] (Web) World name: poebel’s Minecraft World
    [13:38:48 INF] (Web) World seed: -4769311554846635605
    [13:38:48 INF] (Web) World type: Java
    [13:38:48 INF] (Web) World version name: 1.18.1
    [13:38:48 INF] (Web) World version id: 2865
    [13:38:48 INF] (Web) World data version: 2865
    [13:38:48 INF] (Web) World size: 10240 x 10752 blocks
    [13:38:48 INF] (Web) World rectangle: r(-8, -12, 20, 21)
    [13:38:48 INF] (Web) World region count: 100
    [13:38:48 INF] (Web)
    [13:38:48 INF] (Web) Output path: /var/www/mc.poebel.net/htdocs/unmined/overworld/
    [13:38:48 INF] (Web) Output image format: JPEG
    [13:38:48 INF] (Web) Tile size: 256
    [13:38:48 INF] (Web) Rendering changed tiles only
    [13:38:48 INF] (Web)
    [13:38:48 INF] (Web) Selected rectangle: r(-8, -12, 20, 21)
    [13:38:48 INF] (Web) Selected region count: 100
    [13:38:48 INF] (Web) Selected zoom range: -6 to 0
    [13:38:48 INF] (Web)
    [13:38:48 INF] (Web) Generating HTML
    [13:38:48 INF] (Web)
    [13:38:48 INF] (Web) Rendering zoom level 0
    [13:38:48 INF] (Web) Tile count: 400
    Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
    at Unmined.Core.Tiles.TileStore`2.GetTileMetadataAsync(IntPoint tilePoint)
    at Unmined.WebExport.WebMapExport.RunAsync(CancellationToken ctsToken, IProgressHandler progressHandler)
    at Unmined.Cmd.Web.WebRenderer.RunAsync()
    at Unmined.Cmd.Web.WebModule.c__DisplayClass8_1.<b__3>d.MoveNext()
    — End of stack trace from previous location —
    at Unmined.Cmd.Web.WebModule.RunAsync(String[] args)
    at Unmined.Cmd.ModuleManager.RunAsync(String[] args)
    at Unmined.Cmd.Program.Main(String[] args)
    at Unmined.Cmd.Program.(String[] args)

    1. megasys

      Fixed, thank you!

      1. xWuss

        Thank you very much, works like a charm now!

  4. Delvin4519

    Can water color also be configurable for biome colors with the stylesheet setting, since ocean biomes have different water colors?

    1. megasys

      0.17.3 has biome styles for normal/warm/cold oceans.
      More can be added in stylesheet.js.

Leave a Reply