Add tilescale and defaulttilescal : option for bigger tiles

This commit is contained in:
Mike Primm 2022-02-16 21:13:57 -06:00
parent fb0cceca58
commit ee78384cdc
20 changed files with 145 additions and 55 deletions

View File

@ -90,6 +90,7 @@ public class DynmapMapCommands {
mapSetArgs.put("mapzoomin", emptySupplier);
mapSetArgs.put("mapzoomout", emptySupplier);
mapSetArgs.put("boostzoom", emptySupplier);
mapSetArgs.put("tilescale", emptySupplier);
mapSetArgs.put("tileupdatedelay", emptySupplier);
tabCompletions = new HashMap<>();
@ -695,7 +696,7 @@ public class DynmapMapCommands {
sb.append(", lighting=").append(hdmt.getLighting().getName()).append(", mapzoomin=").append(hdmt.getMapZoomIn()).append(", mapzoomout=").append(hdmt.getMapZoomOutLevels());
sb.append(", img-format=").append(hdmt.getImageFormatSetting()).append(", icon=").append(hdmt.getIcon());
sb.append(", append-to-world=").append(hdmt.getAppendToWorld()).append(", boostzoom=").append(hdmt.getBoostZoom());
sb.append(", protected=").append(hdmt.isProtected());
sb.append(", protected=").append(hdmt.isProtected()).append(", tilescale=").append(hdmt.getTileScale());
if(hdmt.tileupdatedelay > 0) {
sb.append(", tileupdatedelay=").append(hdmt.tileupdatedelay);
}
@ -913,6 +914,18 @@ public class DynmapMapCommands {
}
did_update |= mt.setBoostZoom(mzi);
}
else if(tok[0].equalsIgnoreCase("tilescale")) {
int mzi = -1;
try {
mzi = Integer.valueOf(tok[1]);
} catch (NumberFormatException nfx) {
}
if((mzi < 0) || (mzi > 4)) {
sender.sendMessage("Invalid tilescale value: " + tok[1]);
return true;
}
did_update |= mt.setTileScale(mzi);
}
else if(tok[0].equalsIgnoreCase("tileupdatedelay")) {
int tud = -1;
try {

View File

@ -60,6 +60,7 @@ public class MapManager {
private int progressinterval = 100;
private int tileupdatedelay = 30;
private int savependingperiod = 15 * 60; // every 15 minutes, by default
private int defaulttilescale = 0;
private boolean saverestorepending = true;
private boolean pauseupdaterenders = false;
private boolean hideores = false;
@ -190,6 +191,10 @@ public class MapManager {
return tileupdatedelay;
}
public int getDefaultTileScale() {
return defaulttilescale;
}
private static class OurThreadFactory implements ThreadFactory {
@Override
public Thread newThread(Runnable r) {
@ -1147,7 +1152,9 @@ public class MapManager {
if(progressinterval < 100) progressinterval = 100;
saverestorepending = configuration.getBoolean("saverestorepending", true);
tileupdatedelay = configuration.getInteger("tileupdatedelay", 30);
defaulttilescale = configuration.getInteger("defaulttilescale", 0);
if (defaulttilescale < 0) defaulttilescale = 0;
if (defaulttilescale > 4) defaulttilescale = 4;
tpslimit_updaterenders = configuration.getDouble("update-min-tps", 18.0);
if (tpslimit_updaterenders > 19.5) tpslimit_updaterenders = 19.5;
tpslimit_fullrenders = configuration.getDouble("fullrender-min-tps", 18.0);

View File

@ -12,6 +12,7 @@ public abstract class MapTile {
public abstract boolean render(MapChunkCache cache, String mapname);
public abstract List<DynmapChunk> getRequiredChunks();
public abstract MapTile[] getAdjecentTiles();
public abstract int getTileSize();
public DynmapWorld getDynmapWorld() {
return world;

View File

@ -34,6 +34,7 @@ public class HDMap extends MapType {
private MapType.ImageFormat imgformat;
private int bgcolornight;
private int bgcolorday;
private int tilescale;
private String title;
private String icon;
private String bg_cfg;
@ -140,6 +141,9 @@ public class HDMap extends MapType {
this.mapzoomin = configuration.getInteger("mapzoomin", 2);
this.mapzoomout = configuration.getInteger("mapzoomout", this.mapzoomout);
this.boostzoom = configuration.getInteger("boostzoom", 0);
this.tilescale = configuration.getInteger("tilescale", core.getMapManager().getDefaultTileScale()); // 0 = 128, 1 = 256, ...
if (this.tilescale <= 0) this.tilescale = 0;
if (this.tilescale >= 4) this.tilescale = 4; // Limit to 2k x 2k
if(this.boostzoom < 0) this.boostzoom = 0;
if(this.boostzoom > 3) this.boostzoom = 3;
// Map zoom in must be at least as big as boost zoom
@ -167,6 +171,7 @@ public class HDMap extends MapType {
cn.put("mapzoomin", mapzoomin);
cn.put("mapzoomout", mapzoomout);
cn.put("boostzoom", boostzoom);
cn.put("tilescale", tilescale);
if(bg_cfg != null)
cn.put("background", bg_cfg);
if(bg_day_cfg != null)
@ -185,15 +190,17 @@ public class HDMap extends MapType {
public final HDPerspective getPerspective() { return perspective; }
public final HDLighting getLighting() { return lighting; }
public final int getBoostZoom() { return boostzoom; }
public final int getTileSize() { return 128 << tilescale; }
public final int getTileScale() { return tilescale; }
@Override
public List<TileFlags.TileCoord> getTileCoords(DynmapWorld w, int x, int y, int z) {
return perspective.getTileCoords(w, x, y, z);
return perspective.getTileCoords(w, x, y, z, tilescale);
}
@Override
public List<TileFlags.TileCoord> getTileCoords(DynmapWorld w, int minx, int miny, int minz, int maxx, int maxy, int maxz) {
return perspective.getTileCoords(w, minx, miny, minz, maxx, maxy, maxz);
return perspective.getTileCoords(w, minx, miny, minz, maxx, maxy, maxz, tilescale);
}
@Override
@ -270,6 +277,7 @@ public class HDMap extends MapType {
s(o, "mapzoomout", (world.getExtraZoomOutLevels()+mapzoomout));
s(o, "mapzoomin", mapzoomin);
s(o, "boostzoom", boostzoom);
s(o, "tilescale", tilescale);
s(o, "protected", isProtected());
s(o, "image-format", imgformat.getFileExt());
if(append_to_world.length() > 0)
@ -403,6 +411,13 @@ public class HDMap extends MapType {
}
return false;
}
public boolean setTileScale(int mzi) {
if(mzi != this.tilescale) {
this.tilescale = mzi;
return true;
}
return false;
}
public boolean setPerspective(HDPerspective p) {
if(perspective != p) {
perspective = p;
@ -450,7 +465,7 @@ public class HDMap extends MapType {
@Override
public void addMapTiles(List<MapTile> list, DynmapWorld w, int tx, int ty) {
list.add(new HDMapTile(w, this.perspective, tx, ty, boostzoom));
list.add(new HDMapTile(w, this.perspective, tx, ty, boostzoom, tilescale));
}
private static final ImageVariant[] dayVariant = { ImageVariant.STANDARD, ImageVariant.DAY };

View File

@ -12,29 +12,32 @@ public class HDMapTile extends MapTile {
public final HDPerspective perspective;
public final int tx, ty; /* Tile X and Tile Y are in tile coordinates (pixels/tile-size) */
public final int boostzoom;
public final int tilescale;
public HDMapTile(DynmapWorld world, HDPerspective perspective, int tx, int ty, int boostzoom) {
public HDMapTile(DynmapWorld world, HDPerspective perspective, int tx, int ty, int boostzoom, int tilescale) {
super(world);
this.perspective = perspective;
this.tx = tx;
this.ty = ty;
this.boostzoom = boostzoom;
this.tilescale = tilescale;
}
public HDMapTile(DynmapWorld world, String parm) throws Exception {
super(world);
String[] parms = parm.split(",");
if(parms.length < 3) throw new Exception("wrong parameter count");
this.tx = Integer.parseInt(parms[0]);
this.ty = Integer.parseInt(parms[1]);
this.perspective = MapManager.mapman.hdmapman.perspectives.get(parms[2]);
if(this.perspective == null) throw new Exception("invalid perspective");
if(parms.length > 3)
this.boostzoom = Integer.parseInt(parms[3]);
else
this.boostzoom = 0;
}
// public HDMapTile(DynmapWorld world, String parm) throws Exception {
// super(world);
//
// String[] parms = parm.split(",");
// if(parms.length < 3) throw new Exception("wrong parameter count");
// this.tx = Integer.parseInt(parms[0]);
// this.ty = Integer.parseInt(parms[1]);
// this.perspective = MapManager.mapman.hdmapman.perspectives.get(parms[2]);
// if(this.perspective == null) throw new Exception("invalid perspective");
// if(parms.length > 3)
// this.boostzoom = Integer.parseInt(parms[3]);
// else
// this.boostzoom = 0;
// this.tilescale = 0;
// }
@Override
protected String saveTileData() {
@ -63,6 +66,9 @@ public class HDMapTile extends MapTile {
return world.getName() + ":" + perspective.getName() + "," + tx + "," + ty + ":" + boostzoom;
}
@Override
public int getTileSize() { return 128 << tilescale; }
@Override
public boolean isBiomeDataNeeded() { return MapManager.mapman.hdmapman.isBiomeDataNeeded(this); }

View File

@ -14,9 +14,9 @@ public interface HDPerspective {
/* Get name of perspective */
String getName();
/* Get tiles invalidated by change at given location */
List<TileFlags.TileCoord> getTileCoords(DynmapWorld w, int x, int y, int z);
List<TileFlags.TileCoord> getTileCoords(DynmapWorld w, int x, int y, int z, int tilescale);
/* Get tiles invalidated by change at given volume, defined by 2 opposite corner locations */
List<TileFlags.TileCoord> getTileCoords(DynmapWorld w, int minx, int miny, int minz, int maxx, int maxy, int maxz);
List<TileFlags.TileCoord> getTileCoords(DynmapWorld w, int minx, int miny, int minz, int maxx, int maxy, int maxz, int tilescale);
/* Get tiles adjacent to given tile */
MapTile[] getAdjecentTiles(MapTile tile);
/* Get chunks needed for given tile */

View File

@ -63,10 +63,6 @@ public class IsoHDPerspective implements HDPerspective {
/* Scale for default tiles */
private final int basemodscale;
/* dimensions of a map tile */
public static final int tileWidth = 128;
public static final int tileHeight = 128;
/* Maximum and minimum inclinations */
public static final double MAX_INCLINATION = 90.0;
public static final double MIN_INCLINATION = 20.0;
@ -1055,13 +1051,14 @@ public class IsoHDPerspective implements HDPerspective {
}
@Override
public List<TileFlags.TileCoord> getTileCoords(DynmapWorld world, int x, int y, int z) {
public List<TileFlags.TileCoord> getTileCoords(DynmapWorld world, int x, int y, int z, int tilescale) {
HashSet<TileFlags.TileCoord> tiles = new HashSet<TileFlags.TileCoord>();
Vector3D block = new Vector3D();
block.x = x;
block.y = y;
block.z = z;
Vector3D corner = new Vector3D();
int tileSize = 128 << tilescale;
/* Loop through corners of the cube */
for(int i = 0; i < 2; i++) {
double inity = block.y;
@ -1069,7 +1066,7 @@ public class IsoHDPerspective implements HDPerspective {
double initz = block.z;
for(int k = 0; k < 2; k++) {
world_to_map.transform(block, corner); /* Get map coordinate of corner */
tiles.add(new TileFlags.TileCoord(fastFloor(corner.x/tileWidth), fastFloor(corner.y/tileHeight)));
tiles.add(new TileFlags.TileCoord(fastFloor(corner.x/tileSize), fastFloor(corner.y/tileSize)));
block.z += 1;
}
block.z = initz;
@ -1082,7 +1079,7 @@ public class IsoHDPerspective implements HDPerspective {
}
@Override
public List<TileFlags.TileCoord> getTileCoords(DynmapWorld world, int minx, int miny, int minz, int maxx, int maxy, int maxz) {
public List<TileFlags.TileCoord> getTileCoords(DynmapWorld world, int minx, int miny, int minz, int maxx, int maxy, int maxz, int tilescale) {
ArrayList<TileFlags.TileCoord> tiles = new ArrayList<TileFlags.TileCoord>();
Vector3D blocks[] = new Vector3D[] { new Vector3D(), new Vector3D() };
blocks[0].x = minx - 1;
@ -1098,6 +1095,7 @@ public class IsoHDPerspective implements HDPerspective {
int maxtilex = Integer.MIN_VALUE;
int mintiley = Integer.MAX_VALUE;
int maxtiley = Integer.MIN_VALUE;
int tileSize = 128 << tilescale;
/* Loop through corners of the prism */
for(int i = 0; i < 2; i++) {
corner.x = blocks[i].x;
@ -1106,8 +1104,8 @@ public class IsoHDPerspective implements HDPerspective {
for(int k = 0; k < 2; k++) {
corner.z = blocks[k].z;
world_to_map.transform(corner, tcorner); /* Get map coordinate of corner */
int tx = fastFloor(tcorner.x/tileWidth);
int ty = fastFloor(tcorner.y/tileWidth);
int tx = fastFloor(tcorner.x/(tileSize << tilescale));
int ty = fastFloor(tcorner.y/(tileSize << tilescale));
if(mintilex > tx) mintilex = tx;
if(maxtilex < tx) maxtilex = tx;
if(mintiley > ty) mintiley = ty;
@ -1131,14 +1129,14 @@ public class IsoHDPerspective implements HDPerspective {
int x = t.tx;
int y = t.ty;
return new MapTile[] {
new HDMapTile(w, this, x - 1, y - 1, t.boostzoom),
new HDMapTile(w, this, x + 1, y - 1, t.boostzoom),
new HDMapTile(w, this, x - 1, y + 1, t.boostzoom),
new HDMapTile(w, this, x + 1, y + 1, t.boostzoom),
new HDMapTile(w, this, x, y - 1, t.boostzoom),
new HDMapTile(w, this, x + 1, y, t.boostzoom),
new HDMapTile(w, this, x, y + 1, t.boostzoom),
new HDMapTile(w, this, x - 1, y, t.boostzoom) };
new HDMapTile(w, this, x - 1, y - 1, t.boostzoom, t.tilescale),
new HDMapTile(w, this, x + 1, y - 1, t.boostzoom, t.tilescale),
new HDMapTile(w, this, x - 1, y + 1, t.boostzoom, t.tilescale),
new HDMapTile(w, this, x + 1, y + 1, t.boostzoom, t.tilescale),
new HDMapTile(w, this, x, y - 1, t.boostzoom, t.tilescale),
new HDMapTile(w, this, x + 1, y, t.boostzoom, t.tilescale),
new HDMapTile(w, this, x, y + 1, t.boostzoom, t.tilescale),
new HDMapTile(w, this, x - 1, y, t.boostzoom, t.tilescale) };
}
private static final int corners_by_side[][] = {
@ -1160,6 +1158,7 @@ public class IsoHDPerspective implements HDPerspective {
int max_chunk_x = Integer.MIN_VALUE;
int min_chunk_z = Integer.MAX_VALUE;
int max_chunk_z = Integer.MIN_VALUE;
int tileSize = tile.getTileSize();
/* Make corners for volume:
* 0 = bottom-lower-left (xyz),
@ -1177,8 +1176,8 @@ public class IsoHDPerspective implements HDPerspective {
for(int y = t.ty; y <= (t.ty+1); y++) {
for(int z = 0; z <= 1; z++) {
corners[idx] = new Vector3D();
corners[idx].x = x*tileWidth + dx;
corners[idx].y = y*tileHeight + dy;
corners[idx].x = x*tileSize + dx;
corners[idx].y = y*tileSize + dy;
corners[idx].z = (z == 1) ? t.getDynmapWorld().worldheight : t.getDynmapWorld().minY;
map_to_world.transform(corners[idx]);
/* Compute chunk coordinates of corner */
@ -1232,8 +1231,9 @@ public class IsoHDPerspective implements HDPerspective {
Color rslt = new Color();
MapIterator mapiter = cache.getIterator(0, 0, 0);
DynmapWorld world = tile.getDynmapWorld();
int tileSize = tile.getTileSize();
int scaled = 0;
if ((tile.boostzoom > 0) && MarkerAPIImpl.testTileForBoostMarkers(cache.getWorld(), this, tile.tx * tileWidth, tile.ty * tileHeight, tileWidth)) {
if ((tile.boostzoom > 0) && MarkerAPIImpl.testTileForBoostMarkers(cache.getWorld(), this, tile.tx * tileSize, tile.ty * tileSize, tileSize)) {
scaled = tile.boostzoom;
}
int sizescale = 1 << scaled;
@ -1256,10 +1256,10 @@ public class IsoHDPerspective implements HDPerspective {
for(int i = 0; i < numshaders; i++) {
HDLighting lighting = shaderstate[i].getLighting();
im[i] = DynmapBufferedImage.allocateBufferedImage(tileWidth * sizescale, tileHeight * sizescale);
im[i] = DynmapBufferedImage.allocateBufferedImage(tileSize * sizescale, tileSize * sizescale);
argb_buf[i] = im[i].argb_buf;
if(lighting.isNightAndDayEnabled()) {
dayim[i] = DynmapBufferedImage.allocateBufferedImage(tileWidth * sizescale, tileHeight * sizescale);
dayim[i] = DynmapBufferedImage.allocateBufferedImage(tileSize * sizescale, tileSize * sizescale);
day_argb_buf[i] = dayim[i].argb_buf;
}
isjpg[i] = shaderstate[i].getMap().getImageFormat() != ImageFormat.FORMAT_PNG;
@ -1279,8 +1279,8 @@ public class IsoHDPerspective implements HDPerspective {
ps.top = new Vector3D();
ps.bottom = new Vector3D();
ps.direction = new Vector3D();
double xbase = tile.tx * tileWidth;
double ybase = tile.ty * tileHeight;
double xbase = tile.tx * tileSize;
double ybase = tile.ty * tileSize;
boolean shaderdone[] = new boolean[numshaders];
boolean rendered[] = new boolean[numshaders];
double height = maxheight;
@ -1295,9 +1295,9 @@ public class IsoHDPerspective implements HDPerspective {
miny = tile.getDynmapWorld().minY;
}
for(int x = 0; x < tileWidth * sizescale; x++) {
for(int x = 0; x < tileSize * sizescale; x++) {
ps.px = x;
for(int y = 0; y < tileHeight * sizescale; y++) {
for(int y = 0; y < tileSize * sizescale; y++) {
ps.top.x = ps.bottom.x = xbase + (x + 0.5) / sizescale; /* Start at center of pixel at Y=height+0.5, bottom at Y=-0.5 */
ps.top.y = ps.bottom.y = ybase + (y + 0.5) / sizescale;
ps.top.z = height + 0.5; ps.bottom.z = miny - 0.5;
@ -1327,19 +1327,19 @@ public class IsoHDPerspective implements HDPerspective {
int c_argb = rslt.getARGB();
if(c_argb != 0) rendered[i] = true;
if(isjpg[i] && (c_argb == 0)) {
argb_buf[i][(tileHeight*sizescale-y-1)*tileWidth*sizescale + x] = bgnight[i];
argb_buf[i][(tileSize*sizescale-y-1)*tileSize*sizescale + x] = bgnight[i];
}
else {
argb_buf[i][(tileHeight*sizescale-y-1)*tileWidth*sizescale + x] = c_argb;
argb_buf[i][(tileSize*sizescale-y-1)*tileSize*sizescale + x] = c_argb;
}
if(day_argb_buf[i] != null) {
shaderstate[i].getRayColor(rslt, 1);
c_argb = rslt.getARGB();
if(isjpg[i] && (c_argb == 0)) {
day_argb_buf[i][(tileHeight*sizescale-y-1)*tileWidth*sizescale + x] = bgday[i];
day_argb_buf[i][(tileSize*sizescale-y-1)*tileSize*sizescale + x] = bgday[i];
}
else {
day_argb_buf[i][(tileHeight*sizescale-y-1)*tileWidth*sizescale + x] = c_argb;
day_argb_buf[i][(tileSize*sizescale-y-1)*tileSize*sizescale + x] = c_argb;
}
}
}

View File

@ -5,13 +5,13 @@ var HDProjection = DynmapProjection.extend({
lng = wtp[0] * location.x + wtp[1] * location.y + wtp[2] * location.z;
return new L.LatLng(
-((128 - lat) / (1 << this.options.mapzoomout))
-(((128 << this.options.tilescale) - lat) / (1 << this.options.mapzoomout))
, lng / (1 << this.options.mapzoomout)
, location.y);
},
fromLatLngToLocation: function(latlon, y) {
var ptw = this.options.maptoworld,
lat = 128 + latlon.lat * (1 << this.options.mapzoomout),
lat = (128 << this.options.tilescale) + latlon.lat * (1 << this.options.mapzoomout),
lng = latlon.lng * (1 << this.options.mapzoomout),
x = ptw[0] * lng + ptw[1] * lat + ptw[2] * y,
z = ptw[6] * lng + ptw[7] * lat + ptw[8] * y;
@ -25,12 +25,12 @@ var HDMapType = DynmapTileLayer.extend({
options: {
minZoom: 0,
errorTileUrl: 'images/blank.png',
tileSize: 128,
zoomReverse: true,
},
initialize: function(options) {
options.maxZoom = options.mapzoomin + options.mapzoomout;
options.maxNativeZoom = options.mapzoomout;
options.tileSize = 128 << (options.tilescale || 0);
this.projection = new HDProjection($.extend({map: this}, options));

View File

@ -15,6 +15,10 @@
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
deftemplatesuffix: hires
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
#defaulttilescale: 0
# Map storage scheme: only uncommoent one 'type' value
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)

View File

@ -15,6 +15,10 @@
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
deftemplatesuffix: hires
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
#defaulttilescale: 0
# Map storage scheme: only uncommoent one 'type' value
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)

View File

@ -15,6 +15,10 @@
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
deftemplatesuffix: hires
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
#defaulttilescale: 0
# Map storage scheme: only uncommoent one 'type' value
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)

View File

@ -15,6 +15,10 @@
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
deftemplatesuffix: hires
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
#defaulttilescale: 0
# Map storage scheme: only uncommoent one 'type' value
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)

View File

@ -15,6 +15,10 @@
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
deftemplatesuffix: hires
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
#defaulttilescale: 0
# Map storage scheme: only uncommoent one 'type' value
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)

View File

@ -15,6 +15,10 @@
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
deftemplatesuffix: hires
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
#defaulttilescale: 0
# Map storage scheme: only uncommoent one 'type' value
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)

View File

@ -15,6 +15,10 @@
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
deftemplatesuffix: hires
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
#defaulttilescale: 0
# Map storage scheme: only uncommoent one 'type' value
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)

View File

@ -15,6 +15,10 @@
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
deftemplatesuffix: hires
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
#defaulttilescale: 0
# Map storage scheme: only uncommoent one 'type' value
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)

View File

@ -15,6 +15,10 @@
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
deftemplatesuffix: hires
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
#defaulttilescale: 0
# Map storage scheme: only uncommoent one 'type' value
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)

View File

@ -15,6 +15,10 @@
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
deftemplatesuffix: hires
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
#defaulttilescale: 0
# Map storage scheme: only uncommoent one 'type' value
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)

View File

@ -15,6 +15,10 @@
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
deftemplatesuffix: hires
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
#defaulttilescale: 0
# Map storage scheme: only uncommoent one 'type' value
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)

View File

@ -15,6 +15,10 @@
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
deftemplatesuffix: hires
# Set default tile scale (0 = 128px x 128x, 1 = 256px x 256px, 2 = 512px x 512px, 3 = 1024px x 1024px, 4 = 2048px x 2048px) - 0 is default
# Note: changing this value will result in all maps that use the default value being required to be fully rendered
#defaulttilescale: 0
# Map storage scheme: only uncomment one 'type' value
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)