I hadn't dig enough, but coz generated html uses leafletjs, you can edit included js file and add as many layers as you want. For my world i've added day/night layers and additionall POIs of discovered villages
this is modified unmined.leaflet.js
function Unmined() {
this.map = function (mapId, options, regions) {
var minMapX = options.minRegionX * 512;
var minMapY = options.minRegionZ * 512;
var mapWidth = (options.maxRegionX + 1 - options.minRegionX) * 512;
var mapHeight = (options.maxRegionZ + 1 - options.minRegionZ) * 512;
var zoomOffset = 0 - options.minZoom;
// add here your POIs
var poi_stations = L.layerGroup([
L.marker(map.unproject([0,0], zoomOffset), {icon: L.divIcon({iconSize: 0, html: '<span style="background-color:white">MarkerName</span>'})}),
]);
var unminedLayer = new L.TileLayer.Functional(
function (view) {
var zoom = view.zoom - zoomOffset;
zoomFactor = Math.pow(2, zoom);
var tileSize = 256;
var minTileX = Math.floor(minMapX * zoomFactor / tileSize);
var minTileY = Math.floor(minMapY * zoomFactor / tileSize);
var maxTileX = Math.ceil((minMapX + mapWidth) * zoomFactor / tileSize) - 1;
var maxTileY = Math.ceil((minMapY + mapHeight) * zoomFactor / tileSize) - 1;
var tileX = view.tile.column;
var tileY = view.tile.row;
var tileBlockSize = tileSize / zoomFactor;
var tileBlockPoint = {
x: tileX * tileBlockSize,
z: tileY * tileBlockSize
};
var intersectsWithTile = function (region) {
return (tileBlockPoint.x < (region.x + 1) * 512)
&& (tileBlockPoint.x + tileBlockSize > region.x * 512)
&& (tileBlockPoint.z < (region.z + 1) * 512)
&& (tileBlockPoint.z + tileBlockSize > region.z * 512);
};
if (tileX >= minTileX
&& tileY >= minTileY
&& tileX <= maxTileX
&& tileY <= maxTileY
&& ((regions === undefined) || regions.some(intersectsWithTile))) {
var url = ('day/tiles/zoom.{z}/{xd}/{yd}/tile.{x}.{y}.' + options.imageFormat)
.replace('{z}', zoom)
.replace('{yd}', Math.floor(tileY / 10))
.replace('{xd}', Math.floor(tileX / 10))
.replace('{y}', view.tile.row)
.replace('{x}', view.tile.column);
return url;
}
else
return "tiles/empty." + options.imageFormat;
},
{
detectRetina: false
});
// below is copypasted unminedLayer variable with modified tile path
var unminedLayerNight = new L.TileLayer.Functional(
function (view) {
var zoom = view.zoom - zoomOffset;
zoomFactor = Math.pow(2, zoom);
var tileSize = 256;
var minTileX = Math.floor(minMapX * zoomFactor / tileSize);
var minTileY = Math.floor(minMapY * zoomFactor / tileSize);
var maxTileX = Math.ceil((minMapX + mapWidth) * zoomFactor / tileSize) - 1;
var maxTileY = Math.ceil((minMapY + mapHeight) * zoomFactor / tileSize) - 1;
var tileX = view.tile.column;
var tileY = view.tile.row;
var tileBlockSize = tileSize / zoomFactor;
var tileBlockPoint = {
x: tileX * tileBlockSize,
z: tileY * tileBlockSize
};
var intersectsWithTile = function (region) {
return (tileBlockPoint.x < (region.x + 1) * 512)
&& (tileBlockPoint.x + tileBlockSize > region.x * 512)
&& (tileBlockPoint.z < (region.z + 1) * 512)
&& (tileBlockPoint.z + tileBlockSize > region.z * 512);
};
if (tileX >= minTileX
&& tileY >= minTileY
&& tileX <= maxTileX
&& tileY <= maxTileY
&& ((regions === undefined) || regions.some(intersectsWithTile))) {
var url = ('night/tiles/zoom.{z}/{xd}/{yd}/tile.{x}.{y}.' + options.imageFormat)
.replace('{z}', zoom)
.replace('{yd}', Math.floor(tileY / 10))
.replace('{xd}', Math.floor(tileX / 10))
.replace('{y}', view.tile.row)
.replace('{x}', view.tile.column);
return url;
}
else
return "tiles/empty." + options.imageFormat;
},
{
detectRetina: false
});
var map = L.map(mapId, {
crs: L.CRS.Simple,
minZoom: options.minZoom + zoomOffset,
maxZoom: options.maxZoom + zoomOffset,
layers: [unminedLayer],
maxBoundsViscosity: 1.0
}).setView([0, 0], options.defaultZoom + zoomOffset);
var northWest = map.unproject([minMapX, minMapY], zoomOffset);
var southEast = map.unproject([minMapX + mapWidth, minMapY + mapHeight], zoomOffset);
map.setMaxBounds(new L.LatLngBounds(northWest, southEast));
// defined layers for Day and Night tiles
var baseMaps = {
"Day": unminedLayer,
"Night": unminedLayerNight,
};
// layer for POIs
var overlayMaps = {
"Stations": poi_stations,
};
// add everything to the Map
L.control.layers(baseMaps, overlayMaps).addTo(map);
this.leafletMap = map;
var Position = L.Control.extend({
_container: null,
options: {
position: 'topright'
},
onAdd: function (map) {
var domElement = L.DomUtil.create('div', 'mouseposition');
this._domElement = domElement;
return domElement;
},
updateHTML: function (x, z) {
this._domElement.innerHTML = '<span class="mousepositioncoord">' + x.toLocaleString() + '</span>, <span class="mousepositioncoord">' + z.toLocaleString() + '</span>';
}
});
this.position = new Position();
this.leafletMap.addControl(this.position);
this.leafletMap.addEventListener('mousemove', (event) => {
var p = map.project(event.latlng, zoomOffset);
let x = Math.round(p.x);
let z = Math.round(p.y);
this.position.updateHTML(x, z);
});
}
}
I generated html map. Then edited js file, also moved tiles folder to "day" subdirectory and generated night map in "night" subdirectory.
Seems though support for Java 1.12.2 worlds seems to be getting worse in the latest update.
Just loaded a Java 1.12.2 world into Java 1.17.1 and then loaded the map in uNmINED latest release (0.16.2, Dec. 2 '21).
The left 2 images show the missing block types and the missing elevation tint (every single possible block in game for Java 1.12.2 is there in the first 2 pictures, look at the bottom right). The right one shows the wall where I only loaded a few chunks in Java 1.17.1.
I recently found this tool and it's pretty cool so far. But I'm trying to find documentation on how to use some features and I just can't find anything.
I'm trying to better understand the filter language. I see it takes wildcards so I could do something like cobble* to hide all blocks made with cobblestone. I can also do something like !cobble* to only show all the blocks made with cobblestone. But I can't seem to make an expression where the ! can work on multiple entries. Is there a reference for the filter syntax out there? If the filter syntax can't accept either boolean expressions or creating some sort of group that I can then negate on the whole.
Is there a custom filter syntax reference out there I can read over? If uNmiNeD can't support more than one negated block right now, can I request that as a future feature?
A second question related to the first is how I can change block colors (one block I'm interested in are chests). Is this something that is currently supported? If so, where can I read up on how to do this?
I am having issues getting unMined running on Java with Minecraft 1.18. unMined launches okay but when selecting my world folder it crashes. I attached a snippit of the error log.
But I think the issue lies with the below:
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.ArgumentException: Value does not fall within the expected range.
I've been using wzooff's modified unmined.leaflet.js code to create a map that includes a layer for the Overworld, Nether and End, as well as map markers to tag nether portals on either side. Curious if anyone is able to get these kinds of features working in OpenLayers?
Hi megasys! I'm new to uNmINeD and the thread, so I apologize if this has already been asked.
I was wondering if there is any chance you could add an aarch64 build to your pipeline? I don't know if you already crosscompile, and how difficult your dependencies are making your life, but such a build would be greatly appreciated. Alternatively, is there any way I can help out?
Hi megasys! I'm new to uNmINeD and the thread, so I apologize if this has already been asked.
I was wondering if there is any chance you could add an aarch64 build to your pipeline? I don't know if you already crosscompile, and how difficult your dependencies are making your life, but such a build would be greatly appreciated. Alternatively, is there any way I can help out?
Hi, I have added arm64 builds for Linux and Windows.
An Apple M1 build is also available for macOS.
Hi, I have added arm64 builds for Linux and Windows.
An Apple M1 build is also available for macOS.
Brilliant! Thank you! Can confirm it works like a charm.
To anyone else, if you get errors related to libicui18n, make sure you have at least libicu 53 or newer installed. I had libicu60 available in my package manager, which solved the error below.
Cannot get symbol ucol_setMaxVariable_50 from libicui18n
Error: /lib64/libicui18n.so.50: undefined symbol: ucol_setMaxVariable_50
Aborted
I've been using Unmined for ages and love it! I recently upgraded to 0.18.5 from an older version that doesn't work with Java Minecraft 1.18.1 (may not work with 1.18.0 too) and I am seeing and error that Unmined can't start due to a missing .dll - api-ms-win-crt-runtime-l1-1-0.dll. I've confirmed it's there and repaired the Visual C++ 2015 but no joy. I wasn't able to find this issue in the forum - so I'm sorry if I've missed it. If there's a solution already please direct me.
Unmined can't start due to a missing .dll - api-ms-win-crt-runtime-l1-1-0.dll.
Hi, it looks like you have Windows 7. Install the .NET 6.x Runtime, and download the framework dependent package of uNmINeD (the blue download buttons).
I've been using wzooff's modified unmined.leaflet.js code to create a map that includes a layer for the Overworld, Nether and End, as well as map markers to tag nether portals on either side. Curious if anyone is able to get these kinds of features working in OpenLayers?
Hi. The only thing you can do now, its specify markers that will be permanently visible. Unfortunately, as i understand, openlayers cant dynamically create layers controls and you have to customize your webpage to add this controls.
And if you want to improve readiness for current implementation of markers, you can edit unmined.openlayers.js Lines ~201-L204 to add stroke to marker style:
if (item.text)
style.setText(new ol.style.Text({
text: item.text,
font: item.font,
offsetX: item.offsetX,
offsetY: item.offsetY,
fill: new ol.style.Fill({
color: item.textColor
}),
this section ---> stroke: new ol.style.Stroke({
color: '#fff',
width: 3
})
}));
stroke: new ol.style.Stroke({
color: '#fff',
width: 3
})
I'm using version 18.7 on Ubuntu 21.10 with 8GB of ram. Whenever I try to change the settings or hover over the menus the program exits. I've already opened several maps and I can say that the generated graphics are of great quality and definition, but these crashes are annoying.
Fixed in 0.15.4.
This was a hard one.
This mapping tool is great. Just wondering is there anyway to add POIs to the HTML export?
I hadn't dig enough, but coz generated html uses leafletjs, you can edit included js file and add as many layers as you want. For my world i've added day/night layers and additionall POIs of discovered villages
this is modified unmined.leaflet.js
I generated html map. Then edited js file, also moved tiles folder to "day" subdirectory and generated night map in "night" subdirectory.
I want to thank you for this excellent tool!
On the other hand...
I saw on reddit that someone posted a screenshot, and he mentioned he used Complementary Shaders.
https://preview.redd.it/44u5pqpite281.jpg?width=1460&format=pjpg&auto=webp&s=7b6af7bafa6ba585176e444d85231721e81a471e
Anyone knows how does that work? to get the shaders to show on uNmINeD?
Can that "look" be applied to a bedrock map as well?
Seems though support for Java 1.12.2 worlds seems to be getting worse in the latest update.
Just loaded a Java 1.12.2 world into Java 1.17.1 and then loaded the map in uNmINED latest release (0.16.2, Dec. 2 '21).
The left 2 images show the missing block types and the missing elevation tint (every single possible block in game for Java 1.12.2 is there in the first 2 pictures, look at the bottom right). The right one shows the wall where I only loaded a few chunks in Java 1.17.1.
I recently found this tool and it's pretty cool so far. But I'm trying to find documentation on how to use some features and I just can't find anything.
I'm trying to better understand the filter language. I see it takes wildcards so I could do something like cobble* to hide all blocks made with cobblestone. I can also do something like !cobble* to only show all the blocks made with cobblestone. But I can't seem to make an expression where the ! can work on multiple entries. Is there a reference for the filter syntax out there? If the filter syntax can't accept either boolean expressions or creating some sort of group that I can then negate on the whole.
Is there a custom filter syntax reference out there I can read over? If uNmiNeD can't support more than one negated block right now, can I request that as a future feature?
A second question related to the first is how I can change block colors (one block I'm interested in are chests). Is this something that is currently supported? If so, where can I read up on how to do this?
To change block colors:
1. Open Stylesheets/Default/stylesheet.js
2. Add new lines after the comment "//add your styles here" like this:
b.style("chest").color("#rrggbb");
Color syntax is the same as in HTML.
To set chest color to red:
b.style("chest").color("#ff0000");
You can also use HSL for colors:
b.style("chest").color(0, 100, 50);
Custom filters:
Filter expressions are not yet supported, but it's on the todo list.
Hello.
When I enable night mode I'm unable to see any light, why could this be?
In the image attached, there are a lot of torches inside the red circle but no light is showing in the map.
This is in bedrock 1.18.
Thanks
Good afternoon all
I am having issues getting unMined running on Java with Minecraft 1.18. unMined launches okay but when selecting my world folder it crashes. I attached a snippit of the error log.
But I think the issue lies with the below:
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.ArgumentException: Value does not fall within the expected range.
Is there something that I am doing incorrectly?
Thanks
Unfortunately Bedrock does not save light information, so night mode is Java only.
Shaders are available for Minecraft, but not for uNmINeD.
(uNmINeD is 2D, shaders are 3D.)
This image is created using "shadows" in uNmINeD. Click on the sun toolbar icon, and zoom out to at least 1:1.
I've been using wzooff's modified unmined.leaflet.js code to create a map that includes a layer for the Overworld, Nether and End, as well as map markers to tag nether portals on either side. Curious if anyone is able to get these kinds of features working in OpenLayers?
Hi megasys! I'm new to uNmINeD and the thread, so I apologize if this has already been asked.
I was wondering if there is any chance you could add an aarch64 build to your pipeline? I don't know if you already crosscompile, and how difficult your dependencies are making your life, but such a build would be greatly appreciated. Alternatively, is there any way I can help out?
Hi, I have added arm64 builds for Linux and Windows.
An Apple M1 build is also available for macOS.
Brilliant! Thank you! Can confirm it works like a charm.
To anyone else, if you get errors related to libicui18n, make sure you have at least libicu 53 or newer installed. I had libicu60 available in my package manager, which solved the error below.
Hi Megasys,
I've been using Unmined for ages and love it! I recently upgraded to 0.18.5 from an older version that doesn't work with Java Minecraft 1.18.1 (may not work with 1.18.0 too) and I am seeing and error that Unmined can't start due to a missing .dll - api-ms-win-crt-runtime-l1-1-0.dll. I've confirmed it's there and repaired the Visual C++ 2015 but no joy. I wasn't able to find this issue in the forum - so I'm sorry if I've missed it. If there's a solution already please direct me.
Thanks in advance for your help!
-M
Hi, it looks like you have Windows 7. Install the .NET 6.x Runtime, and download the framework dependent package of uNmINeD (the blue download buttons).
Hi. The only thing you can do now, its specify markers that will be permanently visible. Unfortunately, as i understand, openlayers cant dynamically create layers controls and you have to customize your webpage to add this controls.
And if you want to improve readiness for current implementation of markers, you can edit unmined.openlayers.js Lines ~201-L204 to add stroke to marker style:
its works like a charm for me )
I'm using version 18.7 on Ubuntu 21.10 with 8GB of ram. Whenever I try to change the settings or hover over the menus the program exits. I've already opened several maps and I can say that the generated graphics are of great quality and definition, but these crashes are annoying.
It usually generates an unmined.crashlog.txt file on crash.
Please send me if there is any.