diff --git a/DynmapCore/src/main/java/org/dynmap/MarkersComponent.java b/DynmapCore/src/main/java/org/dynmap/MarkersComponent.java index 8c88ce595..4600d9fdc 100644 --- a/DynmapCore/src/main/java/org/dynmap/MarkersComponent.java +++ b/DynmapCore/src/main/java/org/dynmap/MarkersComponent.java @@ -31,6 +31,7 @@ public class MarkersComponent extends ClientComponent { private MarkerSet spawnbedset; private MarkerIcon spawnbedicon; private String spawnbedformat; + private boolean removebedonplayerleave; private long maxofflineage; private boolean showSpawn; private boolean showBorder; @@ -180,7 +181,7 @@ public void playerEvent(DynmapPlayer p) { spawnbedicon = api.getMarkerIcon(configuration.getString("spawnbedicon", "bed")); spawnbedformat = configuration.getString("spawnbedformat", "%name%'s bed"); - + removebedonplayerleave = configuration.getBoolean("spawnbedremoveonplayerleave", true); /* Add listener for players coming and going */ core.listenerManager.addListener(EventType.PLAYER_JOIN, new PlayerEventListener() { @Override @@ -188,15 +189,17 @@ public void playerEvent(DynmapPlayer p) { updatePlayer(p); } }); - core.listenerManager.addListener(EventType.PLAYER_QUIT, new PlayerEventListener() { - @Override - public void playerEvent(DynmapPlayer p) { - Marker m = spawnbedset.findMarker(p.getName()+"_bed"); - if(m != null) { - m.deleteMarker(); + if (removebedonplayerleave) { + core.listenerManager.addListener(EventType.PLAYER_QUIT, new PlayerEventListener() { + @Override + public void playerEvent(DynmapPlayer p) { + Marker m = spawnbedset.findMarker(p.getName() + "_bed"); + if (m != null) { + m.deleteMarker(); + } } - } - }); + }); + } core.listenerManager.addListener(EventType.PLAYER_BED_LEAVE, new PlayerEventListener() { @Override public void playerEvent(final DynmapPlayer p) { diff --git a/DynmapCore/src/main/java/org/dynmap/hdmap/HDBlockModels.java b/DynmapCore/src/main/java/org/dynmap/hdmap/HDBlockModels.java index 1e7fa0ecf..1c9defe2b 100644 --- a/DynmapCore/src/main/java/org/dynmap/hdmap/HDBlockModels.java +++ b/DynmapCore/src/main/java/org/dynmap/hdmap/HDBlockModels.java @@ -364,7 +364,7 @@ private static void loadModelFile(InputStream in, String fname, ConfigurationNod if ((line.length() > 0) && (line.charAt(0) == '[')) { // If version constrained like int end = line.indexOf(']'); // Find end if (end < 0) { - Log.severe("Format error - line " + lineNum + " of " + fname + ": bad version limit"); + Log.severe("Format error - line " + lineNum + " of " + fname + ": bad version limit of file: " + fname); return; } String vertst = line.substring(1, end); @@ -414,12 +414,12 @@ private static void loadModelFile(InputStream in, String fname, ConfigurationNod cnt++; } else { - Log.severe("Invalid model block name " + bblk.blockName + " at line " + lineNum); + Log.severe("Invalid model block name " + bblk.blockName + " at line " + lineNum + " of file: " + fname); } } } else { - Log.severe("Block model missing required parameters = line " + lineNum + " of " + fname); + Log.severe("Block model missing required parameters = line " + lineNum + " of file: " + fname); } layerbits = 0; } @@ -444,7 +444,7 @@ else if (typeid.equals("rotate")) { } bsprslt = bsp.getMatchingStates(); if (bsprslt.size() != 1) { - Log.severe("Missing rotate source on line " + lineNum); + Log.severe("Missing rotate source on line " + lineNum + " of file: " + fname); continue; } DynmapBlockState basebs = bsprslt.keySet().iterator().next(); @@ -452,7 +452,7 @@ else if (typeid.equals("rotate")) { /* get old model to be rotated */ DynmapBlockState bs = basebs.getState(bits.nextSetBit(0)); if (bs.isAir()) { - Log.severe("Invalid rotate ID: " + bs + " on line " + lineNum); + Log.severe("Invalid rotate ID: " + bs + " on line " + lineNum + " of file: " + fname); continue; } HDBlockModel mod = models_by_id_data.get(bs.globalStateIndex); @@ -491,7 +491,7 @@ else if ((mod != null) && ((rot%90) == 0) && (mod instanceof HDBlockVolumetricMo } } else { - Log.severe("Invalid rotate error - line " + lineNum + " of " + fname); + Log.severe("Invalid rotate error - line " + lineNum + " of file: " + fname); continue; } } @@ -513,7 +513,7 @@ else if (typeid.equals("patchrotate")) { } bsprslt = bsp.getMatchingStates(); if (bsprslt.size() != 1) { - Log.severe("Missing rotate source on line " + lineNum); + Log.severe("Missing rotate source on line " + lineNum + " of file: " + fname); continue; } DynmapBlockState basebs = bsprslt.keySet().iterator().next(); @@ -521,7 +521,7 @@ else if (typeid.equals("patchrotate")) { /* get old model to be rotated */ DynmapBlockState bs = basebs.getState(bits.nextSetBit(0)); if (bs.isAir()) { - Log.severe("Invalid patchrotate ID: " + bs + " on line " + lineNum); + Log.severe("Invalid patchrotate ID: " + bs + " on line " + lineNum + "of file: " + fname); continue; } HDBlockModel mod = models_by_id_data.get(bs.globalStateIndex); @@ -541,7 +541,7 @@ else if ((mod != null) && (mod instanceof HDBlockPatchModel)) { } } else { - Log.severe("Invalid rotate error - line " + lineNum + " of " + fname); + Log.severe("Invalid rotate error - line " + lineNum + " of file: " + fname); return; } } @@ -560,7 +560,7 @@ else if (typeid.equals("ignore-updates")) { } } else { - Log.severe("Invalid update ignore block name " + bbs + " at line " + lineNum); + Log.severe("Invalid update ignore block name " + bbs + " at line " + lineNum + " of file: " + fname); } } } @@ -584,7 +584,7 @@ else if (typeid.equals("var")) { /* Test if variable declaration */ for(int i = 0; i < args.length; i++) { String[] v = args[i].split("="); if(v.length < 2) { - Log.severe("Format error - line " + lineNum + " of " + fname); + Log.severe("Format error - line " + lineNum + " of file: " + fname); return; } try { @@ -592,7 +592,7 @@ else if (typeid.equals("var")) { /* Test if variable declaration */ int parmval = config.getInteger(v[0], val); /* Read value, with applied default */ varvals.put(v[0], parmval); /* And save value */ } catch (NumberFormatException nfx) { - Log.severe("Format error - line " + lineNum + " of " + fname); + Log.severe("Format error - line " + lineNum + " of file: " + fname); return; } } @@ -668,7 +668,7 @@ else if(av[0].equals("Vmax")) { p_vmax = Double.parseDouble(av[1]); } else if(av[0].equals("UplusVmax")) { - Log.warning("UplusVmax deprecated - use VmaxAtUMax - line " + lineNum + " of " + fname); + Log.warning("UplusVmax deprecated - use VmaxAtUMax - line " + lineNum + " of file: " + fname); p_uplusvmax = Double.parseDouble(av[1]); } else if(av[0].equals("VmaxAtUMax")) { @@ -737,11 +737,11 @@ else if (typeid.equals("patchblock")) { patchnum1 = Integer.parseInt(ids2[1]); } if (patchnum0 < 0) { - Log.severe("Invalid patch index " + patchnum0 + " - line " + lineNum + " of " + fname); + Log.severe("Invalid patch index " + patchnum0 + " - line " + lineNum + " of file: " + fname); return; } if (patchnum1 < patchnum0) { - Log.severe("Invalid patch index " + patchnum1 + " - line " + lineNum + " of " + fname); + Log.severe("Invalid patch index " + patchnum1 + " - line " + lineNum + " of file: " + fname); return; } String patchid = av[1]; @@ -749,7 +749,7 @@ else if (typeid.equals("patchblock")) { for (int i = patchnum0; i <= patchnum1; i++) { PatchDefinition pd = pdf.getPatchByName(patchid, i); if (pd == null) { - Log.severe("Invalid patch ID " + patchid + " - line " + lineNum + " of " + fname); + Log.severe("Invalid patch ID " + patchid + " - line " + lineNum + " of file: " + fname); return; } patches.add(i, pd); @@ -769,12 +769,12 @@ else if (typeid.equals("patchblock")) { cnt++; } else { - Log.severe("Invalid patchmodel block name " + bs + " at line " + lineNum); + Log.severe("Invalid patchmodel block name " + bs + " at line " + lineNum + " of file: " + fname); } } } else { - Log.severe("Patch block model missing required parameters = line " + lineNum + " of " + fname); + Log.severe("Patch block model missing required parameters = line " + lineNum + " of file: " + fname); } } // Shortcut for defining a patchblock that is a simple rectangular prism, with sidex corresponding to full block sides @@ -832,12 +832,12 @@ else if(av[0].equals("patches")) { cnt++; } else { - Log.severe("Invalid boxmodel block name " + bs + " at line " + lineNum); + Log.severe("Invalid boxmodel block name " + bs + " at line " + lineNum + " of file: " + fname); } } } else { - Log.severe("Box block model missing required parameters = line " + lineNum + " of " + fname); + Log.severe("Box block model missing required parameters = line " + lineNum + " of file: " + fname); } } // Shortcut for defining a patchblock that is a simple rectangular prism, with sidex corresponding to full block sides @@ -898,12 +898,12 @@ else if (typeid.equals("boxlist")) { cnt++; } else { - Log.severe("Invalid boxlist block name " + bs + " at line " + lineNum); + Log.severe("Invalid boxlist block name " + bs + " at line " + lineNum + " of file: " + fname); } } } else { - Log.severe("Box list block model missing required parameters = line " + lineNum + " of " + fname); + Log.severe("Box list block model missing required parameters = line " + lineNum + " of file: " + fname); } } // Shortcur for building JSON model style @@ -932,7 +932,7 @@ else if (typeid.equals("modellist")) { } } else { - Log.severe("Invalid modellist FROM value (" + prms[0] + " at line " + lineNum); + Log.severe("Invalid modellist FROM value (" + prms[0] + " at line " + lineNum + " of file: " + fname); } } if (prms.length > 1) { // Handle to (to-x/y/z or to-x/y/z/rotx/roty/rotz) or to-x/y/z/rotx/roty/rotz/rorigx/rorigy/rorigz @@ -953,7 +953,7 @@ else if (typeid.equals("modellist")) { } } else { - Log.severe("Invalid modellist TO value (" + prms[1] + " at line " + lineNum); + Log.severe("Invalid modellist TO value (" + prms[1] + " at line " + lineNum + " of file: " + fname); } } // Rest are faces (//umin/vmin/umax/vmax> or </) @@ -971,14 +971,14 @@ else if (typeid.equals("modellist")) { ModelBoxSide side = new ModelBoxSide(); side.rot = null; if ((flds.length != 2) && (flds.length != 6)) { - Log.severe("Invalid modellist face '" + v + "' at line " + lineNum); + Log.severe("Invalid modellist face '" + v + "' at line " + lineNum + " of file: " + fname); continue; } if (flds.length > 0) { String face = flds[0]; side.side = toBlockSide.get(face.substring(0, 1)); if (side.side == null) { - Log.severe("Invalid modellist side value (" + face + ") in '" + v + "' at line " + lineNum); + Log.severe("Invalid modellist side value (" + face + ") in '" + v + "' at line " + lineNum + " of file: " + fname); continue; } if (flds[0].length() > 1) { @@ -1037,7 +1037,7 @@ else if (typeid.equals("modellist")) { pd.add(patch); } else { - Log.severe(String.format("Invalid modellist patch for box %.02f/%.02f/%.02f:%.02f/%.02f/%.02f side %s at line %d", bl.from[0], bl.from[1], bl.from[2], bl.to[0], bl.to[1], bl.to[2], side.side, lineNum)); + Log.severe(String.format("Invalid modellist patch for box %.02f/%.02f/%.02f:%.02f/%.02f/%.02f side %s at line %d of file: %s", bl.from[0], bl.from[1], bl.from[2], bl.to[0], bl.to[1], bl.to[2], side.side, lineNum, fname)); Log.verboseinfo(String.format("line = %s:%s", typeid, line)); } } @@ -1054,12 +1054,12 @@ else if (typeid.equals("modellist")) { cnt++; } else { - Log.severe("Invalid modellist block name " + bs + " at line " + lineNum); + Log.severe("Invalid modellist block name " + bs + " at line " + lineNum + " of file: " + fname); } } } else { - Log.severe("Model list block model missing required parameters = line " + lineNum + " of " + fname); + Log.severe("Model list block model missing required parameters = line " + lineNum + " of " + fname + " of file: " + fname); } } else if (typeid.equals("customblock")) { @@ -1094,7 +1094,7 @@ else if (av[0].equals("class")) { if (bs.isNotAir()) { CustomBlockModel cbm = new CustomBlockModel(bs, bsprslt.get(bs), cls, custargs, blockset); if(cbm.render == null) { - Log.severe("Custom block model failed to initialize = line " + lineNum + " of " + fname); + Log.severe("Custom block model failed to initialize = line " + lineNum + " of file: " + fname); } else { /* Update maximum texture count */ @@ -1106,12 +1106,12 @@ else if (av[0].equals("class")) { cnt++; } else { - Log.severe("Invalid custommodel block name " + bs + " at line " + lineNum); + Log.severe("Invalid custommodel block name " + bs + " at line " + lineNum + " of file: " + fname); } } } else { - Log.severe("Custom block model missing required parameters = line " + lineNum + " of " + fname); + Log.severe("Custom block model missing required parameters = line " + lineNum + " of file: " + fname); } } else if (typeid.equals("modname")) { @@ -1173,11 +1173,11 @@ else if(layerbits != 0) { /* If we're working pattern lines */ if (need_mod_cfg) { Log.severe("Error loading configuration file for " + modname); } - Log.verboseinfo("Loaded " + cnt + " block models from " + fname); + Log.verboseinfo("Loaded " + cnt + " block models from " + fname + " of file: " + fname); } catch (IOException iox) { Log.severe("Error reading models.txt - " + iox.toString()); } catch (NumberFormatException nfx) { - Log.severe("Format error - line " + rdr.getLineNumber() + " of " + fname + ": " + nfx.getMessage()); + Log.severe("Format error - line " + rdr.getLineNumber() + " of file: " + fname + ": " + nfx.getMessage()); } finally { if(rdr != null) { try { diff --git a/DynmapCore/src/main/java/org/dynmap/hdmap/TopoHDShader.java b/DynmapCore/src/main/java/org/dynmap/hdmap/TopoHDShader.java index cf9e5928b..13a21bda2 100644 --- a/DynmapCore/src/main/java/org/dynmap/hdmap/TopoHDShader.java +++ b/DynmapCore/src/main/java/org/dynmap/hdmap/TopoHDShader.java @@ -6,10 +6,7 @@ import java.util.BitSet; import java.util.List; -import org.dynmap.Color; -import org.dynmap.ConfigurationNode; -import org.dynmap.DynmapCore; -import org.dynmap.MapManager; +import org.dynmap.*; import org.dynmap.common.DynmapCommandSender; import org.dynmap.exporter.OBJExport; import org.dynmap.renderer.DynmapBlockState; @@ -26,15 +23,26 @@ public class TopoHDShader implements HDShader { private final Color watercolor; private BitSet hiddenids; private final int linespacing; - + private int worldheight = 384; public TopoHDShader(DynmapCore core, ConfigurationNode configuration) { name = (String) configuration.get("name"); - - fillcolor = new Color[256]; /* Color by Y */ - /* Load defined colors from parameters */ - for(int i = 0; i < 256; i++) { - fillcolor[i] = configuration.getColor("color" + i, null); + + if (HDBlockModels.checkVersionRange(core.getDynmapPluginPlatformVersion(), "-1.17.0")){ + worldheight = 256; + fillcolor = new Color[worldheight]; /* Color by Y, must be range of total world height, offset by +64*/ + /* Load defined colors from parameters */ + for(int i = 0; i < worldheight; i++) { + fillcolor[i] = configuration.getColor("color" + (i - 64), null); /* need to substract by 64 because Color does not accept <0 indexes*/ + } + } + else{ + fillcolor = new Color[worldheight]; /* Color by Y, must be range of total world height, offset by +64*/ + /* Load defined colors from parameters */ + for(int i = 0; i < worldheight; i++) { + fillcolor[i] = configuration.getColor("color" + (i - 64), null); /* need to substract by 64 because Color does not accept <0 indexes*/ + } } + linecolor = configuration.getColor("linecolor", null); watercolor = configuration.getColor("watercolor", null); float wateralpha = configuration.getFloat("wateralpha", 1.0F); @@ -45,11 +53,11 @@ public TopoHDShader(DynmapCore core, ConfigurationNode configuration) { if(fillcolor[0] == null) { fillcolor[0] = new Color(0, 0, 0); } - if(fillcolor[255] == null) { - fillcolor[255] = new Color(255, 255, 255); + if(fillcolor[worldheight-1] == null) { + fillcolor[worldheight-1] = new Color(255, 255, 255); } int starty = 0; - for(int i = 1; i < 256; i++) { + for(int i = 0; i < worldheight; i++) { if(fillcolor[i] != null) { /* Found color? */ int delta = i - starty; Color c0 = fillcolor[starty]; @@ -73,7 +81,7 @@ public TopoHDShader(DynmapCore core, ConfigurationNode configuration) { } linespacing = configuration.getInteger("linespacing", 1); } - + private void setHidden(String bn) { DynmapBlockState bs = DynmapBlockState.getBaseStateByName(bn); for (int i = 0; i < bs.getStateCount(); i++) { @@ -81,17 +89,17 @@ private void setHidden(String bn) { hiddenids.set(b.globalStateIndex); } } - + @Override - public boolean isBiomeDataNeeded() { - return false; + public boolean isBiomeDataNeeded() { + return false; } - + @Override - public boolean isRawBiomeDataNeeded() { - return false; + public boolean isRawBiomeDataNeeded() { + return false; } - + @Override public boolean isHightestBlockYDataNeeded() { return false; @@ -116,7 +124,7 @@ public boolean isEmittedLightLevelNeeded() { public String getName() { return name; } - + private class OurShaderState implements HDShaderState { private Color color[]; private Color tmpcolor[]; @@ -128,7 +136,7 @@ private class OurShaderState implements HDShaderState { private int heightshift; /* Divide to keep in 0-127 range of colors */ private boolean inWater; final int[] lightingTable; - + private OurShaderState(MapIterator mapiter, HDMap map, MapChunkCache cache, int scale) { this.mapiter = mapiter; this.map = map; @@ -171,14 +179,14 @@ public HDShader getShader() { public HDMap getMap() { return map; } - + /** * Get our lighting */ public HDLighting getLighting() { return lighting; } - + /** * Reset renderer state for new ray */ @@ -187,18 +195,18 @@ public void reset(HDPerspectiveState ps) { color[i].setTransparent(); inWater = false; } - + private final boolean isHidden(DynmapBlockState blk) { return hiddenids.get(blk.globalStateIndex); } - + /** * Process next ray step - called for each block on route * @return true if ray is done, false if ray needs to continue */ public boolean processBlock(HDPerspectiveState ps) { DynmapBlockState blocktype = ps.getBlockState(); - + if (isHidden(blocktype)) { return false; } @@ -208,56 +216,56 @@ public boolean processBlock(HDPerspectiveState ps) { int[] xyz = ps.getSubblockCoord(); // Only color lines when spacing is matched Color lcolor = ((y % linespacing) == 0)?linecolor:null; - + /* See which face we're on (only do lines on top face) */ switch(ps.getLastBlockStep()) { - case Y_MINUS: - case Y_PLUS: - if((lcolor != null) && - (((xyz[0] == 0) && (isHidden(mapiter.getBlockTypeAt(BlockStep.X_MINUS)))) || - ((xyz[0] == (scale-1)) && (isHidden(mapiter.getBlockTypeAt(BlockStep.X_PLUS)))) || - ((xyz[2] == 0) && (isHidden(mapiter.getBlockTypeAt(BlockStep.Z_MINUS)))) || - ((xyz[2] == (scale-1)) && (isHidden(mapiter.getBlockTypeAt(BlockStep.Z_PLUS)))))) { - c.setColor(lcolor); - inWater = false; - } - else if ((watercolor != null) && blocktype.isWater()) { - if (!inWater) { - c.setColor(watercolor); - inWater = true; + case Y_MINUS: + case Y_PLUS: + if((lcolor != null) && + (((xyz[0] == 0) && (isHidden(mapiter.getBlockTypeAt(BlockStep.X_MINUS)))) || + ((xyz[0] == (scale-1)) && (isHidden(mapiter.getBlockTypeAt(BlockStep.X_PLUS)))) || + ((xyz[2] == 0) && (isHidden(mapiter.getBlockTypeAt(BlockStep.Z_MINUS)))) || + ((xyz[2] == (scale-1)) && (isHidden(mapiter.getBlockTypeAt(BlockStep.Z_PLUS)))))) { + c.setColor(lcolor); + inWater = false; + } + else if ((watercolor != null) && blocktype.isWater()) { + if (!inWater) { + c.setColor(watercolor); + inWater = true; + } + else { + return false; + } } else { - return false; + c.setColor(fillcolor[y >> heightshift]); + inWater = false; } - } - else { - c.setColor(fillcolor[y >> heightshift]); - inWater = false; - } - break; - default: - if((lcolor != null) && (xyz[1] == (scale-1))) { - c.setColor(lcolor); - inWater = false; - } - else if ((watercolor != null) && blocktype.isWater()) { - if (!inWater) { - c.setColor(watercolor); - inWater = true; + break; + default: + if((lcolor != null) && (xyz[1] == (scale-1))) { + c.setColor(lcolor); + inWater = false; + } + else if ((watercolor != null) && blocktype.isWater()) { + if (!inWater) { + c.setColor(watercolor); + inWater = true; + } + else { + return false; + } } else { - return false; + c.setColor(fillcolor[y >> heightshift]); + inWater = false; } - } - else { - c.setColor(fillcolor[y >> heightshift]); - inWater = false; - } - break; + break; } /* Handle light level, if needed */ lighting.applyLighting(ps, this, c, tmpcolor); - + /* If no previous color contribution, use new color */ if(color[0].isTransparent()) { for(int i = 0; i < color.length; i++) @@ -272,15 +280,15 @@ else if ((watercolor != null) && blocktype.isWater()) { if(talpha > 0) for(int i = 0; i < color.length; i++) color[i].setRGBA((tmpcolor[i].getRed()*alpha2 + color[i].getRed()*alpha) / talpha, - (tmpcolor[i].getGreen()*alpha2 + color[i].getGreen()*alpha) / talpha, - (tmpcolor[i].getBlue()*alpha2 + color[i].getBlue()*alpha) / talpha, talpha); + (tmpcolor[i].getGreen()*alpha2 + color[i].getGreen()*alpha) / talpha, + (tmpcolor[i].getBlue()*alpha2 + color[i].getBlue()*alpha) / talpha, talpha); else for(int i = 0; i < color.length; i++) color[i].setTransparent(); - + return (talpha >= 254); /* If only one short, no meaningful contribution left */ } - } + } /** * Ray ended - used to report that ray has exited map (called if renderer has not reported complete) */ @@ -324,7 +332,7 @@ public void setLastBlockState(DynmapBlockState new_lastbs) { public HDShaderState getStateInstance(HDMap map, MapChunkCache cache, MapIterator mapiter, int scale) { return new OurShaderState(mapiter, map, cache, scale); } - + /* Add shader's contributions to JSON for map object */ public void addClientConfiguration(JSONObject mapObject) { s(mapObject, "shader", name); diff --git a/fabric-1.14.4/src/main/resources/configuration.txt b/fabric-1.14.4/src/main/resources/configuration.txt index abd839531..e0334afaf 100644 --- a/fabric-1.14.4/src/main/resources/configuration.txt +++ b/fabric-1.14.4/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/fabric-1.15.2/src/main/resources/configuration.txt b/fabric-1.15.2/src/main/resources/configuration.txt index abd839531..e0334afaf 100644 --- a/fabric-1.15.2/src/main/resources/configuration.txt +++ b/fabric-1.15.2/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/fabric-1.16.4/src/main/resources/configuration.txt b/fabric-1.16.4/src/main/resources/configuration.txt index aa783b197..c8205d76e 100644 --- a/fabric-1.16.4/src/main/resources/configuration.txt +++ b/fabric-1.16.4/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/fabric-1.17.1/src/main/resources/configuration.txt b/fabric-1.17.1/src/main/resources/configuration.txt index aa783b197..c8205d76e 100644 --- a/fabric-1.17.1/src/main/resources/configuration.txt +++ b/fabric-1.17.1/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/fabric-1.18.2/src/main/resources/configuration.txt b/fabric-1.18.2/src/main/resources/configuration.txt index 71cccfb97..b1f4d7470 100644 --- a/fabric-1.18.2/src/main/resources/configuration.txt +++ b/fabric-1.18.2/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/fabric-1.19.4/src/main/resources/configuration.txt b/fabric-1.19.4/src/main/resources/configuration.txt index bb8b456ca..c17b0b96e 100644 --- a/fabric-1.19.4/src/main/resources/configuration.txt +++ b/fabric-1.19.4/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/fabric-1.20.2/src/main/resources/configuration.txt b/fabric-1.20.2/src/main/resources/configuration.txt index bb8b456ca..c17b0b96e 100644 --- a/fabric-1.20.2/src/main/resources/configuration.txt +++ b/fabric-1.20.2/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/fabric-1.20.4/src/main/resources/configuration.txt b/fabric-1.20.4/src/main/resources/configuration.txt index bb8b456ca..c17b0b96e 100644 --- a/fabric-1.20.4/src/main/resources/configuration.txt +++ b/fabric-1.20.4/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/fabric-1.20/src/main/resources/configuration.txt b/fabric-1.20/src/main/resources/configuration.txt index bb8b456ca..c17b0b96e 100644 --- a/fabric-1.20/src/main/resources/configuration.txt +++ b/fabric-1.20/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/forge-1.12.2/src/main/resources/configuration.txt b/forge-1.12.2/src/main/resources/configuration.txt index 77eda7b67..75c3d2075 100644 --- a/forge-1.12.2/src/main/resources/configuration.txt +++ b/forge-1.12.2/src/main/resources/configuration.txt @@ -130,6 +130,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/forge-1.14.4/src/main/resources/configuration.txt b/forge-1.14.4/src/main/resources/configuration.txt index dec35cccd..4c2fbf504 100644 --- a/forge-1.14.4/src/main/resources/configuration.txt +++ b/forge-1.14.4/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/forge-1.15.2/src/main/resources/configuration.txt b/forge-1.15.2/src/main/resources/configuration.txt index dec35cccd..4c2fbf504 100644 --- a/forge-1.15.2/src/main/resources/configuration.txt +++ b/forge-1.15.2/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/forge-1.16.5/src/main/resources/configuration.txt b/forge-1.16.5/src/main/resources/configuration.txt index eb4b28da1..38174f817 100644 --- a/forge-1.16.5/src/main/resources/configuration.txt +++ b/forge-1.16.5/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/forge-1.17.1/src/main/resources/configuration.txt b/forge-1.17.1/src/main/resources/configuration.txt index 8d72ac3bc..9257fbaae 100644 --- a/forge-1.17.1/src/main/resources/configuration.txt +++ b/forge-1.17.1/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/forge-1.18.2/src/main/resources/configuration.txt b/forge-1.18.2/src/main/resources/configuration.txt index eb4b28da1..38174f817 100644 --- a/forge-1.18.2/src/main/resources/configuration.txt +++ b/forge-1.18.2/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/forge-1.19.3/src/main/resources/configuration.txt b/forge-1.19.3/src/main/resources/configuration.txt index eb4b28da1..38174f817 100644 --- a/forge-1.19.3/src/main/resources/configuration.txt +++ b/forge-1.19.3/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/forge-1.20.2/src/main/resources/configuration.txt b/forge-1.20.2/src/main/resources/configuration.txt index eb4b28da1..38174f817 100644 --- a/forge-1.20.2/src/main/resources/configuration.txt +++ b/forge-1.20.2/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/forge-1.20/src/main/resources/configuration.txt b/forge-1.20/src/main/resources/configuration.txt index eb4b28da1..38174f817 100644 --- a/forge-1.20/src/main/resources/configuration.txt +++ b/forge-1.20/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" diff --git a/spigot/src/main/resources/configuration.txt b/spigot/src/main/resources/configuration.txt index 2fc3fe008..84a2acb3a 100644 --- a/spigot/src/main/resources/configuration.txt +++ b/spigot/src/main/resources/configuration.txt @@ -143,6 +143,7 @@ components: spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" + spawnbedremoveonplayerleave: true # (optional) show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border"