diff --git a/common/src/main/java/de/bluecolored/bluemap/common/WebFilesManager.java b/common/src/main/java/de/bluecolored/bluemap/common/WebFilesManager.java index e8c49361..e9db5ec3 100644 --- a/common/src/main/java/de/bluecolored/bluemap/common/WebFilesManager.java +++ b/common/src/main/java/de/bluecolored/bluemap/common/WebFilesManager.java @@ -141,8 +141,8 @@ private static class Settings { private int lowresSliderDefault = 2000; private int lowresSliderMin = 500; - private String mapDataRoot = "maps/"; - private String liveDataRoot = "maps/"; + private String mapDataRoot = "maps"; + private String liveDataRoot = "maps"; private Set maps = new HashSet<>(); private Set scripts = new HashSet<>(); diff --git a/common/src/main/java/de/bluecolored/bluemap/common/config/WebappConfig.java b/common/src/main/java/de/bluecolored/bluemap/common/config/WebappConfig.java index d801fdd2..c61ba42d 100644 --- a/common/src/main/java/de/bluecolored/bluemap/common/config/WebappConfig.java +++ b/common/src/main/java/de/bluecolored/bluemap/common/config/WebappConfig.java @@ -60,11 +60,12 @@ public class WebappConfig { private int lowresSliderDefault = 2000; private int lowresSliderMin = 500; - private String mapDataRoot = "maps/"; - private String liveDataRoot = "maps/"; + private String mapDataRoot = "maps"; + private String liveDataRoot = "maps"; private Set scripts = new HashSet<>(); private Set styles = new HashSet<>(); + public boolean isEnabled() { return enabled; } diff --git a/common/src/main/resources/de/bluecolored/bluemap/config/webapp.conf b/common/src/main/resources/de/bluecolored/bluemap/config/webapp.conf index 3eee6d5c..161d3b23 100644 --- a/common/src/main/resources/de/bluecolored/bluemap/config/webapp.conf +++ b/common/src/main/resources/de/bluecolored/bluemap/config/webapp.conf @@ -58,6 +58,14 @@ lowres-slider-max: 7000 lowres-slider-default: 2000 lowres-slider-min: 500 +# Here you can specify an alternative base url from where all map data is loaded. +# Default is "maps" +#map-data-root: "https://cdn.my-domain.com/mapdata/" + +# Here you can specify an alternative base url from where all live data is loaded. +# Default is "maps" +#live-data-root: "https://cdn.my-domain.com/livedata/" + # Here you can add URLs to custom scripts (js) so they will be loaded by the webapp # You can place them somewhere in bluemap's webroot and add the (relative) link here scripts: [ @@ -69,11 +77,3 @@ scripts: [ styles: [ #"css/my-custom-style.css" ] - -# Here you can specify an alternative base url from where all map data is loaded. -# Default is "maps/" -#map-data-root: "https://cdn.my-domain.com/mapdata/" - -# Here you can specify an alternative base url from where all live data is loaded. -# Default is "maps/" -#live-data-root: "https://cdn.my-domain.com/livedata/" diff --git a/common/webapp/src/js/BlueMapApp.js b/common/webapp/src/js/BlueMapApp.js index 0e692efb..f3fcce5b 100644 --- a/common/webapp/src/js/BlueMapApp.js +++ b/common/webapp/src/js/BlueMapApp.js @@ -300,7 +300,7 @@ export class BlueMapApp { // create maps if (settings.maps !== undefined){ let loadingPromises = settings.maps.map(mapId => { - let map = new BlueMapMap(mapId, settings.mapDataRoot + mapId + "/", settings.liveDataRoot + mapId + "/", this.loadBlocker, this.mapViewer.events); + let map = new BlueMapMap(mapId, settings.mapDataRoot + "/" + mapId + "/", settings.liveDataRoot + "/" + mapId + "/", this.loadBlocker, this.mapViewer.events); maps.push(map); return map.loadSettings(this.mapViewer.tileCacheHash) @@ -324,7 +324,32 @@ export class BlueMapApp { async getSettings() { if (!this.settings){ - this.settings = await this.loadSettings(); + let loaded = await this.loadSettings(); + this.settings = { + version: "?", + useCookies: false, + enableFreeFlight: true, + defaultToFlatView: false, + resolutionDefault: 1.0, + minZoomDistance: 5, + maxZoomDistance: 100000, + hiresSliderMax: 500, + hiresSliderDefault: 100, + hiresSliderMin: 0, + lowresSliderMax: 7000, + lowresSliderDefault: 2000, + lowresSliderMin: 500, + mapDataRoot: "maps", + liveDataRoot: "maps", + maps: [ + "world", + "world_the_end", + "world_nether" + ], + scripts: [], + styles: [], + ...loaded + }; } return this.settings; @@ -353,7 +378,7 @@ export class BlueMapApp { return new Promise((resolve, reject) => { let loader = new FileLoader(); loader.setResponseType("json"); - loader.load(map.data.liveDataRoot + "live/players.json?" + generateCacheHash(), + loader.load(map.data.liveDataRoot + "/live/players.json?" + generateCacheHash(), fileData => { if (!fileData) reject(`Failed to parse '${this.fileUrl}'!`); else resolve(fileData); @@ -371,7 +396,7 @@ export class BlueMapApp { const map = this.mapViewer.map; if (!map) return; - this.playerMarkerManager = new PlayerMarkerManager(this.mapViewer.markers, map.data.liveDataRoot + "live/players.json", map.data.mapDataRoot + "assets/playerheads/", this.events); + this.playerMarkerManager = new PlayerMarkerManager(this.mapViewer.markers, map.data.liveDataRoot + "/live/players.json", map.data.mapDataRoot + "assets/playerheads/", this.events); this.playerMarkerManager.setAutoUpdateInterval(0); return this.playerMarkerManager.update() .then(() => { @@ -390,7 +415,7 @@ export class BlueMapApp { const map = this.mapViewer.map; if (!map) return; - this.markerFileManager = new NormalMarkerManager(this.mapViewer.markers, map.data.liveDataRoot + "live/markers.json", this.events); + this.markerFileManager = new NormalMarkerManager(this.mapViewer.markers, map.data.liveDataRoot + "/live/markers.json", this.events); return this.markerFileManager.update() .then(() => { this.markerFileManager.setAutoUpdateInterval(1000 * 10); diff --git a/common/webapp/src/js/map/Map.js b/common/webapp/src/js/map/Map.js index 459b7ee4..c7483fee 100644 --- a/common/webapp/src/js/map/Map.js +++ b/common/webapp/src/js/map/Map.js @@ -123,12 +123,12 @@ export class Map { this.hiresMaterial = this.createHiresMaterial(hiresVertexShader, hiresFragmentShader, uniforms, textures); - this.hiresTileManager = new TileManager(new TileLoader(`${this.data.mapDataRoot}tiles/0/`, this.hiresMaterial, this.data.hires, this.loadBlocker, tileCacheHash), this.onTileLoad("hires"), this.onTileUnload("hires"), this.events); + this.hiresTileManager = new TileManager(new TileLoader(`${this.data.mapDataRoot}/tiles/0/`, this.hiresMaterial, this.data.hires, this.loadBlocker, tileCacheHash), this.onTileLoad("hires"), this.onTileUnload("hires"), this.events); this.hiresTileManager.scene.matrixWorldAutoUpdate = false; this.lowresTileManager = []; for (let i = 0; i < this.data.lowres.lodCount; i++) { - this.lowresTileManager[i] = new TileManager(new LowresTileLoader(`${this.data.mapDataRoot}tiles/`, this.data.lowres, i + 1, lowresVertexShader, lowresFragmentShader, uniforms, async () => {}, tileCacheHash), this.onTileLoad("lowres"), this.onTileUnload("lowres"), this.events); + this.lowresTileManager[i] = new TileManager(new LowresTileLoader(`${this.data.mapDataRoot}/tiles/`, this.data.lowres, i + 1, lowresVertexShader, lowresFragmentShader, uniforms, async () => {}, tileCacheHash), this.onTileLoad("lowres"), this.onTileUnload("lowres"), this.events); this.lowresTileManager[i].scene.matrixWorldAutoUpdate = false; }