Skip to content

Commit 4a04746

Browse files
committed
Merge branch 'master' into mc/1.12
2 parents bbeeb4b + eb45eb9 commit 4a04746

File tree

33 files changed

+428
-357
lines changed

33 files changed

+428
-357
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ bin/*
2020
.project
2121
*/.project
2222

23+
.idea
24+
*/.idea
25+
2326
node_modules/
2427
package-lock.json
2528

BlueMapBukkit/src/main/resources/bluemap-bukkit.conf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,12 @@ maps: [
109109
# Default is enabled
110110
renderEdges: true
111111

112+
# With this set to true, the generated files for this world are compressed using gzip to save A LOT of space.
113+
# Files will be only 5% as big with compression!
114+
# Note: If you are using NGINX or Apache to host your map, you can configure them to serve the compressed files directly.
115+
# This is much better than disabling the compression.
116+
useCompression: true
117+
112118
# HIRES is the high-resolution render of the map. Where you see every block.
113119
hires {
114120
# Defines the size of one map-tile in blocks.

BlueMapCLI/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
dependencies {
22
compile group: 'commons-cli', name: 'commons-cli', version: '1.4'
3-
compile project(':BlueMapCore')
3+
compile project(':BlueMapCommon')
44
}

BlueMapCLI/src/main/java/de/bluecolored/bluemap/cli/BlueMapCLI.java

Lines changed: 53 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,15 @@
4545
import org.apache.commons.cli.Options;
4646
import org.apache.commons.cli.ParseException;
4747
import org.apache.commons.io.FileUtils;
48+
import org.apache.commons.lang3.time.DurationFormatUtils;
4849

50+
import com.flowpowered.math.GenericMath;
4951
import com.flowpowered.math.vector.Vector2i;
5052
import com.google.common.base.Preconditions;
5153

54+
import de.bluecolored.bluemap.common.MapType;
55+
import de.bluecolored.bluemap.common.RenderManager;
56+
import de.bluecolored.bluemap.common.RenderTask;
5257
import de.bluecolored.bluemap.core.config.ConfigManager;
5358
import de.bluecolored.bluemap.core.config.MainConfig;
5459
import de.bluecolored.bluemap.core.config.MainConfig.MapConfig;
@@ -116,7 +121,8 @@ public void renderMaps() throws IOException {
116121
LowresModelManager lowresModelManager = new LowresModelManager(
117122
config.getWebDataPath().resolve(mapConfig.getId()).resolve("lowres"),
118123
new Vector2i(mapConfig.getLowresPointsPerLowresTile(), mapConfig.getLowresPointsPerLowresTile()),
119-
new Vector2i(mapConfig.getLowresPointsPerHiresTile(), mapConfig.getLowresPointsPerHiresTile())
124+
new Vector2i(mapConfig.getLowresPointsPerHiresTile(), mapConfig.getLowresPointsPerHiresTile()),
125+
mapConfig.useGzipCompression()
120126
);
121127

122128
TileRenderer tileRenderer = new TileRenderer(hiresModelManager, lowresModelManager);
@@ -146,6 +152,9 @@ public void renderMaps() throws IOException {
146152
File textureExportFile = config.getWebDataPath().resolve("textures.json").toFile();
147153
resourcePack.saveTextureFile(textureExportFile);
148154

155+
RenderManager renderManager = new RenderManager(config.getRenderThreadCount());
156+
renderManager.start();
157+
149158
for (MapType map : maps.values()) {
150159
Logger.global.logInfo("Rendering map '" + map.getId() + "' ...");
151160
Logger.global.logInfo("Collecting tiles to render...");
@@ -166,15 +175,52 @@ public void renderMaps() throws IOException {
166175
}
167176

168177
if (tiles.isEmpty()) {
169-
Logger.global.logInfo("Render finished!");
170-
return;
178+
continue;
171179
}
172180

173181
Logger.global.logInfo("Starting Render...");
174182
long starttime = System.currentTimeMillis();
175183

176-
RenderTask task = new RenderTask(map, tiles, config.getRenderThreadCount());
177-
task.render();
184+
RenderTask task = new RenderTask("Map-Render: " + map.getName(), map);
185+
task.addTiles(tiles);
186+
task.optimizeQueue();
187+
188+
renderManager.addRenderTask(task);
189+
190+
long lastLogUpdate = System.currentTimeMillis();
191+
long lastSave = lastLogUpdate;
192+
193+
while(!task.isFinished()) {
194+
try {
195+
Thread.sleep(200);
196+
} catch (InterruptedException e) {}
197+
198+
long now = System.currentTimeMillis();
199+
200+
if (lastLogUpdate < now - 10000) { // print update all 10 seconds
201+
lastLogUpdate = now;
202+
long time = task.getActiveTime();
203+
204+
String durationString = DurationFormatUtils.formatDurationWords(time, true, true);
205+
int tileCount = task.getRemainingTileCount() + task.getRenderedTileCount();
206+
double pct = (double)task.getRenderedTileCount() / (double) tileCount;
207+
208+
long ert = (long)((time / pct) * (1d - pct));
209+
String ertDurationString = DurationFormatUtils.formatDurationWords(ert, true, true);
210+
211+
double tps = task.getRenderedTileCount() / (time / 1000.0);
212+
213+
Logger.global.logInfo("Rendered " + task.getRenderedTileCount() + " of " + tileCount + " tiles in " + durationString + " | " + GenericMath.round(tps, 3) + " tiles/s");
214+
Logger.global.logInfo(GenericMath.round(pct * 100, 3) + "% | Estimated remaining time: " + ertDurationString);
215+
}
216+
217+
if (lastSave < now - 5 * 60000) { // save every 5 minutes
218+
lastSave = now;
219+
map.getTileRenderer().save();
220+
}
221+
}
222+
223+
map.getTileRenderer().save();
178224

179225
try {
180226
webSettings.set(starttime, map.getId(), "last-render");
@@ -184,6 +230,8 @@ public void renderMaps() throws IOException {
184230
}
185231
}
186232

233+
renderManager.stop();
234+
187235
Logger.global.logInfo("Waiting for all threads to quit...");
188236
if (!ForkJoinPool.commonPool().awaitQuiescence(30, TimeUnit.SECONDS)) {
189237
Logger.global.logWarning("Some save-threads are taking very long to exit (>30s), they will be ignored.");

BlueMapCLI/src/main/java/de/bluecolored/bluemap/cli/MapType.java

Lines changed: 0 additions & 91 deletions
This file was deleted.

BlueMapCLI/src/main/java/de/bluecolored/bluemap/cli/RenderTask.java

Lines changed: 0 additions & 171 deletions
This file was deleted.

0 commit comments

Comments
 (0)