Compare commits
260 Commits
v3.4-beta-
...
v3.0
Author | SHA1 | Date |
---|---|---|
Michael Primm | b434f09035 | |
Michael Primm | e21198d279 | |
Michael Primm | 1d6346b580 | |
Michael Primm | e086930133 | |
Michael Primm | 27526e64e5 | |
Michael Primm | 21369ec485 | |
Michael Primm | 120889b500 | |
Michael Primm | 669c75322a | |
mikeprimm | ea24554033 | |
JurgenKuyper | b9144e3609 | |
Michael Primm | 9878719337 | |
Michael Primm | 6746631758 | |
Michael Primm | 23cd60ba0a | |
Michael Primm | 328954b256 | |
Michael Primm | 574a400ada | |
Michael Primm | 84ee4cdf0c | |
Michael Primm | dea6a55acd | |
Michael Primm | 87993219bb | |
Michael Primm | 7cdd90768e | |
mikeprimm | b0e56d3e5a | |
Michael Primm | 20700c21b8 | |
Michael Primm | 85885ced0e | |
mikeprimm | 06fbcb8d3d | |
mikeprimm | b181607e5a | |
mikeprimm | bb1438b3c4 | |
ChimneySwift | 1ba6dd4683 | |
ChimneySwift | d16fdc8275 | |
ChimneySwift | 914fc5a10c | |
ChimneySwift | a669d75de0 | |
Jurgen | bc0117ac5a | |
Spongecade | 298b31cdc8 | |
ApliNi | 5244e74d47 | |
JurgenKuyper | 0d15ee5a46 | |
Michael Primm | ca80758605 | |
Michael Primm | 96554717f1 | |
Michael Primm | c807861859 | |
Michael Primm | 65cca049ac | |
JurgenKuyper | 0ba3c8008f | |
Jurgen | 030a0e1d24 | |
Michael Primm | 79f354b111 | |
Michael Primm | 92b9016c65 | |
Michael Primm | e6a18f1029 | |
mikeprimm | ff87b9dd3e | |
Michael Primm | 2d723afba1 | |
Michael Primm | f5d2244450 | |
mikeprimm | e429a53d27 | |
Michael Primm | 169bb81ca7 | |
Michael Primm | 91c4b23a0e | |
Michael Primm | e2a5fc80d3 | |
Michael Primm | 736dd5a290 | |
Michael Primm | 7905f76d51 | |
Murilo Henrique Ghignatti | b97d5045b6 | |
Michael Primm | 85012ae478 | |
Michael Primm | d1408b7bfd | |
Jurgen | c093a95bc0 | |
Michael Primm | 7ed6728e34 | |
Michael Primm | eed1a2b444 | |
mikeprimm | b8b1e8bd4e | |
Michael Primm | ae164f2993 | |
mikeprimm | ebb9dc00d0 | |
mikeprimm | 31d1b400f0 | |
mikeprimm | 105e3887a0 | |
stormboomer | 0120c135c4 | |
stormboomer | b8166a9122 | |
stormboomer | 247e81bc61 | |
James Monger | fe49d37fa9 | |
James Monger | 20592cd805 | |
Michael Primm | b310a57b64 | |
JurgenKuyper | 6b3e18c351 | |
Michael Primm | 105d4f1b62 | |
Thorinwasher | 2503dbfdbb | |
Michael Primm | 87d8c73941 | |
Michael Primm | cee25bc518 | |
Michael Primm | 3715b114e9 | |
Michael Primm | 881b83b7f1 | |
Michael Primm | 7f6dc1d52c | |
mikeprimm | 38ccb50d6a | |
Lewie | fa36d3fa38 | |
mikeprimm | 983fda35b4 | |
Michael Primm | 4e7dcb2cfb | |
Michael Primm | e0c02b1fc0 | |
Michael Primm | b2f04ce112 | |
Michael Primm | 57093caa5f | |
mikeprimm | 551b3adda7 | |
Kosma Moczek | f249ce60b5 | |
Michael Primm | 2f742734d0 | |
Michael Primm | dd81ea2d87 | |
Michael Primm | 126d8e5d05 | |
Michael Primm | 6863243d49 | |
Michael Primm | 43a86b820c | |
Michael Primm | 130953bc12 | |
Michael Primm | 2d835eaeec | |
mikeprimm | 5aeca48e2b | |
Kosma Moczek | 427bd6d0ef | |
Kosma Moczek | 05b751a60e | |
Kosma Moczek | 1450a57aba | |
Kosma Moczek | 0ee1b6001a | |
Kosma Moczek | 1d94af6a11 | |
Kosma Moczek | 8f10ece108 | |
Michael Primm | 2456c36649 | |
Michael Primm | 7bcce9c7e0 | |
Michael Primm | 3f2d9dd5df | |
Michael Primm | 7218e56e5b | |
Michael Primm | 4e61fa6b22 | |
Michael Primm | d1b95c9ae0 | |
Michael Primm | 1ccffb7693 | |
Michael Primm | 5bcfe052a5 | |
Michael Primm | 8b1b26c570 | |
Michael Primm | 022a031829 | |
mikeprimm | 9c0a1e45fc | |
mikeprimm | 3b970c7119 | |
Shaijana | 436dfa22a0 | |
Michael Primm | bcd4ed617a | |
Michael Primm | ab900740b7 | |
Michael Primm | 76649c6250 | |
Michael Primm | 89d06d158d | |
Michael Primm | 2c32cbc0d5 | |
Michael Primm | cc9f6f0bc4 | |
Michael Primm | 8dd9e6eb5a | |
Michael Primm | ea21f4c4df | |
Michael Primm | 485aec3c1c | |
Michael Primm | 0f0d4f2ce9 | |
mikeprimm | 83d9247f78 | |
mikeprimm | bfd43d678c | |
Michael Primm | 9a02868534 | |
Michael Primm | f25d17d3ce | |
mikeprimm | 4a0225bf83 | |
Kosma Moczek | 7af46a04a6 | |
Michael Primm | 2fd5db2835 | |
Michael Primm | caef8f433e | |
mikeprimm | a52ea70b27 | |
Kosma Moczek | b4c4b21a04 | |
Kosma Moczek | 3bb74d41c2 | |
Kosma Moczek | ff5f829f16 | |
Kosma Moczek | eee5565f86 | |
Kosma Moczek | d85be30e43 | |
Kosma Moczek | 098081f2f3 | |
mikeprimm | bb0e9dada7 | |
mikeprimm | fd2e4ba8c8 | |
mikeprimm | c508711f1c | |
Max | 52829462e9 | |
Max | 1a261c6422 | |
Shaijana | bf8a8d9b45 | |
Jurgen | cc88883dc1 | |
Jurgen | 7b82a9182e | |
Michael Primm | 4efc418691 | |
Michael Primm | f773175a7b | |
mikeprimm | dbfcfe03d4 | |
mikeprimm | 322c370bbc | |
mikeprimm | 6fd70b65fe | |
mikeprimm | 202625ac23 | |
JurgenKuyper | 8f62d8e57e | |
Jurgen | d681f05eeb | |
Joo200 | ae9e144774 | |
jonasbn | af930cd9d4 | |
Michael Primm | a6548ec0b7 | |
Michael Primm | 5ddcf1794e | |
Michael Primm | 9f9d12a580 | |
Michael Primm | fe100abb51 | |
Michael Primm | edf6e256e1 | |
Michael Primm | 814068cf53 | |
Michael Primm | 287d900047 | |
mikeprimm | bc7ecb4f23 | |
Joo200 | 0122561150 | |
mikeprimm | e168e87bba | |
mastermc05 | fe4ff57279 | |
Michael Primm | 8af0ad8b8c | |
mikeprimm | 9e58477f3d | |
Kosma Moczek | 7dee2150b6 | |
Kosma Moczek | 7a5440f32e | |
Kosma Moczek | c1fcfd15b6 | |
Kosma Moczek | 743c6ee946 | |
Kosma Moczek | 68a379cdd2 | |
Kosma Moczek | 5795ebeac6 | |
Kosma Moczek | 0f6c2520ff | |
Kosma Moczek | 2ed13761c4 | |
Michael Primm | eca305c519 | |
mikeprimm | d048aad743 | |
mikeprimm | e0cbd1fe8e | |
mikeprimm | e15f3f8460 | |
mikeprimm | 26fa3a24c5 | |
mikeprimm | 7d1a273e6d | |
mikeprimm | 9f16074a75 | |
mikeprimm | 9a8ef557af | |
mikeprimm | 7f71e7ef9b | |
mastermc05 | a5e7ae1013 | |
mastermc05 | e3911b0d3b | |
mastermc05 | adc9e273ca | |
mastermc05 | 4fdb04725d | |
mastermc05 | d434b33cfb | |
mastermc05 | 1f352e0b11 | |
mastermc05 | ed9fb8614d | |
mastermc05 | 9060c8f32b | |
mastermc05 | a6ead1bc3d | |
mastermc05 | 6245a18381 | |
mastermc05 | 0043a1e4fb | |
mastermc05 | ec3c0e998b | |
mastermc05 | c643430225 | |
mastermc05 | 64407e3ce1 | |
mastermc05 | 0f8174796c | |
Captain Chaos | 53b3b7c08b | |
Joseph Gullo | ce54de0cd7 | |
mastermc05 | 0ebbc2bbe5 | |
mastermc05 | a40592021f | |
mastermc05 | 053df84196 | |
mastermc05 | 97a82a3d1b | |
mastermc05 | f34929c6cf | |
mastermc05 | 5f29846645 | |
mastermc05 | 8a8e2ecfcf | |
mastermc05 | 1f1a342777 | |
mastermc05 | 59f44f7425 | |
mastermc05 | 39adaeca56 | |
Warrior | 8ce85322dd | |
Maximilian Zettler | a70530edc8 | |
gmfamily | 61bfe66430 | |
mikeprimm | 66fe5d4a8b | |
mikeprimm | 5aaff7cea9 | |
mikeprimm | 686d61c463 | |
Jurgen | d25040e1cf | |
Jurgen | adfe0471e3 | |
Kosma Moczek | e32b8d0f77 | |
mikeprimm | 5d867239b2 | |
FedUpWith-Tech | aa4d50503e | |
Mike Primm | f96b4d2900 | |
Mike Primm | 2a10499325 | |
Mike Primm | a6b56dc36e | |
Mike Primm | 0445814ef5 | |
Mike Primm | 4cd915e1ab | |
mikeprimm | 171b7c9e54 | |
mikeprimm | 7ddecaa566 | |
mikeprimm | a2c1941585 | |
mikeprimm | b9e57e4e33 | |
Kosma Moczek | 058599be77 | |
mastermc05 | 36924b4942 | |
stepech | 0eb2dffac2 | |
Michele | e2da0efd8e | |
mastermc05 | 36ea4c3938 | |
mastermc05 | d0e9b66d4a | |
Mike Primm | f89777a0dd | |
Mike Primm | 0ab9c9e47b | |
Mike Primm | 3b0814e853 | |
Mike Primm | 46bd040981 | |
Michele0303 | 8909fea4b1 | |
Michele0303 | b5ac020a56 | |
Mike Primm | 7570cf5994 | |
Mike Primm | 85f09b9c2f | |
mikeprimm | fe97e28401 | |
Евгений | 43c1159fae | |
Mike Primm | b331cfaf27 | |
Mike Primm | dc66d12916 | |
Mike Primm | 082878aade | |
Mike Primm | bf8d5eb6cf | |
mikeprimm | 7dabbab8c9 | |
Kosma Moczek | e943a26a5b | |
Kosma Moczek | 1de1c7ce69 | |
Kosma Moczek | 682ed12c69 | |
Kosma Moczek | dc0296f845 | |
Kosma Moczek | 9cd7a3489a | |
Kosma Moczek | 4ec0d5af37 | |
Mike Primm | 47f5779e6f |
|
@ -11,4 +11,4 @@ jobs:
|
|||
- name: actions/checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: rojopolis/spellcheck - actually doing something
|
||||
uses: rojopolis/spellcheck-github-actions@0.20.0
|
||||
uses: rojopolis/spellcheck-github-actions@0.29.0
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
"java.configuration.updateBuildConfiguration": "automatic"
|
||||
"java.configuration.updateBuildConfiguration": "automatic",
|
||||
"java.compile.nullAnalysis.mode": "automatic"
|
||||
}
|
|
@ -8,20 +8,24 @@ eclipse {
|
|||
}
|
||||
}
|
||||
|
||||
sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
|
||||
|
||||
dependencies {
|
||||
implementation project(path: ':DynmapCoreAPI', configuration: 'shadow')
|
||||
implementation project(':DynmapCoreAPI')
|
||||
implementation 'javax.servlet:javax.servlet-api:3.1'
|
||||
implementation 'org.eclipse.jetty:jetty-server:9.4.26.v20200117'
|
||||
implementation'org.eclipse.jetty:jetty-server:9.4.26.v20200117'
|
||||
implementation 'org.eclipse.jetty:jetty-servlet:9.4.26.v20200117'
|
||||
implementation 'com.googlecode.json-simple:json-simple:1.1.1'
|
||||
implementation 'org.yaml:snakeyaml:1.23' // DON'T UPDATE - NEWER ONE TRIPS ON WINDOWS ENCODED FILES
|
||||
implementation 'com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20180219.1'
|
||||
implementation 'org.postgresql:postgresql:42.2.18'
|
||||
implementation 'io.github.linktosriram:s3-lite-core:0.2.0'
|
||||
implementation 'io.github.linktosriram:s3-lite-api:0.2.0'
|
||||
implementation 'io.github.linktosriram:s3-lite-http-client-url-connection:0.2.0'
|
||||
implementation 'io.github.linktosriram:s3-lite-http-client-spi:0.2.0'
|
||||
implementation 'io.github.linktosriram:s3-lite-util:0.2.0'
|
||||
implementation 'io.github.linktosriram.s3lite:core:0.0.2-SNAPSHOT'
|
||||
implementation 'io.github.linktosriram.s3lite:api:0.0.2-SNAPSHOT'
|
||||
implementation 'io.github.linktosriram.s3lite:http-client-url-connection:0.0.2-SNAPSHOT'
|
||||
implementation 'io.github.linktosriram.s3lite:http-client-spi:0.0.2-SNAPSHOT'
|
||||
implementation 'io.github.linktosriram.s3lite:util:0.0.2-SNAPSHOT'
|
||||
implementation 'jakarta.xml.bind:jakarta.xml.bind-api:3.0.1'
|
||||
implementation 'com.sun.xml.bind:jaxb-impl:3.0.0'
|
||||
}
|
||||
|
||||
processResources {
|
||||
|
@ -44,7 +48,7 @@ processResources {
|
|||
}
|
||||
|
||||
jar {
|
||||
classifier = 'unshaded'
|
||||
archiveClassifier = 'unshaded'
|
||||
}
|
||||
|
||||
shadowJar {
|
||||
|
@ -56,11 +60,13 @@ shadowJar {
|
|||
include(dependency('org.eclipse.jetty::'))
|
||||
include(dependency('org.eclipse.jetty.orbit:javax.servlet:'))
|
||||
include(dependency('org.postgresql:postgresql:'))
|
||||
include(dependency('io.github.linktosriram:s3-lite-core:'))
|
||||
include(dependency('io.github.linktosriram:s3-lite-api:'))
|
||||
include(dependency('io.github.linktosriram:s3-lite-http-client-url-connection:'))
|
||||
include(dependency('io.github.linktosriram:s3-lite-http-client-spi:'))
|
||||
include(dependency('io.github.linktosriram:s3-lite-util:'))
|
||||
include(dependency('io.github.linktosriram.s3lite:core:'))
|
||||
include(dependency('io.github.linktosriram.s3lite:api:'))
|
||||
include(dependency('io.github.linktosriram.s3lite:http-client-url-connection:'))
|
||||
include(dependency('io.github.linktosriram.s3lite:http-client-spi:'))
|
||||
include(dependency('io.github.linktosriram.s3lite:util:'))
|
||||
include(dependency('jakarta.xml.bind::'))
|
||||
include(dependency('com.sun.xml.bind::'))
|
||||
include(dependency(':DynmapCoreAPI'))
|
||||
exclude("META-INF/maven/**")
|
||||
exclude("META-INF/services/**")
|
||||
|
@ -73,8 +79,8 @@ shadowJar {
|
|||
relocate('org.postgresql', 'org.dynmap.org.postgresql')
|
||||
relocate('io.github.linktosriram.s3lite', 'org.dynmap.s3lite')
|
||||
|
||||
destinationDir = file '../target'
|
||||
classifier = ''
|
||||
destinationDirectory = file '../target'
|
||||
archiveClassifier = ''
|
||||
}
|
||||
|
||||
artifacts {
|
||||
|
|
|
@ -286,6 +286,8 @@ public class Client {
|
|||
private static PolicyFactory sanitizer = null;
|
||||
private static PolicyFactory OLDTAGS = new HtmlPolicyBuilder().allowElements("center", "basefont", "hr").toFactory();
|
||||
public static String sanitizeHTML(String html) {
|
||||
// Don't sanitize if null or no html markup
|
||||
if ((html == null) || (html.indexOf('<') < 0)) return html;
|
||||
PolicyFactory s = sanitizer;
|
||||
if (s == null) {
|
||||
// Generous but safe html formatting allowances
|
||||
|
|
|
@ -12,6 +12,7 @@ public class ClientUpdateComponent extends Component {
|
|||
private int hideifshadow;
|
||||
private int hideifunder;
|
||||
private boolean hideifsneaking;
|
||||
private boolean hideifspectator;
|
||||
private boolean hideifinvisiblepotion;
|
||||
private boolean is_protected;
|
||||
public static boolean usePlayerColors;
|
||||
|
@ -24,6 +25,7 @@ public class ClientUpdateComponent extends Component {
|
|||
hideifshadow = configuration.getInteger("hideifshadow", 15);
|
||||
hideifunder = configuration.getInteger("hideifundercover", 15);
|
||||
hideifsneaking = configuration.getBoolean("hideifsneaking", false);
|
||||
hideifspectator = configuration.getBoolean("hideifspectator", false);
|
||||
hideifinvisiblepotion = configuration.getBoolean("hide-if-invisiblity-potion", true);
|
||||
is_protected = configuration.getBoolean("protected-player-info", false);
|
||||
usePlayerColors = configuration.getBoolean("use-name-colors", false);
|
||||
|
@ -100,6 +102,9 @@ public class ClientUpdateComponent extends Component {
|
|||
if((!hide) && hideifsneaking && p.isSneaking()) {
|
||||
hide = true;
|
||||
}
|
||||
if((!hide) && hideifspectator && p.isSpectator()) {
|
||||
hide = true;
|
||||
}
|
||||
if((!hide) && is_protected && (!see_all)) {
|
||||
if(e.user != null) {
|
||||
hide = !core.testIfPlayerVisibleToPlayer(e.user, p.getName());
|
||||
|
|
|
@ -1,11 +1,15 @@
|
|||
package org.dynmap;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.Reader;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
@ -82,13 +86,13 @@ public class ConfigurationNode implements Map<String, Object> {
|
|||
initparse();
|
||||
// If no file to read, just return false
|
||||
if (!f.canRead()) { return false; }
|
||||
FileInputStream fis = null;
|
||||
Reader fr = null;
|
||||
try {
|
||||
fis = new FileInputStream(f);
|
||||
Object o = yaml.load(new UnicodeReader(fis));
|
||||
fr = new UnicodeReader(new BufferedInputStream(new FileInputStream(f)));
|
||||
Object o = yaml.load(fr);
|
||||
if((o != null) && (o instanceof Map))
|
||||
entries = (Map<String, Object>)o;
|
||||
fis.close();
|
||||
fr.close();
|
||||
}
|
||||
catch (YAMLException e) {
|
||||
Log.severe("Error parsing " + f.getPath() + ". Use http://yamllint.com to debug the YAML syntax." );
|
||||
|
@ -97,8 +101,8 @@ public class ConfigurationNode implements Map<String, Object> {
|
|||
Log.severe("Error reading " + f.getPath());
|
||||
return false;
|
||||
} finally {
|
||||
if(fis != null) {
|
||||
try { fis.close(); } catch (IOException x) {}
|
||||
if(fr != null) {
|
||||
try { fr.close(); } catch (IOException x) {}
|
||||
}
|
||||
}
|
||||
return (entries != null);
|
||||
|
@ -111,7 +115,7 @@ public class ConfigurationNode implements Map<String, Object> {
|
|||
public boolean save(File file) {
|
||||
initparse();
|
||||
|
||||
FileOutputStream stream = null;
|
||||
OutputStream stream = null;
|
||||
|
||||
File parent = file.getParentFile();
|
||||
|
||||
|
@ -120,7 +124,7 @@ public class ConfigurationNode implements Map<String, Object> {
|
|||
}
|
||||
|
||||
try {
|
||||
stream = new FileOutputStream(file);
|
||||
stream = new BufferedOutputStream(new FileOutputStream(file));
|
||||
OutputStreamWriter writer = new OutputStreamWriter(stream, "UTF-8");
|
||||
yaml.dump(entries, writer);
|
||||
return true;
|
||||
|
|
|
@ -164,6 +164,7 @@ public class DynmapCore implements DynmapCommonAPI {
|
|||
private File dataDirectory;
|
||||
private File tilesDirectory;
|
||||
private File exportDirectory;
|
||||
private File importDirectory;
|
||||
private String plugin_ver;
|
||||
private MapStorage defaultStorage;
|
||||
|
||||
|
@ -177,6 +178,8 @@ public class DynmapCore implements DynmapCommonAPI {
|
|||
private Boolean webserverCompConfigWarn = false;
|
||||
private final String CompConfigWiki = "https://github.com/webbukkit/dynmap/wiki/Component-Configuration";
|
||||
|
||||
private final String[] defaultTemplates = {"vlowres", "lowres", "medres", "hires", "low_boost_hi",
|
||||
"hi_boost_vhi", "hi_boost_xhi"};
|
||||
/* Constructor for core */
|
||||
public DynmapCore() {
|
||||
}
|
||||
|
@ -222,6 +225,9 @@ public class DynmapCore implements DynmapCommonAPI {
|
|||
public final File getExportFolder() {
|
||||
return exportDirectory;
|
||||
}
|
||||
public final File getImportFolder() {
|
||||
return importDirectory;
|
||||
}
|
||||
public void setMinecraftVersion(String mcver) {
|
||||
this.platformVersion = mcver;
|
||||
}
|
||||
|
@ -426,6 +432,11 @@ public class DynmapCore implements DynmapCommonAPI {
|
|||
if (!exportDirectory.isDirectory() && !exportDirectory.mkdirs()) {
|
||||
Log.warning("Could not create directory for exports ('" + exportDirectory + "').");
|
||||
}
|
||||
// Prime the imports directory
|
||||
importDirectory = getFile(configuration.getString("importpath", "import"));
|
||||
if (!importDirectory.isDirectory() && !importDirectory.mkdirs()) {
|
||||
Log.warning("Could not create directory for imports ('" + importDirectory + "').");
|
||||
}
|
||||
// Create default storage handler
|
||||
String storetype = configuration.getString("storage/type", "filetree");
|
||||
if (storetype.equals("filetree")) {
|
||||
|
@ -701,7 +712,7 @@ public class DynmapCore implements DynmapCommonAPI {
|
|||
/* Print version info */
|
||||
Log.info("version " + plugin_ver + " is enabled - core version " + version );
|
||||
Log.info("For support, visit our Discord at https://discord.gg/s3rd5qn");
|
||||
Log.info("For news, visit https://reddit.com/r/Dynmap or follow https://twitter.com/Dynmap");
|
||||
Log.info("For news, visit https://reddit.com/r/Dynmap or follow https://universeodon.com/@dynmap");
|
||||
Log.info("To report or track bugs, visit https://github.com/webbukkit/dynmap/issues");
|
||||
Log.info("If you'd like to donate, please visit https://www.patreon.com/dynmap or https://ko-fi.com/michaelprimm");
|
||||
|
||||
|
@ -1357,7 +1368,7 @@ public class DynmapCore implements DynmapCommonAPI {
|
|||
new CommandInfo("dmap", "mapadd", "<world>:<map> <attrib>:<value> <attrib>:<value>", "Create map for world <world> with name <map> using provided attributes."),
|
||||
new CommandInfo("dmap", "mapset", "<world>:<map> <attrib>:<value> <attrib>:<value>", "Update map <map> of world <world> with new attribute values."),
|
||||
new CommandInfo("dmap", "worldreset", "<world>", "Reset world <world> to default template for world type"),
|
||||
new CommandInfo("dmap", "worldreset", "<world> <templatename>", "Reset world <world> to temaplte <templatename>."),
|
||||
new CommandInfo("dmap", "worldreset", "<world> <templatename>", "Reset world <world> to template <templatename>."),
|
||||
new CommandInfo("dmap", "worldgetlimits", "<world>", "List visibity and hidden limits for world"),
|
||||
new CommandInfo("dmap", "worldaddlimit", "<world> corner1:<x>/<z> corner2:<x>/<z>", "Add rectangular visibilty limit"),
|
||||
new CommandInfo("dmap", "worldaddlimit", "<world> type:round center:<x>/<z> radius:<radius>", "Add round visibilty limit"),
|
||||
|
@ -2167,6 +2178,9 @@ public class DynmapCore implements DynmapCommonAPI {
|
|||
ConfigurationNode getDefaultTemplateConfigurationNode(DynmapWorld world) {
|
||||
String environmentName = world.getEnvironment();
|
||||
if(deftemplatesuffix.length() > 0) {
|
||||
if(!Arrays.asList(defaultTemplates).contains(deftemplatesuffix)) {
|
||||
Log.warning("Not using a default defined template, worlds might not be accessible.");
|
||||
}
|
||||
environmentName += "-" + deftemplatesuffix;
|
||||
}
|
||||
Log.verboseinfo("Using environment as template: " + environmentName);
|
||||
|
|
|
@ -92,6 +92,7 @@ public class DynmapMapCommands {
|
|||
mapSetArgs.put("boostzoom", emptySupplier);
|
||||
mapSetArgs.put("tilescale", emptySupplier);
|
||||
mapSetArgs.put("tileupdatedelay", emptySupplier);
|
||||
mapSetArgs.put("readonly", booleanSupplier);
|
||||
|
||||
tabCompletions = new HashMap<>();
|
||||
tabCompletions.put("worldaddlimit", worldAddLimitArgs);
|
||||
|
@ -696,7 +697,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()).append(", tilescale=").append(hdmt.getTileScale());
|
||||
sb.append(", protected=").append(hdmt.isProtected()).append(", tilescale=").append(hdmt.getTileScale()).append(", readonly=").append(hdmt.isReadOnly());
|
||||
if(hdmt.tileupdatedelay > 0) {
|
||||
sb.append(", tileupdatedelay=").append(hdmt.tileupdatedelay);
|
||||
}
|
||||
|
@ -996,6 +997,9 @@ public class DynmapMapCommands {
|
|||
else if(tok[0].equalsIgnoreCase("protected")) {
|
||||
did_update |= mt.setProtected(Boolean.parseBoolean(tok[1]));
|
||||
}
|
||||
else if(tok[0].equalsIgnoreCase("readonly")) {
|
||||
did_update |= mt.setReadOnly(Boolean.parseBoolean(tok[1]));
|
||||
}
|
||||
}
|
||||
if(did_update) {
|
||||
if(core.updateWorldConfig(w)) {
|
||||
|
|
|
@ -27,6 +27,7 @@ import org.json.simple.parser.ParseException;
|
|||
import static org.dynmap.JSONUtils.*;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public class JsonFileClientUpdateComponent extends ClientUpdateComponent {
|
||||
protected long jsonInterval;
|
||||
|
@ -338,9 +339,12 @@ public class JsonFileClientUpdateComponent extends ClientUpdateComponent {
|
|||
else {
|
||||
outputFile = "dynmap_" + dynmapWorld.getName() + ".json";
|
||||
}
|
||||
byte[] content = Json.stringifyJson(update).getBytes(cs_utf8);
|
||||
|
||||
enqueueFileWrite(outputFile, content, dowrap);
|
||||
CompletableFuture.runAsync(() -> {
|
||||
byte[] content = Json.stringifyJson(update).getBytes(cs_utf8);
|
||||
|
||||
enqueueFileWrite(outputFile, content, dowrap);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -629,10 +629,12 @@ public class MapManager {
|
|||
renderedmaps.addAll(map.getMapsSharingRender(world));
|
||||
|
||||
/* Now, prime the render queue */
|
||||
for (MapTile mt : map.getTiles(world, (int)loc.x, (int)loc.y, (int)loc.z)) {
|
||||
if (!found.getFlag(mt.tileOrdinalX(), mt.tileOrdinalY())) {
|
||||
found.setFlag(mt.tileOrdinalX(), mt.tileOrdinalY(), true);
|
||||
renderQueue.add(mt);
|
||||
if (map.isReadOnly() == false) {
|
||||
for (MapTile mt : map.getTiles(world, (int)loc.x, (int)loc.y, (int)loc.z)) {
|
||||
if (!found.getFlag(mt.tileOrdinalX(), mt.tileOrdinalY())) {
|
||||
found.setFlag(mt.tileOrdinalX(), mt.tileOrdinalY(), true);
|
||||
renderQueue.add(mt);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!updaterender) { /* Only add other seed points for fullrender */
|
||||
|
@ -692,6 +694,7 @@ public class MapManager {
|
|||
}
|
||||
});
|
||||
rslt.add(future);
|
||||
|
||||
}
|
||||
}
|
||||
/* Now, do our render (first one) */
|
||||
|
@ -1071,6 +1074,10 @@ public class MapManager {
|
|||
tiles.clear();
|
||||
for(DynmapWorld w : worlds) {
|
||||
for(MapTypeState mts : w.mapstate) {
|
||||
if (mts.type.isReadOnly()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if(mts.getNextInvalidTileCoord(coord)) {
|
||||
mts.type.addMapTiles(tiles, w, coord.x, coord.y);
|
||||
mts.validateTile(coord.x, coord.y);
|
||||
|
@ -1902,6 +1909,10 @@ public class MapManager {
|
|||
}
|
||||
if(world == null) continue;
|
||||
for (MapTypeState mts : world.mapstate) {
|
||||
if (mts.type.isReadOnly()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
List<TileFlags.TileCoord> tiles = mts.type.getTileCoords(world, evt.x, evt.y, evt.z);
|
||||
invalidates += mts.invalidateTiles(tiles);
|
||||
}
|
||||
|
@ -1934,6 +1945,10 @@ public class MapManager {
|
|||
if(world == null) continue;
|
||||
int invalidates = 0;
|
||||
for (MapTypeState mts : world.mapstate) {
|
||||
if (mts.type.isReadOnly()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
List<TileFlags.TileCoord> tiles = mts.type.getTileCoords(world, evt.xmin, evt.ymin, evt.zmin, evt.xmax, evt.ymax, evt.zmax);
|
||||
invalidates += mts.invalidateTiles(tiles);
|
||||
}
|
||||
|
|
|
@ -10,6 +10,10 @@ import org.json.simple.JSONObject;
|
|||
|
||||
public abstract class MapType {
|
||||
private boolean is_protected;
|
||||
/**
|
||||
* Is the map type read-only? (i.e. should not be updated by renderer)
|
||||
*/
|
||||
private boolean is_readonly;
|
||||
protected int tileupdatedelay;
|
||||
|
||||
public enum ImageVariant {
|
||||
|
@ -207,6 +211,26 @@ public abstract class MapType {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
* Is the map type read-only? (i.e. should not be updated by renderer)
|
||||
* @return true if read-only
|
||||
*/
|
||||
public boolean isReadOnly() {
|
||||
return is_readonly;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set read-only state of map type
|
||||
* @param r - true if read-only
|
||||
* @return true if state changed
|
||||
*/
|
||||
public boolean setReadOnly(boolean r) {
|
||||
if(is_readonly != r) {
|
||||
is_readonly = r;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public abstract String getPrefix();
|
||||
|
||||
public int getTileUpdateDelay(DynmapWorld w) {
|
||||
|
|
|
@ -7,11 +7,11 @@ import java.io.IOException;
|
|||
import java.io.UnsupportedEncodingException;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.SecureRandom;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Properties;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
|
||||
import org.dynmap.common.DynmapCommandSender;
|
||||
|
@ -26,8 +26,9 @@ public class WebAuthManager {
|
|||
public static final String WEBAUTHFILE = "webauth.txt";
|
||||
private static final String HASHSALT = "$HASH_SALT$";
|
||||
private static final String PWDHASH_PREFIX = "hash.";
|
||||
private Random rnd = new Random();
|
||||
private SecureRandom rnd = new SecureRandom();
|
||||
private DynmapCore core;
|
||||
private String publicRegistrationURL;
|
||||
|
||||
public WebAuthManager(DynmapCore core) {
|
||||
this.core = core;
|
||||
|
@ -202,7 +203,8 @@ public class WebAuthManager {
|
|||
pending_registrations.put(uid.toLowerCase(), regkey.toLowerCase());
|
||||
sender.sendMessage("Registration pending for user ID: " + uid);
|
||||
sender.sendMessage("Registration code: " + regkey);
|
||||
sender.sendMessage("Enter ID and code on registration web page (login.html) to complete registration");
|
||||
publicRegistrationURL = core.configuration.getString("publicURL", "index.html");
|
||||
sender.sendMessage("Enter ID and code on registration web page (" + publicRegistrationURL.toString() + ") to complete registration");
|
||||
if(other) {
|
||||
DynmapPlayer p = core.getServer().getPlayer(uid);
|
||||
if(p != null) {
|
||||
|
|
|
@ -3,6 +3,7 @@ package org.dynmap.common;
|
|||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.dynmap.hdmap.HDBlockModels;
|
||||
|
||||
|
@ -19,7 +20,7 @@ public class BiomeMap {
|
|||
public static final BiomeMap EXTREME_HILLS = new BiomeMap(3, "EXTREME_HILLS", 0.2, 0.3, "minecraft:mountains");
|
||||
public static final BiomeMap FOREST = new BiomeMap(4, "FOREST", 0.7, 0.8, "minecraft:forest");
|
||||
public static final BiomeMap TAIGA = new BiomeMap(5, "TAIGA", 0.05, 0.8, "minecraft:taiga");
|
||||
public static final BiomeMap SWAMPLAND = new BiomeMap(6, "SWAMPLAND", 0.8, 0.9, 0xE0FFAE, 0x4E0E4E, 0x4E0E4E, "minecraft:swamp");
|
||||
public static final BiomeMap SWAMPLAND = new BiomeMap(6, "SWAMPLAND", 0.8, 0.9, 0xE0FFAE, 0x2e282a, 0x902c52, "minecraft:swamp");
|
||||
public static final BiomeMap RIVER = new BiomeMap(7, "RIVER", "minecraft:river");
|
||||
public static final BiomeMap HELL = new BiomeMap(8, "HELL", 2.0, 0.0, "minecraft:nether");
|
||||
public static final BiomeMap SKY = new BiomeMap(9, "SKY", "minecraft:the_end");
|
||||
|
@ -44,6 +45,7 @@ public class BiomeMap {
|
|||
private int watercolormult;
|
||||
private int grassmult;
|
||||
private int foliagemult;
|
||||
private Optional<?> biomeObj = Optional.empty();
|
||||
private final String id;
|
||||
private final String resourcelocation;
|
||||
private final int index;
|
||||
|
@ -61,7 +63,7 @@ public class BiomeMap {
|
|||
new BiomeMap(26, "COLD_BEACH", 0.05, 0.3, "minecraft:snowy_beach");
|
||||
new BiomeMap(27, "BIRCH_FOREST", 0.6, 0.6, "minecraft:birch_forest");
|
||||
new BiomeMap(28, "BIRCH_FOREST_HILLS", 0.6, 0.6, "minecraft:birch_forest_hills");
|
||||
new BiomeMap(29, "ROOFED_FOREST", 0.7, 0.8, "minecraft:dark_forest");
|
||||
new BiomeMap(29, "ROOFED_FOREST", 0.7, 0.8, 0xFFFFFF, 0x28340A, 0, "minecraft:dark_forest");
|
||||
new BiomeMap(30, "COLD_TAIGA", -0.5, 0.4, "minecraft:snowy_taiga");
|
||||
new BiomeMap(31, "COLD_TAIGA_HILLS", -0.5, 0.4, "minecraft:snowy_taiga_hills");
|
||||
new BiomeMap(32, "MEGA_TAIGA", 0.3, 0.8, "minecraft:giant_tree_taiga");
|
||||
|
@ -69,30 +71,32 @@ public class BiomeMap {
|
|||
new BiomeMap(34, "EXTREME_HILLS_PLUS", 0.2, 0.3, "minecraft:wooded_mountains");
|
||||
new BiomeMap(35, "SAVANNA", 1.2, 0.0, "minecraft:savanna");
|
||||
new BiomeMap(36, "SAVANNA_PLATEAU", 1.0, 0.0, "minecraft:savanna_plateau");
|
||||
new BiomeMap(37, "MESA", 2.0, 0.0, "minecraft:badlands");
|
||||
new BiomeMap(38, "MESA_PLATEAU_FOREST", 2.0, 0.0, "minecraft:wooded_badlands_plateau");
|
||||
new BiomeMap(39, "MESA_PLATEAU", 2.0, 0.0, "minecraft:badlands_plateau");
|
||||
new BiomeMap(37, "MESA", 2.0, 0.0, 0xFFFFFF, 0x624c46, 0x8e5e70, "minecraft:badlands");
|
||||
new BiomeMap(129, "SUNFLOWER_PLAINS", 0.8, 0.4, "minecraft:sunflower_plains");
|
||||
new BiomeMap(130, "DESERT_MOUNTAINS", 2.0, 0.0, "minecraft:desert_lakes");
|
||||
new BiomeMap(131, "EXTREME_HILLS_MOUNTAINS", 0.2, 0.3, "minecraft:gravelly_mountains");
|
||||
new BiomeMap(132, "FLOWER_FOREST", 0.7, 0.8, "minecraft:flower_forest");
|
||||
new BiomeMap(133, "TAIGA_MOUNTAINS", 0.05, 0.8, "minecraft:taiga_mountains");
|
||||
new BiomeMap(134, "SWAMPLAND_MOUNTAINS", 0.8, 0.9, 0xE0FFAE, 0x4E0E4E, 0x4E0E4E, "minecraft:swamp_hills");
|
||||
new BiomeMap(140, "ICE_PLAINS_SPIKES", 0.0, 0.5, "minecraft:ice_spikes");
|
||||
new BiomeMap(149, "JUNGLE_MOUNTAINS", 1.2, 0.9, "minecraft:modified_jungle");
|
||||
new BiomeMap(151, "JUNGLE_EDGE_MOUNTAINS", 0.95, 0.8, "minecraft:modified_jungle_edge");
|
||||
new BiomeMap(155, "BIRCH_FOREST_MOUNTAINS", 0.6, 0.6, "minecraft:tall_birch_forest");
|
||||
new BiomeMap(156, "BIRCH_FOREST_HILLS_MOUNTAINS", 0.6, 0.6, "minecraft:tall_birch_hills");
|
||||
new BiomeMap(157, "ROOFED_FOREST_MOUNTAINS", 0.7, 0.8, "minecraft:dark_forest_hills");
|
||||
new BiomeMap(157, "ROOFED_FOREST_MOUNTAINS", 0.7, 0.8, 0xFFFFFF, 0x28340A, 0, "minecraft:dark_forest_hills");
|
||||
new BiomeMap(158, "COLD_TAIGA_MOUNTAINS", -0.5, 0.4, "minecraft:snowy_taiga_mountains");
|
||||
new BiomeMap(160, "MEGA_SPRUCE_TAIGA", 0.25, 0.8, "minecraft:giant_spruce_taiga");
|
||||
new BiomeMap(161, "MEGA_SPRUCE_TAIGA_HILLS", 0.3, 0.8, "minecraft:giant_spruce_taiga_hills");
|
||||
new BiomeMap(162, "EXTREME_HILLS_PLUS_MOUNTAINS", 0.2, 0.3, "minecraft:modified_gravelly_mountains");
|
||||
new BiomeMap(163, "SAVANNA_MOUNTAINS", 1.2, 0.0, "minecraft:shattered_savanna");
|
||||
new BiomeMap(164, "SAVANNA_PLATEAU_MOUNTAINS", 1.0, 0.0, "minecraft:shattered_savanna_plateau");
|
||||
new BiomeMap(165, "MESA_BRYCE", 2.0, 0.0, "minecraft:eroded_badlands");
|
||||
new BiomeMap(166, "MESA_PLATEAU_FOREST_MOUNTAINS", 2.0, 0.0, "minecraft:modified_wooded_badlands_plateau");
|
||||
new BiomeMap(167, "MESA_PLATEAU_MOUNTAINS", 2.0, 0.0, "minecraft:modified_badlands_plateau");
|
||||
new BiomeMap(165, "MESA_BRYCE", 2.0, 0.0,0xFFFFFF, 0x624c46, 0x8e5e70, "minecraft:eroded_badlands");
|
||||
}
|
||||
if (HDBlockModels.checkVersionRange(mcver, "1.7.0-1.17.1")) {
|
||||
new BiomeMap(38, "MESA_PLATEAU_FOREST", 2.0, 0.0, 0xFFFFFF, 0x624c46, 0x8e5e70, "minecraft:wooded_badlands_plateau");
|
||||
new BiomeMap(39, "MESA_PLATEAU", 2.0, 0.0, 0xFFFFFF, 0x624c46, 0x8e5e70, "minecraft:badlands_plateau");
|
||||
new BiomeMap(134, "SWAMPLAND_MOUNTAINS", 0.8, 0.9, 0xE0FFAE, 0x2e282a, 0x902c52, "minecraft:swamp_hills");
|
||||
new BiomeMap(166, "MESA_PLATEAU_FOREST_MOUNTAINS", 2.0, 0.0,0xFFFFFF, 0x624c46, 0x8e5e70, "minecraft:modified_wooded_badlands_plateau");
|
||||
new BiomeMap(167, "MESA_PLATEAU_MOUNTAINS", 2.0, 0.0,0xFFFFFF, 0x624c46, 0x8e5e70, "minecraft:modified_badlands_plateau");
|
||||
}
|
||||
if (HDBlockModels.checkVersionRange(mcver, "1.9.0-")) {
|
||||
new BiomeMap(127, "THE_VOID", "minecraft:the_void");
|
||||
|
@ -124,6 +128,9 @@ public class BiomeMap {
|
|||
new BiomeMap(174, "DRIPSTONE_CAVES", "minecraft:dripstone_caves");
|
||||
new BiomeMap(175, "LUSH_CAVES", "minecraft:lush_caves");
|
||||
}
|
||||
if (HDBlockModels.checkVersionRange(mcver, "1.18.0-")) {
|
||||
new BiomeMap(38, "MESA_FOREST", 2.0, 0.0, 0xFFFFFF, 0x624c46, 0x8e5e70, "minecraft:wooded_badlands");
|
||||
}
|
||||
loadDone = true;
|
||||
}
|
||||
|
||||
|
@ -303,4 +310,10 @@ public class BiomeMap {
|
|||
public String toString() {
|
||||
return String.format("%s(%s)", id, resourcelocation);
|
||||
}
|
||||
public @SuppressWarnings("unchecked") <T> Optional<T> getBiomeObject() {
|
||||
return (Optional<T>) biomeObj;
|
||||
}
|
||||
public void setBiomeObject(Object biomeObj) {
|
||||
this.biomeObj = Optional.of(biomeObj);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,6 +44,12 @@ public interface DynmapPlayer extends DynmapCommandSender {
|
|||
* @return true if sneaking
|
||||
*/
|
||||
public boolean isSneaking();
|
||||
|
||||
/**
|
||||
* get spectator gamemode
|
||||
* @return true if gamemode spectator
|
||||
*/
|
||||
public boolean isSpectator();
|
||||
/**
|
||||
* Get health
|
||||
* @return health points
|
||||
|
|
|
@ -18,6 +18,7 @@ public class GenericChunkCache {
|
|||
};
|
||||
|
||||
private CacheHashMap snapcache;
|
||||
private final Object snapcachelock;
|
||||
private ReferenceQueue<ChunkCacheRec> refqueue;
|
||||
private long cache_attempts;
|
||||
private long cache_success;
|
||||
|
@ -50,6 +51,7 @@ public class GenericChunkCache {
|
|||
* Create snapshot cache
|
||||
*/
|
||||
public GenericChunkCache(int max_size, boolean softref) {
|
||||
snapcachelock = new Object();
|
||||
snapcache = new CacheHashMap(max_size);
|
||||
refqueue = new ReferenceQueue<ChunkCacheRec>();
|
||||
this.softref = softref;
|
||||
|
@ -62,8 +64,8 @@ public class GenericChunkCache {
|
|||
*/
|
||||
public void invalidateSnapshot(String w, int x, int y, int z) {
|
||||
String key = getKey(w, x>>4, z>>4);
|
||||
synchronized(snapcache) {
|
||||
CacheRec rec = snapcache.remove(key);
|
||||
synchronized(snapcachelock) {
|
||||
CacheRec rec = (snapcache != null) ? snapcache.remove(key) : null;
|
||||
if(rec != null) {
|
||||
snapcache.reverselookup.remove(rec.ref);
|
||||
rec.ref.clear();
|
||||
|
@ -78,8 +80,8 @@ public class GenericChunkCache {
|
|||
for(int xx = (x0>>4); xx <= (x1>>4); xx++) {
|
||||
for(int zz = (z0>>4); zz <= (z1>>4); zz++) {
|
||||
String key = getKey(w, xx, zz);
|
||||
synchronized(snapcache) {
|
||||
CacheRec rec = snapcache.remove(key);
|
||||
synchronized(snapcachelock) {
|
||||
CacheRec rec = (snapcache != null) ? snapcache.remove(key) : null;
|
||||
if(rec != null) {
|
||||
snapcache.reverselookup.remove(rec.ref);
|
||||
rec.ref.clear();
|
||||
|
@ -97,8 +99,8 @@ public class GenericChunkCache {
|
|||
processRefQueue();
|
||||
ChunkCacheRec ss = null;
|
||||
CacheRec rec;
|
||||
synchronized(snapcache) {
|
||||
rec = snapcache.get(key);
|
||||
synchronized(snapcachelock) {
|
||||
rec = (snapcache != null) ? snapcache.get(key) : null;
|
||||
if(rec != null) {
|
||||
ss = rec.ref.get();
|
||||
if(ss == null) {
|
||||
|
@ -123,8 +125,8 @@ public class GenericChunkCache {
|
|||
rec.ref = new SoftReference<ChunkCacheRec>(ss, refqueue);
|
||||
else
|
||||
rec.ref = new WeakReference<ChunkCacheRec>(ss, refqueue);
|
||||
synchronized(snapcache) {
|
||||
CacheRec prevrec = snapcache.put(key, rec);
|
||||
synchronized(snapcachelock) {
|
||||
CacheRec prevrec = (snapcache != null) ? snapcache.put(key, rec) : null;
|
||||
if(prevrec != null) {
|
||||
snapcache.reverselookup.remove(prevrec.ref);
|
||||
}
|
||||
|
@ -137,8 +139,8 @@ public class GenericChunkCache {
|
|||
private void processRefQueue() {
|
||||
Reference<? extends ChunkCacheRec> ref;
|
||||
while((ref = refqueue.poll()) != null) {
|
||||
synchronized(snapcache) {
|
||||
String k = snapcache.reverselookup.remove(ref);
|
||||
synchronized(snapcachelock) {
|
||||
String k = (snapcache != null) ? snapcache.reverselookup.remove(ref) : null;
|
||||
if(k != null) {
|
||||
snapcache.remove(k);
|
||||
}
|
||||
|
@ -164,11 +166,13 @@ public class GenericChunkCache {
|
|||
* Cleanup
|
||||
*/
|
||||
public void cleanup() {
|
||||
if(snapcache != null) {
|
||||
snapcache.clear();
|
||||
snapcache.reverselookup.clear();
|
||||
snapcache.reverselookup = null;
|
||||
snapcache = null;
|
||||
}
|
||||
synchronized(snapcachelock) {
|
||||
if(snapcache != null) {
|
||||
snapcache.clear();
|
||||
snapcache.reverselookup.clear();
|
||||
snapcache.reverselookup = null;
|
||||
snapcache = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,11 +54,13 @@ public abstract class GenericMapChunkCache extends MapChunkCache {
|
|||
private DynmapBlockState blk;
|
||||
private final int worldheight;
|
||||
private final int ymin;
|
||||
private final int sealevel;
|
||||
|
||||
OurMapIterator(int x0, int y0, int z0) {
|
||||
initialize(x0, y0, z0);
|
||||
worldheight = dw.worldheight;
|
||||
ymin = dw.minY;
|
||||
sealevel = dw.sealevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -181,7 +183,7 @@ public abstract class GenericMapChunkCache extends MapChunkCache {
|
|||
for (int dz = -1; dz <= 1; dz++) {
|
||||
BiomeMap bm = getBiomeRel(dx, dz);
|
||||
if (bm == BiomeMap.NULL) continue;
|
||||
int rmult = bm.getModifiedGrassMultiplier(colormap[bm.biomeLookup()]);
|
||||
int rmult = getGrassColor(bm, colormap, getX() + dx, getZ() + dz);
|
||||
raccum += (rmult >> 16) & 0xFF;
|
||||
gaccum += (rmult >> 8) & 0xFF;
|
||||
baccum += rmult & 0xFF;
|
||||
|
@ -212,7 +214,7 @@ public abstract class GenericMapChunkCache extends MapChunkCache {
|
|||
for (int dz = -1; dz <= 1; dz++) {
|
||||
BiomeMap bm = getBiomeRel(dx, dz);
|
||||
if (bm == BiomeMap.NULL) continue;
|
||||
int rmult = bm.getModifiedFoliageMultiplier(colormap[bm.biomeLookup()]);
|
||||
int rmult = getFoliageColor(bm, colormap, getX() + dx, getZ() + dz);
|
||||
raccum += (rmult >> 16) & 0xFF;
|
||||
gaccum += (rmult >> 8) & 0xFF;
|
||||
baccum += rmult & 0xFF;
|
||||
|
@ -483,7 +485,16 @@ public abstract class GenericMapChunkCache extends MapChunkCache {
|
|||
public final int getWorldHeight() {
|
||||
return worldheight;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int getWorldYMin() {
|
||||
return ymin;
|
||||
}
|
||||
/**
|
||||
* Get world sealevel
|
||||
*/
|
||||
public final int getWorldSeaLevel() {
|
||||
return sealevel;
|
||||
}
|
||||
@Override
|
||||
public final long getBlockKey() {
|
||||
return (((chunkindex * (worldheight - ymin)) + (y - ymin)) << 8) | (bx << 4) | bz;
|
||||
|
@ -546,6 +557,14 @@ public abstract class GenericMapChunkCache extends MapChunkCache {
|
|||
}
|
||||
}
|
||||
|
||||
public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) {
|
||||
return bm.getModifiedGrassMultiplier(colormap[bm.biomeLookup()]);
|
||||
}
|
||||
|
||||
public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) {
|
||||
return bm.getModifiedFoliageMultiplier(colormap[bm.biomeLookup()]);
|
||||
}
|
||||
|
||||
private class OurEndMapIterator extends OurMapIterator {
|
||||
OurEndMapIterator(int x0, int y0, int z0) {
|
||||
super(x0, y0, z0);
|
||||
|
@ -1276,19 +1295,19 @@ public abstract class GenericMapChunkCache extends MapChunkCache {
|
|||
bitsperblock = (statelist.length * 64) / 4096;
|
||||
dbp = new DataBitsPacked(bitsperblock, 4096, statelist);
|
||||
}
|
||||
if (bitsperblock > 8) { // Not palette
|
||||
for (int j = 0; j < 4096; j++) {
|
||||
int v = db != null ? db.get(j) : dbp.getAt(j);
|
||||
sbld.xyzBlockState(j & 0xF, (j & 0xF00) >> 8, (j & 0xF0) >> 4, DynmapBlockState.getStateByGlobalIndex(v));
|
||||
}
|
||||
}
|
||||
else {
|
||||
//if (bitsperblock > 8) { // Not palette
|
||||
// for (int j = 0; j < 4096; j++) {
|
||||
// int v = db != null ? db.get(j) : dbp.getAt(j);
|
||||
// sbld.xyzBlockState(j & 0xF, (j & 0xF00) >> 8, (j & 0xF0) >> 4, DynmapBlockState.getStateByGlobalIndex(v));
|
||||
// }
|
||||
//}
|
||||
//else {
|
||||
sbld.xyzBlockStatePalette(palette); // Set palette
|
||||
for (int j = 0; j < 4096; j++) {
|
||||
int v = db != null ? db.get(j) : dbp.getAt(j);
|
||||
sbld.xyzBlockStateInPalette(j & 0xF, (j & 0xF00) >> 8, (j & 0xF0) >> 4, (short)v);
|
||||
}
|
||||
}
|
||||
//}
|
||||
}
|
||||
}
|
||||
if (sec.contains("BlockLight")) {
|
||||
|
@ -1304,8 +1323,10 @@ public abstract class GenericMapChunkCache extends MapChunkCache {
|
|||
long[] bdataPacked = nbtbiomes.getLongArray("data");
|
||||
GenericNBTList bpalette = nbtbiomes.getList("palette", 8);
|
||||
GenericBitStorage bdata = null;
|
||||
if (bdataPacked.length > 0)
|
||||
bdata = nbt.makeBitStorage(bdataPacked.length, 64, bdataPacked);
|
||||
if (bdataPacked.length > 0) {
|
||||
int valsPerLong = (64 / bdataPacked.length);
|
||||
bdata = nbt.makeBitStorage((64 + valsPerLong - 1) / valsPerLong, 64, bdataPacked);
|
||||
}
|
||||
for (int j = 0; j < 64; j++) {
|
||||
int b = bdata != null ? bdata.get(j) : 0;
|
||||
sbld.xyzBiome(j & 0x3, (j & 0x30) >> 4, (j & 0xC) >> 2, BiomeMap.byBiomeResourceLocation(bpalette.getString(b)));
|
||||
|
|
|
@ -22,6 +22,8 @@ import org.json.simple.JSONObject;
|
|||
public class CaveHDShader implements HDShader {
|
||||
private String name;
|
||||
private boolean iflit;
|
||||
private Color startColor;
|
||||
private Color endColor;
|
||||
private BitSet hiddenids = new BitSet();
|
||||
|
||||
private void setHidden(DynmapBlockState blk) {
|
||||
|
@ -41,7 +43,8 @@ public class CaveHDShader implements HDShader {
|
|||
public CaveHDShader(DynmapCore core, ConfigurationNode configuration) {
|
||||
name = (String) configuration.get("name");
|
||||
iflit = configuration.getBoolean("onlyiflit", false);
|
||||
|
||||
startColor = configuration.getColor("startColor", null);
|
||||
endColor = configuration.getColor("endColor", null);
|
||||
for (int i = 0; i < DynmapBlockState.getGlobalIndexMax(); i++) {
|
||||
DynmapBlockState bs = DynmapBlockState.getStateByGlobalIndex(i);
|
||||
if (bs.isAir() || bs.isWater()) {
|
||||
|
@ -115,19 +118,17 @@ public class CaveHDShader implements HDShader {
|
|||
protected MapIterator mapiter;
|
||||
protected HDMap map;
|
||||
private boolean air;
|
||||
private int yshift;
|
||||
private final int sealevel;
|
||||
private final int ymax, ymin;
|
||||
final int[] lightingTable;
|
||||
|
||||
private OurShaderState(MapIterator mapiter, HDMap map, MapChunkCache cache) {
|
||||
this.mapiter = mapiter;
|
||||
this.map = map;
|
||||
this.color = new Color();
|
||||
int wheight = mapiter.getWorldHeight();
|
||||
yshift = 0;
|
||||
while(wheight > 128) {
|
||||
wheight >>= 1;
|
||||
yshift++;
|
||||
}
|
||||
this.ymax = mapiter.getWorldHeight() - 1;
|
||||
this.ymin = mapiter.getWorldYMin();
|
||||
this.sealevel = mapiter.getWorldSeaLevel();
|
||||
if (MapManager.mapman.useBrightnessTable()) {
|
||||
lightingTable = cache.getWorld().getBrightnessTable();
|
||||
}
|
||||
|
@ -187,17 +188,27 @@ public class CaveHDShader implements HDShader {
|
|||
return false;
|
||||
}
|
||||
int cr, cg, cb;
|
||||
int mult = 256;
|
||||
int mult;
|
||||
|
||||
int ys = mapiter.getY() >> yshift;
|
||||
if (ys < 64) {
|
||||
cr = 0;
|
||||
cg = 64 + ys * 3;
|
||||
cb = 255 - ys * 4;
|
||||
} else {
|
||||
cr = (ys - 64) * 4;
|
||||
cg = 255;
|
||||
cb = 0;
|
||||
int y = mapiter.getY();
|
||||
if((startColor != null) && (endColor != null))
|
||||
{
|
||||
double interp = ((double)(y - this.ymin)) / (this.ymax - this.ymin);
|
||||
cr = (int)(((1.0 - interp) * startColor.getRed()) + (interp * endColor.getRed()));
|
||||
cg = (int)(((1.0 - interp) * startColor.getGreen()) + (interp * endColor.getGreen()));
|
||||
cb = (int)(((1.0 - interp) * startColor.getBlue()) + (interp * endColor.getBlue()));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (y < this.sealevel) {
|
||||
cr = 0;
|
||||
cg = 64 + ((192 * (y - this.ymin)) / (this.sealevel - this.ymin));
|
||||
cb = 255 - (255 * (y - this.ymin)) / (this.sealevel - this.ymin);
|
||||
} else {
|
||||
cr = (255 * (y - this.sealevel)) / (this.ymax - this.sealevel);
|
||||
cg = 255;
|
||||
cb = 0;
|
||||
}
|
||||
}
|
||||
/* Figure out which color to use */
|
||||
switch(ps.getLastBlockStep()) {
|
||||
|
|
|
@ -34,7 +34,7 @@ public class ChunkVersionHDShader implements HDShader {
|
|||
|
||||
}
|
||||
};
|
||||
// Mapping from https://minecraft.fandom.com/wiki/Data_version
|
||||
// Mapping from https://minecraft.wiki/w/Data_version
|
||||
final static DataVersionMap[] versionmap = {
|
||||
new DataVersionMap(0, "unknown", 0x202020),
|
||||
new DataVersionMap(1519, "1.13.0", 0xF9E79F),
|
||||
|
@ -61,6 +61,10 @@ public class ChunkVersionHDShader implements HDShader {
|
|||
new DataVersionMap(2975, "1.18.2", 0x38bfa5),
|
||||
new DataVersionMap(3105, "1.19", 0xd56f82),
|
||||
new DataVersionMap(3116, "1.19.1", 0xe196a4),
|
||||
new DataVersionMap(3120, "1.19.2", 0xe7aeb8),
|
||||
new DataVersionMap(3218, "1.19.3", 0xf8c0c8),
|
||||
new DataVersionMap(3337, "1.19.4", 0xffb6c1),
|
||||
|
||||
};
|
||||
final static Color unknown_color = new Color(255, 255, 255);
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package org.dynmap.hdmap;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
|
@ -255,7 +256,7 @@ public class HDBlockModels {
|
|||
}
|
||||
}
|
||||
} catch (IOException iox) {
|
||||
Log.severe("Error processing nodel files");
|
||||
Log.severe("Error processing model files");
|
||||
} finally {
|
||||
if (in != null) {
|
||||
try { in.close(); } catch (IOException iox) {}
|
||||
|
@ -356,7 +357,7 @@ public class HDBlockModels {
|
|||
int layerbits = 0;
|
||||
int rownum = 0;
|
||||
int scale = 0;
|
||||
rdr = new LineNumberReader(new InputStreamReader(in));
|
||||
rdr = new LineNumberReader(new BufferedReader(new InputStreamReader(in)));
|
||||
while ((line = rdr.readLine()) != null) {
|
||||
boolean skip = false;
|
||||
int lineNum = rdr.getLineNumber();
|
||||
|
|
|
@ -153,6 +153,7 @@ public class HDMap extends MapType {
|
|||
this.append_to_world = configuration.getString("append_to_world", "");
|
||||
setProtected(configuration.getBoolean("protected", false));
|
||||
setTileUpdateDelay(configuration.getInteger("tileupdatedelay", -1));
|
||||
setReadOnly(configuration.getBoolean("readonly", false));
|
||||
}
|
||||
|
||||
public ConfigurationNode saveConfiguration() {
|
||||
|
@ -180,6 +181,7 @@ public class HDMap extends MapType {
|
|||
cn.put("backgroundnight", bg_night_cfg);
|
||||
cn.put("append_to_world", append_to_world);
|
||||
cn.put("protected", isProtected());
|
||||
cn.put("readonly", isReadOnly());
|
||||
if(this.tileupdatedelay > 0) {
|
||||
cn.put("tileupdatedelay", this.tileupdatedelay);
|
||||
}
|
||||
|
|
|
@ -131,6 +131,12 @@ public class HDMapManager {
|
|||
/* If limited to one map, and this isn't it, skip */
|
||||
if((mapname != null) && (!hdmap.getName().equals(mapname)))
|
||||
continue;
|
||||
|
||||
// Maps can be set to read-only, which means they don't get re-rendered
|
||||
if (map.isReadOnly()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
shaders.add(hdmap.getShader().getStateInstance(hdmap, cache, mapiter, scale));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,7 +18,6 @@ import org.dynmap.Log;
|
|||
import org.dynmap.MapManager;
|
||||
import org.dynmap.MapTile;
|
||||
import org.dynmap.MapType;
|
||||
import org.dynmap.MapType.ImageFormat;
|
||||
import org.dynmap.MapTypeState;
|
||||
import org.dynmap.markers.impl.MarkerAPIImpl;
|
||||
import org.dynmap.renderer.DynmapBlockState;
|
||||
|
@ -1269,7 +1268,7 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
// Mark the tiles we're going to render as validated
|
||||
for (int i = 0; i < numshaders; i++) {
|
||||
MapTypeState mts = world.getMapState(shaderstate[i].getMap());
|
||||
if (mts != null) {
|
||||
if (mts != null && mts.type.isReadOnly() == false) {
|
||||
mts.validateTile(tile.tx, tile.ty);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package org.dynmap.hdmap;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
|
@ -1254,8 +1255,13 @@ public class TexturePack {
|
|||
/* Load image */
|
||||
if(is != null) {
|
||||
ImageIO.setUseCache(false);
|
||||
img = ImageIO.read(is);
|
||||
if(img == null) { throw new FileNotFoundException(); }
|
||||
try {
|
||||
img = ImageIO.read(is);
|
||||
} catch (IOException iox) {
|
||||
}
|
||||
if (img == null) {
|
||||
Log.warning(String.format("Error loading image %s from module %s", fname, modid));
|
||||
}
|
||||
}
|
||||
if(idx >= imgs.length) {
|
||||
LoadedImage[] newimgs = new LoadedImage[idx+1];
|
||||
|
@ -1267,7 +1273,17 @@ public class TexturePack {
|
|||
imgs[idx].width = img.getWidth();
|
||||
imgs[idx].height = img.getHeight();
|
||||
imgs[idx].argb = new int[imgs[idx].width * imgs[idx].height];
|
||||
img.getRGB(0, 0, imgs[idx].width, imgs[idx].height, imgs[idx].argb, 0, imgs[idx].width);
|
||||
if (img.getType() == BufferedImage.TYPE_BYTE_GRAY) { // We don't want alpha correction, apparently
|
||||
float[] buffer = new float[imgs[idx].width * imgs[idx].height];
|
||||
img.getData().getPixels(0, 0, imgs[idx].width, imgs[idx].height, buffer);
|
||||
for (int i = 0; i < imgs[idx].argb.length; i++) {
|
||||
int v = (int) buffer[i];
|
||||
imgs[idx].argb[i] = 0xFF000000 | (v << 16) | (v << 8) | v;
|
||||
}
|
||||
}
|
||||
else {
|
||||
img.getRGB(0, 0, imgs[idx].width, imgs[idx].height, imgs[idx].argb, 0, imgs[idx].width);
|
||||
}
|
||||
img.flush();
|
||||
imgs[idx].isLoaded = true;
|
||||
}
|
||||
|
@ -1818,7 +1834,7 @@ public class TexturePack {
|
|||
|
||||
try {
|
||||
String line;
|
||||
rdr = new LineNumberReader(new InputStreamReader(txtfile));
|
||||
rdr = new LineNumberReader(new BufferedReader(new InputStreamReader(txtfile)));
|
||||
while((line = rdr.readLine()) != null) {
|
||||
if(line.startsWith("#")) {
|
||||
}
|
||||
|
@ -1917,7 +1933,7 @@ public class TexturePack {
|
|||
Map<DynmapBlockState, BitSet> bsprslt;
|
||||
try {
|
||||
String line;
|
||||
rdr = new LineNumberReader(new InputStreamReader(txtfile));
|
||||
rdr = new LineNumberReader(new BufferedReader(new InputStreamReader(txtfile)));
|
||||
while((line = rdr.readLine()) != null) {
|
||||
boolean skip = false;
|
||||
int lineNum = rdr.getLineNumber();
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package org.dynmap.hdmap;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
|
@ -61,13 +62,13 @@ public class TexturePackLoader {
|
|||
if (zf != null) {
|
||||
ZipEntry ze = zf.getEntry(rname);
|
||||
if ((ze != null) && (!ze.isDirectory())) {
|
||||
return zf.getInputStream(ze);
|
||||
return new BufferedInputStream(zf.getInputStream(ze));
|
||||
}
|
||||
}
|
||||
else if (tpdir != null) {
|
||||
File f = new File(tpdir, rname);
|
||||
if (f.isFile() && f.canRead()) {
|
||||
return new FileInputStream(f);
|
||||
return new BufferedInputStream(new FileInputStream(f));
|
||||
}
|
||||
}
|
||||
} catch (IOException iox) {
|
||||
|
@ -75,7 +76,7 @@ public class TexturePackLoader {
|
|||
// Fall through - load as resource from mod, if possible, or from jar
|
||||
InputStream is = dsi.openResource(modname, rname);
|
||||
if (is != null) {
|
||||
return is;
|
||||
return new BufferedInputStream(is);
|
||||
}
|
||||
if (modname != null) {
|
||||
ModSource ms = src_by_mod.get(modname);
|
||||
|
@ -118,7 +119,7 @@ public class TexturePackLoader {
|
|||
Log.warning("Resource " + rname + " for mod " + modname + " not found");
|
||||
}
|
||||
|
||||
return is;
|
||||
return (is != null) ? new BufferedInputStream(is) : null;
|
||||
}
|
||||
public void close() {
|
||||
if(zf != null) {
|
||||
|
|
|
@ -72,9 +72,9 @@ class AreaMarkerImpl implements AreaMarker, EnterExitMarker {
|
|||
AreaMarkerImpl(String id, String lbl, boolean markup, String world, double x[], double z[], boolean persistent, MarkerSetImpl set) {
|
||||
markerid = id;
|
||||
if(lbl != null)
|
||||
label = markup ? lbl : Client.encodeForHTML(lbl);
|
||||
label = markup ? Client.sanitizeHTML(lbl) : Client.encodeForHTML(lbl);
|
||||
else
|
||||
label = markup ? id : Client.encodeForHTML(id);
|
||||
label = markup ? Client.sanitizeHTML(id) : Client.encodeForHTML(id);
|
||||
this.markup = markup;
|
||||
this.corners = new ArrayList<Coord>();
|
||||
for(int i = 0; i < x.length; i++) {
|
||||
|
@ -118,9 +118,10 @@ class AreaMarkerImpl implements AreaMarker, EnterExitMarker {
|
|||
* Load marker from configuration node
|
||||
* @param node - configuration node
|
||||
*/
|
||||
boolean loadPersistentData(ConfigurationNode node) {
|
||||
boolean loadPersistentData(ConfigurationNode node, boolean isSafe) {
|
||||
markup = node.getBoolean("markup", false);
|
||||
label = MarkerAPIImpl.escapeForHTMLIfNeeded(node.getString("label", markerid), markup);
|
||||
if (!isSafe) label = Client.sanitizeHTML(label);
|
||||
ytop = node.getDouble("ytop", 64.0);
|
||||
ybottom = node.getDouble("ybottom", 64.0);
|
||||
List<Double> xx = node.getList("x");
|
||||
|
@ -133,6 +134,7 @@ class AreaMarkerImpl implements AreaMarker, EnterExitMarker {
|
|||
world = node.getString("world", "world");
|
||||
normalized_world = DynmapWorld.normalizeWorldName(world);
|
||||
desc = node.getString("desc", null);
|
||||
if (!isSafe) desc = Client.sanitizeHTML(desc);
|
||||
lineweight = node.getInteger("strokeWeight", -1);
|
||||
if(lineweight == -1) { /* Handle typo-saved value */
|
||||
lineweight = node.getInteger("stokeWeight", 3);
|
||||
|
@ -215,12 +217,7 @@ class AreaMarkerImpl implements AreaMarker, EnterExitMarker {
|
|||
@Override
|
||||
public void setLabel(String lbl, boolean markup) {
|
||||
if(markerset == null) return;
|
||||
if (markup) {
|
||||
label = lbl;
|
||||
}
|
||||
else { // If not markup, escape any HTML-active characters (<>&"')
|
||||
label = Client.encodeForHTML(lbl);
|
||||
}
|
||||
label = markup ? Client.sanitizeHTML(lbl) : Client.encodeForHTML(lbl);
|
||||
this.markup = markup;
|
||||
MarkerAPIImpl.areaMarkerUpdated(this, MarkerUpdate.UPDATED);
|
||||
if(ispersistent)
|
||||
|
@ -298,6 +295,7 @@ class AreaMarkerImpl implements AreaMarker, EnterExitMarker {
|
|||
@Override
|
||||
public void setDescription(String desc) {
|
||||
if(markerset == null) return;
|
||||
desc = Client.sanitizeHTML(desc);
|
||||
if((this.desc == null) || (this.desc.equals(desc) == false)) {
|
||||
this.desc = desc;
|
||||
MarkerAPIImpl.areaMarkerUpdated(this, MarkerUpdate.UPDATED);
|
||||
|
|
|
@ -67,6 +67,7 @@ class CircleMarkerImpl implements CircleMarker, EnterExitMarker {
|
|||
label = markup ? lbl : Client.encodeColorInHTML(lbl);
|
||||
else
|
||||
label = markup ? id : Client.encodeColorInHTML(id);
|
||||
label = Client.sanitizeHTML(label);
|
||||
this.markup = markup;
|
||||
this.x = x; this.y = y; this.z = z;
|
||||
this.xr = xr; this.zr = zr;
|
||||
|
@ -86,7 +87,7 @@ class CircleMarkerImpl implements CircleMarker, EnterExitMarker {
|
|||
CircleMarkerImpl(String id, MarkerSetImpl set) {
|
||||
markerid = id;
|
||||
markerset = set;
|
||||
label = Client.encodeForHTML(id);
|
||||
label = Client.sanitizeHTML(Client.encodeForHTML(id));
|
||||
markup = false;
|
||||
desc = null;
|
||||
world = normalized_world = "world";
|
||||
|
@ -100,9 +101,10 @@ class CircleMarkerImpl implements CircleMarker, EnterExitMarker {
|
|||
* Load marker from configuration node
|
||||
* @param node - configuration node
|
||||
*/
|
||||
boolean loadPersistentData(ConfigurationNode node) {
|
||||
boolean loadPersistentData(ConfigurationNode node, boolean isSafe) {
|
||||
markup = node.getBoolean("markup", false);
|
||||
label = MarkerAPIImpl.escapeForHTMLIfNeeded(node.getString("label", markerid), markup);
|
||||
if (!isSafe) label = Client.sanitizeHTML(label);
|
||||
world = node.getString("world", "world");
|
||||
normalized_world = DynmapWorld.normalizeWorldName(world);
|
||||
x = node.getDouble("x", 0);
|
||||
|
@ -111,6 +113,7 @@ class CircleMarkerImpl implements CircleMarker, EnterExitMarker {
|
|||
xr = node.getDouble("xr", 0);
|
||||
zr = node.getDouble("zr", 0);
|
||||
desc = node.getString("desc", null);
|
||||
if (!isSafe) desc = Client.sanitizeHTML(desc);
|
||||
lineweight = node.getInteger("strokeWeight", -1);
|
||||
if(lineweight == -1) { /* Handle typo-saved value */
|
||||
lineweight = node.getInteger("stokeWeight", 3);
|
||||
|
@ -192,6 +195,7 @@ class CircleMarkerImpl implements CircleMarker, EnterExitMarker {
|
|||
@Override
|
||||
public void setLabel(String lbl, boolean markup) {
|
||||
label = markup ? lbl : Client.encodeForHTML(lbl);
|
||||
label = Client.sanitizeHTML(label);
|
||||
this.markup = markup;
|
||||
MarkerAPIImpl.circleMarkerUpdated(this, MarkerUpdate.UPDATED);
|
||||
if(ispersistent)
|
||||
|
@ -262,6 +266,7 @@ class CircleMarkerImpl implements CircleMarker, EnterExitMarker {
|
|||
}
|
||||
@Override
|
||||
public void setDescription(String desc) {
|
||||
desc = Client.sanitizeHTML(desc);
|
||||
if((this.desc == null) || (this.desc.equals(desc) == false)) {
|
||||
this.desc = desc;
|
||||
MarkerAPIImpl.circleMarkerUpdated(this, MarkerUpdate.UPDATED);
|
||||
|
|
|
@ -102,14 +102,14 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
|
||||
public MarkerUpdated(Marker m, boolean deleted) {
|
||||
this.id = m.getMarkerID();
|
||||
this.label = Client.sanitizeHTML(m.getLabel());
|
||||
this.label = m.getLabel();
|
||||
this.x = m.getX();
|
||||
this.y = m.getY();
|
||||
this.z = m.getZ();
|
||||
this.set = m.getMarkerSet().getMarkerSetID();
|
||||
this.icon = m.getMarkerIcon().getMarkerIconID();
|
||||
this.markup = true; // We are markup format all the time now
|
||||
this.desc = Client.sanitizeHTML(m.getDescription());
|
||||
this.desc = m.getDescription();
|
||||
this.dim = m.getMarkerIcon().getMarkerIconSize().getSize();
|
||||
this.minzoom = m.getMinZoom();
|
||||
this.maxzoom = m.getMaxZoom();
|
||||
|
@ -153,7 +153,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
|
||||
public AreaMarkerUpdated(AreaMarker m, boolean deleted) {
|
||||
this.id = m.getMarkerID();
|
||||
this.label = Client.sanitizeHTML(m.getLabel());
|
||||
this.label = m.getLabel();
|
||||
this.ytop = m.getTopY();
|
||||
this.ybottom = m.getBottomY();
|
||||
int cnt = m.getCornerCount();
|
||||
|
@ -168,7 +168,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
opacity = m.getLineOpacity();
|
||||
fillcolor = String.format("#%06X", m.getFillColor());
|
||||
fillopacity = m.getFillOpacity();
|
||||
desc = Client.sanitizeHTML(m.getDescription());
|
||||
desc = m.getDescription();
|
||||
this.minzoom = m.getMinZoom();
|
||||
this.maxzoom = m.getMaxZoom();
|
||||
this.markup = true; // We are markup format all the time now
|
||||
|
@ -211,7 +211,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
|
||||
public PolyLineMarkerUpdated(PolyLineMarker m, boolean deleted) {
|
||||
this.id = m.getMarkerID();
|
||||
this.label = Client.sanitizeHTML(m.getLabel());
|
||||
this.label = m.getLabel();
|
||||
this.markup = true; // We are markup format all the time now
|
||||
int cnt = m.getCornerCount();
|
||||
x = new double[cnt];
|
||||
|
@ -225,7 +225,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
color = String.format("#%06X", m.getLineColor());
|
||||
weight = m.getLineWeight();
|
||||
opacity = m.getLineOpacity();
|
||||
desc = Client.sanitizeHTML(m.getDescription());
|
||||
desc = m.getDescription();
|
||||
this.minzoom = m.getMinZoom();
|
||||
this.maxzoom = m.getMaxZoom();
|
||||
|
||||
|
@ -271,7 +271,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
|
||||
public CircleMarkerUpdated(CircleMarker m, boolean deleted) {
|
||||
this.id = m.getMarkerID();
|
||||
this.label = Client.sanitizeHTML(m.getLabel());
|
||||
this.label = m.getLabel();
|
||||
this.x = m.getCenterX();
|
||||
this.y = m.getCenterY();
|
||||
this.z = m.getCenterZ();
|
||||
|
@ -283,7 +283,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
opacity = m.getLineOpacity();
|
||||
fillcolor = String.format("#%06X", m.getFillColor());
|
||||
fillopacity = m.getFillOpacity();
|
||||
desc = Client.sanitizeHTML(m.getDescription());
|
||||
desc = m.getDescription();
|
||||
this.minzoom = m.getMinZoom();
|
||||
this.maxzoom = m.getMaxZoom();
|
||||
|
||||
|
@ -822,6 +822,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
final ConfigurationNode conf = new ConfigurationNode(api.markerpersist); /* Make configuration object */
|
||||
/* First, save icon definitions */
|
||||
HashMap<String, Object> icons = new HashMap<String,Object>();
|
||||
conf.put("isSafe", true); // Mark as safe (sanitized)
|
||||
for(String id : api.markericons.keySet()) {
|
||||
MarkerIconImpl ico = api.markericons.get(id);
|
||||
Map<String,Object> dat = ico.getPersistentData();
|
||||
|
@ -885,13 +886,14 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
ConfigurationNode conf = new ConfigurationNode(api.markerpersist); /* Make configuration object */
|
||||
conf.load(); /* Load persistence */
|
||||
lock.writeLock().lock();
|
||||
boolean isSafe = conf.getBoolean("isSafe", false);
|
||||
try {
|
||||
/* Get icons */
|
||||
ConfigurationNode icons = conf.getNode("icons");
|
||||
if(icons == null) return false;
|
||||
for(String id : icons.keySet()) {
|
||||
MarkerIconImpl ico = new MarkerIconImpl(id);
|
||||
if(ico.loadPersistentData(icons.getNode(id))) {
|
||||
if(ico.loadPersistentData(icons.getNode(id), isSafe)) {
|
||||
markericons.put(id, ico);
|
||||
}
|
||||
}
|
||||
|
@ -900,7 +902,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
if(sets != null) {
|
||||
for(String id: sets.keySet()) {
|
||||
MarkerSetImpl set = new MarkerSetImpl(id);
|
||||
if(set.loadPersistentData(sets.getNode(id))) {
|
||||
if(set.loadPersistentData(sets.getNode(id), isSafe)) {
|
||||
markersets.put(id, set);
|
||||
}
|
||||
}
|
||||
|
@ -910,7 +912,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
if(psets != null) {
|
||||
for(String id: psets.keySet()) {
|
||||
PlayerSetImpl set = new PlayerSetImpl(id);
|
||||
if(set.loadPersistentData(sets.getNode(id))) {
|
||||
if(set.loadPersistentData(sets.getNode(id), isSafe)) {
|
||||
playersets.put(id, set);
|
||||
}
|
||||
}
|
||||
|
@ -2174,6 +2176,10 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
sender.sendMessage("file:\"filename\" required");
|
||||
return true;
|
||||
}
|
||||
if (!validateImportFile(file)) {
|
||||
sender.sendMessage("Error: '" + ARG_FILE + "' cannot include directory separators - must be just filename in " + plugin.getImportFolder().getAbsolutePath() + " directory");
|
||||
return true;
|
||||
}
|
||||
if(label == null)
|
||||
label = id;
|
||||
MarkerIcon ico = MarkerAPIImpl.getMarkerIconImpl(id);
|
||||
|
@ -2182,10 +2188,9 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
return true;
|
||||
}
|
||||
/* Open stream to filename */
|
||||
File iconf = new File(file);
|
||||
FileInputStream fis = null;
|
||||
try {
|
||||
fis = new FileInputStream(iconf);
|
||||
fis = new FileInputStream(new File(plugin.getImportFolder(), file));
|
||||
/* Create new icon */
|
||||
MarkerIcon mi = api.createMarkerIcon(id, label, fis);
|
||||
if(mi == null) {
|
||||
|
@ -3199,6 +3204,12 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
}
|
||||
return true;
|
||||
}
|
||||
private static boolean validateImportFile(String fname) {
|
||||
if ((fname.indexOf('/') >= 0) || (fname.indexOf('\\') >= 0)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
/** Process importdesc for given item */
|
||||
private static boolean processImportDesc(DynmapCore plugin, DynmapCommandSender sender, String cmd, String commandLabel, String[] args) {
|
||||
if(args.length > 1) {
|
||||
|
@ -3212,13 +3223,17 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
}
|
||||
String f = parms.get(ARG_FILE);
|
||||
if (f == null) {
|
||||
sender.sendMessage("Error: no '" + ARG_FILE + "' parameter");
|
||||
sender.sendMessage("file:\"filename\" required");
|
||||
return true;
|
||||
}
|
||||
if (!validateImportFile(f)) {
|
||||
sender.sendMessage("Error: '" + ARG_FILE + "' cannot include directory separators - must be just filename in " + plugin.getImportFolder().getAbsolutePath() + " directory");
|
||||
return true;
|
||||
}
|
||||
FileReader fr = null;
|
||||
String val = null;
|
||||
try {
|
||||
fr = new FileReader(f);
|
||||
fr = new FileReader(new File(plugin.getImportFolder(), f));
|
||||
StringBuilder sb = new StringBuilder();
|
||||
char[] buf = new char[512];
|
||||
int len;
|
||||
|
@ -3259,13 +3274,17 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
}
|
||||
String f = parms.get(ARG_FILE);
|
||||
if (f == null) {
|
||||
sender.sendMessage("Error: no '" + ARG_FILE + "' parameter");
|
||||
sender.sendMessage("file:\"filename\" required");
|
||||
return true;
|
||||
}
|
||||
if (!validateImportFile(f)) {
|
||||
sender.sendMessage("Error: '" + ARG_FILE + "' cannot include directory separators - must be just filename in " + plugin.getImportFolder().getAbsolutePath() + " directory");
|
||||
return true;
|
||||
}
|
||||
FileReader fr = null;
|
||||
String val = null;
|
||||
try {
|
||||
fr = new FileReader(f);
|
||||
fr = new FileReader(new File(plugin.getImportFolder(), f));
|
||||
StringBuilder sb = new StringBuilder();
|
||||
char[] buf = new char[512];
|
||||
int len;
|
||||
|
@ -3329,10 +3348,10 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
mi = MarkerAPIImpl.getMarkerIconImpl(MarkerIcon.DEFAULT);
|
||||
mdata.put("icon", mi.getMarkerIconID());
|
||||
mdata.put("dim", mi.getMarkerIconSize().getSize());
|
||||
mdata.put("label", Client.sanitizeHTML(m.getLabel()));
|
||||
mdata.put("label", m.getLabel());
|
||||
mdata.put("markup", m.isLabelMarkup());
|
||||
if(m.getDescription() != null)
|
||||
mdata.put("desc", Client.sanitizeHTML(m.getDescription()));
|
||||
mdata.put("desc", m.getDescription());
|
||||
if (m.getMinZoom() >= 0) {
|
||||
mdata.put("minzoom", m.getMinZoom());
|
||||
}
|
||||
|
@ -3365,10 +3384,10 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
mdata.put("opacity", m.getLineOpacity());
|
||||
mdata.put("fillopacity", m.getFillOpacity());
|
||||
mdata.put("weight", m.getLineWeight());
|
||||
mdata.put("label", Client.sanitizeHTML(m.getLabel()));
|
||||
mdata.put("label", m.getLabel());
|
||||
mdata.put("markup", m.isLabelMarkup());
|
||||
if(m.getDescription() != null)
|
||||
mdata.put("desc", Client.sanitizeHTML(m.getDescription()));
|
||||
mdata.put("desc", m.getDescription());
|
||||
if (m.getMinZoom() >= 0) {
|
||||
mdata.put("minzoom", m.getMinZoom());
|
||||
}
|
||||
|
@ -3400,10 +3419,10 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
mdata.put("color", String.format("#%06X", m.getLineColor()));
|
||||
mdata.put("opacity", m.getLineOpacity());
|
||||
mdata.put("weight", m.getLineWeight());
|
||||
mdata.put("label", Client.sanitizeHTML(m.getLabel()));
|
||||
mdata.put("label", m.getLabel());
|
||||
mdata.put("markup", m.isLabelMarkup());
|
||||
if(m.getDescription() != null)
|
||||
mdata.put("desc", Client.sanitizeHTML(m.getDescription()));
|
||||
mdata.put("desc", m.getDescription());
|
||||
if (m.getMinZoom() >= 0) {
|
||||
mdata.put("minzoom", m.getMinZoom());
|
||||
}
|
||||
|
@ -3430,10 +3449,10 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
mdata.put("opacity", m.getLineOpacity());
|
||||
mdata.put("fillopacity", m.getFillOpacity());
|
||||
mdata.put("weight", m.getLineWeight());
|
||||
mdata.put("label", Client.sanitizeHTML(m.getLabel()));
|
||||
mdata.put("label", m.getLabel());
|
||||
mdata.put("markup", m.isLabelMarkup());
|
||||
if(m.getDescription() != null)
|
||||
mdata.put("desc", Client.sanitizeHTML(m.getDescription()));
|
||||
mdata.put("desc", m.getDescription());
|
||||
if (m.getMinZoom() >= 0) {
|
||||
mdata.put("minzoom", m.getMinZoom());
|
||||
}
|
||||
|
|
|
@ -81,7 +81,7 @@ class MarkerIconImpl implements MarkerIcon {
|
|||
return node;
|
||||
}
|
||||
|
||||
boolean loadPersistentData(ConfigurationNode node) {
|
||||
boolean loadPersistentData(ConfigurationNode node, boolean isSafe) {
|
||||
if(is_builtin)
|
||||
return false;
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ class MarkerImpl implements Marker {
|
|||
MarkerImpl(String id, MarkerSetImpl set) {
|
||||
markerid = id;
|
||||
markerset = set;
|
||||
label = Client.encodeForHTML(id);
|
||||
label = Client.sanitizeHTML(Client.encodeForHTML(id));
|
||||
markup = false;
|
||||
desc = null;
|
||||
x = z = 0; y = 64; world = normalized_world = "world";
|
||||
|
@ -75,15 +75,17 @@ class MarkerImpl implements Marker {
|
|||
* Load marker from configuration node
|
||||
* @param node - configuration node
|
||||
*/
|
||||
boolean loadPersistentData(ConfigurationNode node) {
|
||||
boolean loadPersistentData(ConfigurationNode node, boolean isSafe) {
|
||||
markup = node.getBoolean("markup", false);
|
||||
label = MarkerAPIImpl.escapeForHTMLIfNeeded(node.getString("label", markerid), markup);
|
||||
if (!isSafe) label = Client.sanitizeHTML(label);
|
||||
x = node.getDouble("x", 0);
|
||||
y = node.getDouble("y", 64);
|
||||
z = node.getDouble("z", 0);
|
||||
world = node.getString("world", "world");
|
||||
normalized_world = DynmapWorld.normalizeWorldName(world);
|
||||
desc = node.getString("desc", null);
|
||||
if (!isSafe) desc = Client.sanitizeHTML(desc);
|
||||
minzoom = node.getInteger("minzoom", -1);
|
||||
maxzoom = node.getInteger("maxzoom", -1);
|
||||
icon = MarkerAPIImpl.getMarkerIconImpl(node.getString("icon", MarkerIcon.DEFAULT));
|
||||
|
@ -168,7 +170,7 @@ class MarkerImpl implements Marker {
|
|||
@Override
|
||||
public void setLabel(String lbl, boolean markup) {
|
||||
if(markerset == null) return;
|
||||
label = markup ? lbl : Client.encodeForHTML(lbl);
|
||||
label = Client.sanitizeHTML(markup ? lbl : Client.encodeForHTML(lbl));
|
||||
this.markup = markup;
|
||||
MarkerAPIImpl.markerUpdated(this, MarkerUpdate.UPDATED);
|
||||
if(ispersistent)
|
||||
|
@ -239,6 +241,7 @@ class MarkerImpl implements Marker {
|
|||
@Override
|
||||
public void setDescription(String desc) {
|
||||
if(markerset == null) return;
|
||||
desc = Client.sanitizeHTML(desc);
|
||||
if((this.desc == null) || (this.desc.equals(desc) == false)) {
|
||||
this.desc = desc;
|
||||
MarkerAPIImpl.markerUpdated(this, MarkerUpdate.UPDATED);
|
||||
|
|
|
@ -449,14 +449,14 @@ class MarkerSetImpl implements MarkerSet {
|
|||
* Load marker from configuration node
|
||||
* @param node - configuration node
|
||||
*/
|
||||
boolean loadPersistentData(ConfigurationNode node) {
|
||||
boolean loadPersistentData(ConfigurationNode node, boolean isSafe) {
|
||||
label = node.getString("label", setid); /* Get label */
|
||||
ConfigurationNode markernode = node.getNode("markers");
|
||||
if (markernode != null) {
|
||||
for(String id : markernode.keySet()) {
|
||||
MarkerImpl marker = new MarkerImpl(id, this); /* Make and load marker */
|
||||
ConfigurationNode cfg = markernode.getNode(id);
|
||||
if ((cfg != null) && marker.loadPersistentData(cfg)) {
|
||||
if ((cfg != null) && marker.loadPersistentData(cfg, isSafe)) {
|
||||
markers.put(id, marker);
|
||||
}
|
||||
else {
|
||||
|
@ -470,7 +470,7 @@ class MarkerSetImpl implements MarkerSet {
|
|||
for(String id : areamarkernode.keySet()) {
|
||||
AreaMarkerImpl marker = new AreaMarkerImpl(id, this); /* Make and load marker */
|
||||
ConfigurationNode cfg = areamarkernode.getNode(id);
|
||||
if ((cfg != null) && marker.loadPersistentData(cfg)) {
|
||||
if ((cfg != null) && marker.loadPersistentData(cfg, isSafe)) {
|
||||
areamarkers.put(id, marker);
|
||||
if(marker.getBoostFlag()) {
|
||||
if(boostingareamarkers == null) {
|
||||
|
@ -496,7 +496,7 @@ class MarkerSetImpl implements MarkerSet {
|
|||
for(String id : linemarkernode.keySet()) {
|
||||
PolyLineMarkerImpl marker = new PolyLineMarkerImpl(id, this); /* Make and load marker */
|
||||
ConfigurationNode cfg = linemarkernode.getNode(id);
|
||||
if ((cfg != null) && marker.loadPersistentData(cfg)) {
|
||||
if ((cfg != null) && marker.loadPersistentData(cfg, isSafe)) {
|
||||
linemarkers.put(id, marker);
|
||||
}
|
||||
else {
|
||||
|
@ -510,7 +510,7 @@ class MarkerSetImpl implements MarkerSet {
|
|||
for(String id : circlemarkernode.keySet()) {
|
||||
CircleMarkerImpl marker = new CircleMarkerImpl(id, this); /* Make and load marker */
|
||||
ConfigurationNode cfg = circlemarkernode.getNode(id);
|
||||
if ((cfg != null) && marker.loadPersistentData(cfg)) {
|
||||
if ((cfg != null) && marker.loadPersistentData(cfg, isSafe)) {
|
||||
circlemarkers.put(id, marker);
|
||||
if(marker.getBoostFlag()) {
|
||||
if(boostingcirclemarkers == null) {
|
||||
|
|
|
@ -71,7 +71,7 @@ class PlayerSetImpl implements PlayerSet {
|
|||
* Load marker from configuration node
|
||||
* @param node - configuration node
|
||||
*/
|
||||
boolean loadPersistentData(ConfigurationNode node) {
|
||||
boolean loadPersistentData(ConfigurationNode node, boolean isSafe) {
|
||||
List<String> plist = node.getList("players");
|
||||
if(plist != null) {
|
||||
players.clear();
|
||||
|
|
|
@ -53,6 +53,7 @@ class PolyLineMarkerImpl implements PolyLineMarker {
|
|||
label = markup ? lbl : Client.encodeForHTML(lbl);
|
||||
else
|
||||
label = markup ? id : Client.encodeForHTML(id);
|
||||
label = Client.sanitizeHTML(label);
|
||||
this.markup = markup;
|
||||
this.corners = new ArrayList<Coord>();
|
||||
for(int i = 0; i < x.length; i++) {
|
||||
|
@ -74,7 +75,7 @@ class PolyLineMarkerImpl implements PolyLineMarker {
|
|||
PolyLineMarkerImpl(String id, MarkerSetImpl set) {
|
||||
markerid = id;
|
||||
markerset = set;
|
||||
label = Client.encodeForHTML(id);
|
||||
label = Client.sanitizeHTML(Client.encodeForHTML(id));
|
||||
markup = false;
|
||||
desc = null;
|
||||
corners = new ArrayList<Coord>();
|
||||
|
@ -86,9 +87,10 @@ class PolyLineMarkerImpl implements PolyLineMarker {
|
|||
* Load marker from configuration node
|
||||
* @param node - configuration node
|
||||
*/
|
||||
boolean loadPersistentData(ConfigurationNode node) {
|
||||
boolean loadPersistentData(ConfigurationNode node, boolean isSafe) {
|
||||
markup = node.getBoolean("markup", false);
|
||||
label = MarkerAPIImpl.escapeForHTMLIfNeeded(node.getString("label", markerid), markup);
|
||||
if (!isSafe) label = Client.sanitizeHTML(label);
|
||||
List<Double> xx = node.getList("x");
|
||||
List<Double> yy = node.getList("y");
|
||||
List<Double> zz = node.getList("z");
|
||||
|
@ -101,6 +103,7 @@ class PolyLineMarkerImpl implements PolyLineMarker {
|
|||
world = node.getString("world", "world");
|
||||
normalized_world = DynmapWorld.normalizeWorldName(world);
|
||||
desc = node.getString("desc", null);
|
||||
if (!isSafe) desc = Client.sanitizeHTML(desc);
|
||||
lineweight = node.getInteger("strokeWeight", -1);
|
||||
if(lineweight == -1) { /* Handle typo-saved value */
|
||||
lineweight = node.getInteger("stokeWeight", 3);
|
||||
|
@ -164,7 +167,7 @@ class PolyLineMarkerImpl implements PolyLineMarker {
|
|||
@Override
|
||||
public void setLabel(String lbl, boolean markup) {
|
||||
if(markerset == null) return;
|
||||
label = markup ? lbl : Client.encodeForHTML(lbl);
|
||||
label = markup ? Client.sanitizeHTML(lbl) : Client.encodeForHTML(lbl);
|
||||
this.markup = markup;
|
||||
MarkerAPIImpl.polyLineMarkerUpdated(this, MarkerUpdate.UPDATED);
|
||||
if(ispersistent)
|
||||
|
@ -223,6 +226,7 @@ class PolyLineMarkerImpl implements PolyLineMarker {
|
|||
@Override
|
||||
public void setDescription(String desc) {
|
||||
if(markerset == null) return;
|
||||
desc = Client.sanitizeHTML(desc);
|
||||
if((this.desc == null) || (this.desc.equals(desc) == false)) {
|
||||
this.desc = desc;
|
||||
MarkerAPIImpl.polyLineMarkerUpdated(this, MarkerUpdate.UPDATED);
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
package org.dynmap.modsupport.impl;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Locale;
|
||||
|
@ -274,9 +276,9 @@ public class ModModelDefinitionImpl implements ModModelDefinition {
|
|||
return;
|
||||
}
|
||||
File f = new File(destdir, this.txtDef.getModID() + "-models.txt");
|
||||
FileWriter fw = null;
|
||||
Writer fw = null;
|
||||
try {
|
||||
fw = new FileWriter(f);
|
||||
fw = new BufferedWriter(new FileWriter(f));
|
||||
// Write modname line
|
||||
String s = "modname:" + this.txtDef.getModID();
|
||||
fw.write(s + "\n\n");
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
package org.dynmap.modsupport.impl;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
@ -278,9 +280,9 @@ public class ModTextureDefinitionImpl implements ModTextureDefinition {
|
|||
|
||||
public void writeToFile(File destdir) throws IOException {
|
||||
File f = new File(destdir, this.modid + "-texture.txt");
|
||||
FileWriter fw = null;
|
||||
Writer fw = null;
|
||||
try {
|
||||
fw = new FileWriter(f);
|
||||
fw = new BufferedWriter(new FileWriter(f));
|
||||
// Write modname line
|
||||
String s = "modname:" + this.modid;
|
||||
fw.write(s + "\n\n");
|
||||
|
|
|
@ -3,6 +3,7 @@ package org.dynmap.modsupport.impl;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.dynmap.modsupport.BlockSide;
|
||||
import org.dynmap.modsupport.ModelBlockModel;
|
||||
|
@ -69,16 +70,16 @@ public class ModelBlockModelImpl extends BlockModelImpl implements ModelBlockMod
|
|||
String line;
|
||||
line = String.format("modellist:%s", ids);
|
||||
for (ModelBlockImpl mb: boxes) {
|
||||
line += String.format(",box=%f/%f/%f", mb.from[0], mb.from[1], mb.from[2]);
|
||||
line += String.format(Locale.US, ",box=%f/%f/%f", mb.from[0], mb.from[1], mb.from[2]);
|
||||
if (!mb.shade) { // if shade=false
|
||||
line += "/false";
|
||||
}
|
||||
line += String.format(":%f/%f/%f", mb.to[0], mb.to[1], mb.to[2]);
|
||||
line += String.format(Locale.US, ":%f/%f/%f", mb.to[0], mb.to[1], mb.to[2]);
|
||||
if ((mb.xrot != 0) || (mb.yrot != 0) || (mb.zrot != 0)) { // If needed, add rotation
|
||||
line += String.format("/%f/%f/%f", mb.xrot, mb.yrot, mb.zrot);
|
||||
line += String.format(Locale.US, "/%f/%f/%f", mb.xrot, mb.yrot, mb.zrot);
|
||||
// If origin also defined, add it
|
||||
if (mb.rotorigin != null) {
|
||||
line += String.format("/%f/%f/%f", mb.rotorigin[0], mb.rotorigin[1], mb.rotorigin[2]);
|
||||
line += String.format(Locale.US, "/%f/%f/%f", mb.rotorigin[0], mb.rotorigin[1], mb.rotorigin[2]);
|
||||
}
|
||||
}
|
||||
for (BlockSide bs : fromBlockSide.keySet()) {
|
||||
|
@ -101,7 +102,7 @@ public class ModelBlockModelImpl extends BlockModelImpl implements ModelBlockMod
|
|||
break;
|
||||
}
|
||||
if (mside.uv != null) {
|
||||
line += String.format(":%s/%d/%f/%f/%f/%f", rval, mside.textureid, mside.uv[0], mside.uv[1], mside.uv[2], mside.uv[3]);
|
||||
line += String.format(Locale.US, ":%s/%d/%f/%f/%f/%f", rval, mside.textureid, mside.uv[0], mside.uv[1], mside.uv[2], mside.uv[3]);
|
||||
}
|
||||
else {
|
||||
line += String.format(":%s/%d", rval, mside.textureid);
|
||||
|
|
|
@ -22,7 +22,6 @@ import java.nio.charset.Charset;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package org.dynmap.storage.aws_s3;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
|
@ -101,7 +102,8 @@ public class AWSS3MapStorage extends MapStorage {
|
|||
GetObjectResponse rsp = obj.getResponse();
|
||||
TileRead tr = new TileRead();
|
||||
byte[] buf = obj.getBytes();
|
||||
tr.image = new BufferInputStream(buf);
|
||||
if (buf == null) { return null; }
|
||||
tr.image = new BufferInputStream(buf);
|
||||
tr.format = ImageEncoding.fromContentType(rsp.getContentType());
|
||||
Map<String, String> meta = rsp.getMetadata();
|
||||
String v = meta.get("x-dynmap-hash");
|
||||
|
@ -138,7 +140,7 @@ public class AWSS3MapStorage extends MapStorage {
|
|||
else {
|
||||
PutObjectRequest req = PutObjectRequest.builder().bucketName(bucketname).key(baseKey).contentType(map.getImageFormat().getEncoding().getContentType())
|
||||
.addMetadata("x-dynmap-hash", Long.toHexString(hash)).addMetadata("x-dynmap-ts", Long.toString(timestamp)).build();
|
||||
s3.putObject(req, RequestBody.fromBytes(encImage.buf, encImage.len));
|
||||
s3.putObject(req, RequestBody.fromBytes(encImage.buf));
|
||||
}
|
||||
done = true;
|
||||
} catch (S3Exception x) {
|
||||
|
@ -220,7 +222,7 @@ public class AWSS3MapStorage extends MapStorage {
|
|||
}
|
||||
|
||||
private String bucketname;
|
||||
private String region;
|
||||
private Region region;
|
||||
private String access_key_id;
|
||||
private String secret_access_key;
|
||||
private String prefix;
|
||||
|
@ -247,10 +249,20 @@ public class AWSS3MapStorage extends MapStorage {
|
|||
}
|
||||
// Get our settings
|
||||
bucketname = core.configuration.getString("storage/bucketname", "dynmap");
|
||||
region = core.configuration.getString("storage/region", "us-east-1");
|
||||
access_key_id = core.configuration.getString("storage/aws_access_key_id", System.getenv("AWS_ACCESS_KEY_ID"));
|
||||
secret_access_key = core.configuration.getString("storage/aws_secret_access_key", System.getenv("AWS_SECRET_ACCESS_KEY"));
|
||||
prefix = core.configuration.getString("storage/prefix", "");
|
||||
|
||||
// Either use a custom region, or one of the default AWS regions
|
||||
String region_name = core.configuration.getString("storage/region", "us-east-1");
|
||||
String region_endpoint = core.configuration.getString("storage/override_endpoint", "");
|
||||
|
||||
if (region_endpoint.length() > 0) {
|
||||
region = Region.of(region_name, URI.create(region_endpoint));
|
||||
} else {
|
||||
region = Region.fromString(region_name);
|
||||
}
|
||||
|
||||
if ((prefix.length() > 0) && (prefix.charAt(prefix.length()-1) != '/')) {
|
||||
prefix += '/';
|
||||
}
|
||||
|
@ -517,7 +529,7 @@ public class AWSS3MapStorage extends MapStorage {
|
|||
}
|
||||
else {
|
||||
PutObjectRequest req = PutObjectRequest.builder().bucketName(bucketname).key(baseKey).contentType("image/png").build();
|
||||
s3.putObject(req, RequestBody.fromBytes(encImage.buf, encImage.len));
|
||||
s3.putObject(req, RequestBody.fromBytes(encImage.buf));
|
||||
}
|
||||
done = true;
|
||||
} catch (S3Exception x) {
|
||||
|
@ -570,7 +582,7 @@ public class AWSS3MapStorage extends MapStorage {
|
|||
}
|
||||
else {
|
||||
PutObjectRequest req = PutObjectRequest.builder().bucketName(bucketname).key(baseKey).contentType("image/png").build();
|
||||
s3.putObject(req, RequestBody.fromBytes(encImage.buf, encImage.len));
|
||||
s3.putObject(req, RequestBody.fromBytes(encImage.buf));
|
||||
}
|
||||
done = true;
|
||||
} catch (S3Exception x) {
|
||||
|
@ -733,7 +745,7 @@ public class AWSS3MapStorage extends MapStorage {
|
|||
ct = "application/x-javascript";
|
||||
}
|
||||
PutObjectRequest req = PutObjectRequest.builder().bucketName(bucketname).key(baseKey).contentType(ct).build();
|
||||
s3.putObject(req, RequestBody.fromBytes(content.buf, content.len));
|
||||
s3.putObject(req, RequestBody.fromBytes(content.buf));
|
||||
standalone_cache.put(fileid, digest);
|
||||
}
|
||||
done = true;
|
||||
|
@ -762,7 +774,7 @@ public class AWSS3MapStorage extends MapStorage {
|
|||
if (cpoolCount < POOLSIZE) { // Still more we can have
|
||||
c = new DefaultS3ClientBuilder()
|
||||
.credentialsProvider(() -> AwsBasicCredentials.create(access_key_id, secret_access_key))
|
||||
.region(Region.fromString(region))
|
||||
.region(region)
|
||||
.httpClient(URLConnectionSdkHttpClient.create())
|
||||
.build();
|
||||
if (c == null) {
|
||||
|
|
|
@ -49,6 +49,8 @@ public class MicrosoftSQLMapStorage extends MapStorage {
|
|||
protected int port;
|
||||
private static final int POOLSIZE = 5;
|
||||
private Connection[] cpool = new Connection[POOLSIZE];
|
||||
private long[] cpoolLastUseTS = new long[POOLSIZE]; // Time when last returned to pool
|
||||
private static final long IDLE_TIMEOUT = 60000; // Use 60 second timeout
|
||||
private int cpoolCount = 0;
|
||||
private static final Charset UTF8 = Charset.forName("UTF-8");
|
||||
|
||||
|
@ -132,7 +134,11 @@ public class MicrosoftSQLMapStorage extends MapStorage {
|
|||
rslt.lastModified = rs.getLong("LastUpdate");
|
||||
rslt.format = MapType.ImageEncoding.fromOrd(rs.getInt("Format"));
|
||||
byte[] img = rs.getBytes("Image");
|
||||
rslt.image = new BufferInputStream(img);
|
||||
if (img == null) {
|
||||
rslt = null;
|
||||
} else {
|
||||
rslt.image = new BufferInputStream(img);
|
||||
}
|
||||
}
|
||||
rs.close();
|
||||
stmt.close();
|
||||
|
@ -523,12 +529,22 @@ public class MicrosoftSQLMapStorage extends MapStorage {
|
|||
private Connection getConnection() throws SQLException {
|
||||
Connection c = null;
|
||||
synchronized (cpool) {
|
||||
long now = System.currentTimeMillis();
|
||||
while (c == null) {
|
||||
for (int i = 0; i < cpool.length; i++) { // See if available connection
|
||||
if (cpool[i] != null) { // Found one
|
||||
c = cpool[i];
|
||||
cpool[i] = null;
|
||||
break;
|
||||
// If in pool too long, close it and move on
|
||||
if ((now - cpoolLastUseTS[i]) > IDLE_TIMEOUT) {
|
||||
try { cpool[i].close(); } catch (SQLException x) {}
|
||||
cpool[i] = null;
|
||||
cpoolCount--;
|
||||
}
|
||||
else { // Else, use the connection
|
||||
c = cpool[i];
|
||||
cpool[i] = null;
|
||||
cpoolLastUseTS[i] = now;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (c == null) {
|
||||
|
@ -561,6 +577,7 @@ public class MicrosoftSQLMapStorage extends MapStorage {
|
|||
for (int i = 0; i < POOLSIZE; i++) {
|
||||
if (cpool[i] == null) {
|
||||
cpool[i] = c;
|
||||
cpoolLastUseTS[i] = System.currentTimeMillis(); // Record last use time
|
||||
c = null; // Mark it recovered (no close needed
|
||||
cpool.notifyAll();
|
||||
break;
|
||||
|
|
|
@ -49,6 +49,8 @@ public class MySQLMapStorage extends MapStorage {
|
|||
protected int port;
|
||||
private static final int POOLSIZE = 5;
|
||||
private Connection[] cpool = new Connection[POOLSIZE];
|
||||
private long[] cpoolLastUseTS = new long[POOLSIZE]; // Time when last returned to pool
|
||||
private static final long IDLE_TIMEOUT = 60000; // Use 60 second timeout
|
||||
private int cpoolCount = 0;
|
||||
private static final Charset UTF8 = Charset.forName("UTF-8");
|
||||
|
||||
|
@ -137,7 +139,11 @@ public class MySQLMapStorage extends MapStorage {
|
|||
rslt.format = MapType.ImageEncoding.fromOrd(rs.getInt("Format"));
|
||||
byte[] img = rs.getBytes("NewImage");
|
||||
if (img == null) img = rs.getBytes("Image");
|
||||
rslt.image = new BufferInputStream(img);
|
||||
if (img == null) {
|
||||
rslt = null;
|
||||
} else {
|
||||
rslt.image = new BufferInputStream(img);
|
||||
}
|
||||
}
|
||||
rs.close();
|
||||
stmt.close();
|
||||
|
@ -643,12 +649,22 @@ public class MySQLMapStorage extends MapStorage {
|
|||
Connection c = null;
|
||||
if (isShutdown) { throw new StorageShutdownException(); }
|
||||
synchronized (cpool) {
|
||||
long now = System.currentTimeMillis();
|
||||
while (c == null) {
|
||||
for (int i = 0; i < cpool.length; i++) { // See if available connection
|
||||
if (cpool[i] != null) { // Found one
|
||||
c = cpool[i];
|
||||
cpool[i] = null;
|
||||
break;
|
||||
// If in pool too long, close it and move on
|
||||
if ((now - cpoolLastUseTS[i]) > IDLE_TIMEOUT) {
|
||||
try { cpool[i].close(); } catch (SQLException x) {}
|
||||
cpool[i] = null;
|
||||
cpoolCount--;
|
||||
}
|
||||
else { // Else, use the connection
|
||||
c = cpool[i];
|
||||
cpool[i] = null;
|
||||
cpoolLastUseTS[i] = now;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (c == null) {
|
||||
|
@ -681,6 +697,7 @@ public class MySQLMapStorage extends MapStorage {
|
|||
for (int i = 0; i < POOLSIZE; i++) {
|
||||
if (cpool[i] == null) {
|
||||
cpool[i] = c;
|
||||
cpoolLastUseTS[i] = System.currentTimeMillis(); // Record last use time
|
||||
c = null; // Mark it recovered (no close needed
|
||||
cpool.notifyAll();
|
||||
break;
|
||||
|
@ -792,29 +809,21 @@ public class MySQLMapStorage extends MapStorage {
|
|||
}
|
||||
try {
|
||||
c = getConnection();
|
||||
boolean done = false;
|
||||
int limit = 100;
|
||||
int offset = 0;
|
||||
while (!done) {
|
||||
// Query tiles for given mapkey
|
||||
Statement stmt = c.createStatement();
|
||||
ResultSet rs = stmt.executeQuery(String.format("SELECT x,y,zoom,Format FROM %s WHERE MapID=%d OFFSET %d LIMIT %d;", tableTiles, mapkey, offset, limit));
|
||||
int cnt = 0;
|
||||
while (rs.next()) {
|
||||
StorageTile st = new StorageTile(world, map, rs.getInt("x"), rs.getInt("y"), rs.getInt("zoom"), var);
|
||||
final MapType.ImageEncoding encoding = MapType.ImageEncoding.fromOrd(rs.getInt("Format"));
|
||||
if(cb != null)
|
||||
cb.tileFound(st, encoding);
|
||||
if(cbBase != null && st.zoom == 0)
|
||||
cbBase.tileFound(st, encoding);
|
||||
st.cleanup();
|
||||
cnt++;
|
||||
}
|
||||
rs.close();
|
||||
stmt.close();
|
||||
if (cnt < limit) done = true;
|
||||
offset += cnt;
|
||||
Statement stmt = c.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, //we want to stream our resultset one row at a time, we are not interessted in going back
|
||||
java.sql.ResultSet.CONCUR_READ_ONLY); //since we do not handle the entire resultset in memory -> tell the statement that we are going to work read only
|
||||
stmt.setFetchSize(100); //we can change the jdbc "retrieval chunk size". Basicly we limit how much rows are kept in memory. Bigger value = less network calls to DB, but more memory consumption
|
||||
ResultSet rs = stmt.executeQuery(String.format("SELECT x,y,zoom,Format FROM %s WHERE MapID=%d;", tableTiles, mapkey)); //we do the query, but do not set any limit / offset. Since data is not kept in memory, just streamed from DB this should not be a problem, only the rows from setFetchSize are kept in memory.
|
||||
while (rs.next()) {
|
||||
StorageTile st = new StorageTile(world, map, rs.getInt("x"), rs.getInt("y"), rs.getInt("zoom"), var);
|
||||
final MapType.ImageEncoding encoding = MapType.ImageEncoding.fromOrd(rs.getInt("Format"));
|
||||
if(cb != null)
|
||||
cb.tileFound(st, encoding);
|
||||
if(cbBase != null && st.zoom == 0)
|
||||
cbBase.tileFound(st, encoding);
|
||||
st.cleanup();
|
||||
}
|
||||
rs.close();
|
||||
stmt.close();
|
||||
if(cbEnd != null)
|
||||
cbEnd.searchEnded();
|
||||
} catch (SQLException x) {
|
||||
|
|
|
@ -49,6 +49,8 @@ public class PostgreSQLMapStorage extends MapStorage {
|
|||
private int port;
|
||||
private static final int POOLSIZE = 5;
|
||||
private Connection[] cpool = new Connection[POOLSIZE];
|
||||
private long[] cpoolLastUseTS = new long[POOLSIZE]; // Time when last returned to pool
|
||||
private static final long IDLE_TIMEOUT = 60000; // Use 60 second timeout
|
||||
private int cpoolCount = 0;
|
||||
private static final Charset UTF8 = Charset.forName("UTF-8");
|
||||
|
||||
|
@ -138,7 +140,11 @@ public class PostgreSQLMapStorage extends MapStorage {
|
|||
rslt.lastModified = rs.getLong("LastUpdate");
|
||||
rslt.format = MapType.ImageEncoding.fromOrd(rs.getInt("Format"));
|
||||
byte[] img = rs.getBytes("Image");
|
||||
rslt.image = new BufferInputStream(img);
|
||||
if (img == null) {
|
||||
rslt = null;
|
||||
} else {
|
||||
rslt.image = new BufferInputStream(img);
|
||||
}
|
||||
}
|
||||
rs.close();
|
||||
stmt.close();
|
||||
|
@ -567,12 +573,22 @@ public class PostgreSQLMapStorage extends MapStorage {
|
|||
Connection c = null;
|
||||
if (isShutdown) throw new StorageShutdownException();
|
||||
synchronized (cpool) {
|
||||
long now = System.currentTimeMillis();
|
||||
while (c == null) {
|
||||
for (int i = 0; i < cpool.length; i++) { // See if available connection
|
||||
if (cpool[i] != null) { // Found one
|
||||
c = cpool[i];
|
||||
cpool[i] = null;
|
||||
break;
|
||||
// If in pool too long, close it and move on
|
||||
if ((now - cpoolLastUseTS[i]) > IDLE_TIMEOUT) {
|
||||
try { cpool[i].close(); } catch (SQLException x) {}
|
||||
cpool[i] = null;
|
||||
cpoolCount--;
|
||||
}
|
||||
else { // Else, use the connection
|
||||
c = cpool[i];
|
||||
cpool[i] = null;
|
||||
cpoolLastUseTS[i] = now;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (c == null) {
|
||||
|
@ -604,6 +620,7 @@ public class PostgreSQLMapStorage extends MapStorage {
|
|||
for (int i = 0; i < POOLSIZE; i++) {
|
||||
if (cpool[i] == null) {
|
||||
cpool[i] = c;
|
||||
cpoolLastUseTS[i] = System.currentTimeMillis(); // Record last use time
|
||||
c = null; // Mark it recovered (no close needed
|
||||
cpool.notifyAll();
|
||||
break;
|
||||
|
@ -704,7 +721,7 @@ public class PostgreSQLMapStorage extends MapStorage {
|
|||
while (!done) {
|
||||
// Query tiles for given mapkey
|
||||
Statement stmt = c.createStatement();
|
||||
ResultSet rs = stmt.executeQuery(String.format("SELECT x,y,zoom,Format FROM %s WHERE MapID=%d OFFSET %d LIMIT %d;", tableTiles, mapKey, offset, limit));
|
||||
ResultSet rs = stmt.executeQuery(String.format("SELECT x,y,zoom,Format FROM %s WHERE MapID=%d OFFSET %d LIMIT %d;", tableTiles, mapkey, offset, limit));
|
||||
int cnt = 0;
|
||||
while (rs.next()) {
|
||||
StorageTile st = new StorageTile(world, map, rs.getInt("x"), rs.getInt("y"), rs.getInt("zoom"), var);
|
||||
|
|
|
@ -33,6 +33,8 @@ public class SQLiteMapStorage extends MapStorage {
|
|||
private String databaseFile;
|
||||
private static final int POOLSIZE = 1; // SQLite is really not thread safe... 1 at a time works best
|
||||
private Connection[] cpool = new Connection[POOLSIZE];
|
||||
private long[] cpoolLastUseTS = new long[POOLSIZE]; // Time when last returned to pool
|
||||
private static final long IDLE_TIMEOUT = 60000; // Use 60 second timeout
|
||||
private int cpoolCount = 0;
|
||||
private static final Charset UTF8 = Charset.forName("UTF-8");
|
||||
|
||||
|
@ -129,7 +131,11 @@ public class SQLiteMapStorage extends MapStorage {
|
|||
// Trim trailing zeros from padding by BLOB field
|
||||
while((len > 0) && (img[len-1] == '\0')) len--;
|
||||
}
|
||||
rslt.image = new BufferInputStream(img, len);
|
||||
if (img == null) {
|
||||
rslt = null;
|
||||
} else {
|
||||
rslt.image = new BufferInputStream(img, len);
|
||||
}
|
||||
}
|
||||
rs.close();
|
||||
stmt.close();
|
||||
|
@ -488,11 +494,22 @@ public class SQLiteMapStorage extends MapStorage {
|
|||
throw new StorageShutdownException();
|
||||
}
|
||||
synchronized (cpool) {
|
||||
long now = System.currentTimeMillis();
|
||||
while (c == null) {
|
||||
for (int i = 0; i < cpool.length; i++) { // See if available connection
|
||||
if (cpool[i] != null) { // Found one
|
||||
c = cpool[i];
|
||||
cpool[i] = null;
|
||||
// If in pool too long, close it and move on
|
||||
if ((now - cpoolLastUseTS[i]) > IDLE_TIMEOUT) {
|
||||
try { cpool[i].close(); } catch (SQLException x) {}
|
||||
cpool[i] = null;
|
||||
cpoolCount--;
|
||||
}
|
||||
else { // Else, use the connection
|
||||
c = cpool[i];
|
||||
cpool[i] = null;
|
||||
cpoolLastUseTS[i] = now;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (c == null) {
|
||||
|
@ -516,6 +533,7 @@ public class SQLiteMapStorage extends MapStorage {
|
|||
|
||||
private static Connection configureConnection(Connection conn) throws SQLException {
|
||||
final Statement statement = conn.createStatement();
|
||||
statement.execute("PRAGMA auto_vacuum = FULL;");
|
||||
statement.execute("PRAGMA journal_mode = WAL;");
|
||||
statement.close();
|
||||
return conn;
|
||||
|
@ -528,6 +546,7 @@ public class SQLiteMapStorage extends MapStorage {
|
|||
for (int i = 0; i < POOLSIZE; i++) {
|
||||
if (cpool[i] == null) {
|
||||
cpool[i] = c;
|
||||
cpoolLastUseTS[i] = System.currentTimeMillis(); // Record last use time
|
||||
c = null; // Mark it recovered (no close needed
|
||||
cpool.notifyAll();
|
||||
break;
|
||||
|
|
|
@ -107,68 +107,126 @@ public class ImageIOManager {
|
|||
}
|
||||
|
||||
public static BufferOutputStream imageIOEncode(BufferedImage img, ImageFormat fmt) {
|
||||
BufferOutputStream bos = new BufferOutputStream();
|
||||
|
||||
if(isRequiredJDKVersion(17,-1,-1)){
|
||||
return imageIOEncodeUnsafe(img, fmt); //we can skip Thread safety for more performance
|
||||
}
|
||||
synchronized(imageioLock) {
|
||||
try {
|
||||
ImageIO.setUseCache(false); /* Don't use file cache - too small to be worth it */
|
||||
|
||||
fmt = validateFormat(fmt);
|
||||
|
||||
if(fmt.getEncoding() == ImageEncoding.JPG) {
|
||||
WritableRaster raster = img.getRaster();
|
||||
WritableRaster newRaster = raster.createWritableChild(0, 0, img.getWidth(),
|
||||
img.getHeight(), 0, 0, new int[] {0, 1, 2});
|
||||
DirectColorModel cm = (DirectColorModel)img.getColorModel();
|
||||
DirectColorModel newCM = new DirectColorModel(cm.getPixelSize(),
|
||||
cm.getRedMask(), cm.getGreenMask(), cm.getBlueMask());
|
||||
// now create the new buffer that is used ot write the image:
|
||||
BufferedImage rgbBuffer = new BufferedImage(newCM, newRaster, false, null);
|
||||
return imageIOEncodeUnsafe(img, fmt);
|
||||
}
|
||||
}
|
||||
private static BufferOutputStream imageIOEncodeUnsafe(BufferedImage img, ImageFormat fmt) {
|
||||
BufferOutputStream bos = new BufferOutputStream();
|
||||
try {
|
||||
ImageIO.setUseCache(false); /* Don't use file cache - too small to be worth it */
|
||||
|
||||
// Find a jpeg writer
|
||||
ImageWriter writer = null;
|
||||
Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName("jpg");
|
||||
if (iter.hasNext()) {
|
||||
writer = iter.next();
|
||||
}
|
||||
if(writer == null) {
|
||||
Log.severe("No JPEG ENCODER - Java VM does not support JPEG encoding");
|
||||
return null;
|
||||
}
|
||||
ImageWriteParam iwp = writer.getDefaultWriteParam();
|
||||
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
|
||||
iwp.setCompressionQuality(fmt.getQuality());
|
||||
fmt = validateFormat(fmt);
|
||||
|
||||
ImageOutputStream ios;
|
||||
ios = ImageIO.createImageOutputStream(bos);
|
||||
writer.setOutput(ios);
|
||||
if(fmt.getEncoding() == ImageEncoding.JPG) {
|
||||
WritableRaster raster = img.getRaster();
|
||||
WritableRaster newRaster = raster.createWritableChild(0, 0, img.getWidth(),
|
||||
img.getHeight(), 0, 0, new int[] {0, 1, 2});
|
||||
DirectColorModel cm = (DirectColorModel)img.getColorModel();
|
||||
DirectColorModel newCM = new DirectColorModel(cm.getPixelSize(),
|
||||
cm.getRedMask(), cm.getGreenMask(), cm.getBlueMask());
|
||||
// now create the new buffer that is used ot write the image:
|
||||
BufferedImage rgbBuffer = new BufferedImage(newCM, newRaster, false, null);
|
||||
|
||||
writer.write(null, new IIOImage(rgbBuffer, null, null), iwp);
|
||||
writer.dispose();
|
||||
|
||||
rgbBuffer.flush();
|
||||
// Find a jpeg writer
|
||||
ImageWriter writer = null;
|
||||
Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName("jpg");
|
||||
if (iter.hasNext()) {
|
||||
writer = iter.next();
|
||||
}
|
||||
else if (fmt.getEncoding() == ImageEncoding.WEBP) {
|
||||
doWEBPEncode(img, fmt, bos);
|
||||
if(writer == null) {
|
||||
Log.severe("No JPEG ENCODER - Java VM does not support JPEG encoding");
|
||||
return null;
|
||||
}
|
||||
else {
|
||||
ImageIO.write(img, fmt.getFileExt(), bos); /* Write to byte array stream - prevent bogus I/O errors */
|
||||
}
|
||||
} catch (IOException iox) {
|
||||
Log.info("Error encoding image - " + iox.getMessage());
|
||||
return null;
|
||||
ImageWriteParam iwp = writer.getDefaultWriteParam();
|
||||
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
|
||||
iwp.setCompressionQuality(fmt.getQuality());
|
||||
|
||||
ImageOutputStream ios;
|
||||
ios = ImageIO.createImageOutputStream(bos);
|
||||
writer.setOutput(ios);
|
||||
|
||||
writer.write(null, new IIOImage(rgbBuffer, null, null), iwp);
|
||||
writer.dispose();
|
||||
|
||||
rgbBuffer.flush();
|
||||
}
|
||||
else if (fmt.getEncoding() == ImageEncoding.WEBP) {
|
||||
doWEBPEncode(img, fmt, bos);
|
||||
}
|
||||
else {
|
||||
ImageIO.write(img, fmt.getFileExt(), bos); /* Write to byte array stream - prevent bogus I/O errors */
|
||||
}
|
||||
} catch (IOException iox) {
|
||||
Log.info("Error encoding image - " + iox.getMessage());
|
||||
return null;
|
||||
}
|
||||
return bos;
|
||||
}
|
||||
|
||||
|
||||
public static BufferedImage imageIODecode(MapStorageTile.TileRead tr) throws IOException {
|
||||
if(isRequiredJDKVersion(17,-1,-1)){
|
||||
return imageIODecodeUnsafe(tr); //we can skip Thread safety for more performance
|
||||
}
|
||||
synchronized(imageioLock) {
|
||||
ImageIO.setUseCache(false); /* Don't use file cache - too small to be worth it */
|
||||
if (tr.format == ImageEncoding.WEBP) {
|
||||
return doWEBPDecode(tr.image);
|
||||
}
|
||||
return ImageIO.read(tr.image);
|
||||
return imageIODecodeUnsafe(tr);
|
||||
}
|
||||
}
|
||||
|
||||
private static BufferedImage imageIODecodeUnsafe(MapStorageTile.TileRead tr) throws IOException {
|
||||
ImageIO.setUseCache(false); /* Don't use file cache - too small to be worth it */
|
||||
if (tr.format == ImageEncoding.WEBP) {
|
||||
return doWEBPDecode(tr.image);
|
||||
}
|
||||
return ImageIO.read(tr.image);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the current JDK is running at least a specific version
|
||||
* targetMinor and targetBuild can be set to -1, if the java.version only provides a Major release this will then only check for the major release
|
||||
* @param targetMajor the required minimum major version
|
||||
* @param targetMinor the required minimum minor version
|
||||
* @param targetBuild the required minimum build version
|
||||
* @return true if the current JDK version is the required minimum version
|
||||
*/
|
||||
private static boolean isRequiredJDKVersion(int targetMajor, int targetMinor, int targetBuild){
|
||||
String javaVersion = System.getProperty("java.version");
|
||||
String[] versionParts = javaVersion.split("\\.");
|
||||
if(versionParts.length < 3){
|
||||
if(versionParts.length == 1
|
||||
&& targetMinor == -1
|
||||
&& targetBuild == -1
|
||||
&& parseInt(versionParts[0], -1) >= targetMajor){
|
||||
return true;//we only have a major version and thats ok
|
||||
}
|
||||
return false; //can not evaluate
|
||||
}
|
||||
int major = parseInt(versionParts[0], -1);
|
||||
int minor = parseInt(versionParts[1], -1);
|
||||
int build = parseInt(versionParts[2], -1);
|
||||
if(major != -1 && major >= targetMajor &&
|
||||
minor != -1 && minor >= targetMinor &&
|
||||
build != -1 && build >= targetBuild
|
||||
){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses a string to int, with a dynamic fallback value if not parsable
|
||||
* @param input the String to parse
|
||||
* @param fallback the Fallback value to use
|
||||
* @return the parsed integer or the fallback value if unparsable
|
||||
*/
|
||||
private static int parseInt(String input, int fallback){
|
||||
int output = fallback;
|
||||
try{
|
||||
output = Integer.parseInt(input);
|
||||
} catch (NumberFormatException e) {}
|
||||
return output;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -106,10 +106,18 @@ public interface MapIterator extends MapDataContext {
|
|||
*/
|
||||
BlockStep getLastStep();
|
||||
/**
|
||||
* Get world height
|
||||
* Get world height (yMax+1)
|
||||
* @return height
|
||||
*/
|
||||
int getWorldHeight();
|
||||
/**
|
||||
* Get world bottom (yMin)
|
||||
*/
|
||||
int getWorldYMin();
|
||||
/**
|
||||
* Get world sealevel
|
||||
*/
|
||||
int getWorldSeaLevel();
|
||||
/**
|
||||
* Get block key for current position (unique ID for block within cache being iterated)
|
||||
* @return block key
|
||||
|
|
|
@ -25,7 +25,11 @@ public class RoundVisibilityLimit implements VisibilityLimit {
|
|||
else
|
||||
chunk_corner_z = chunk_z * 16 + 15;
|
||||
|
||||
return (chunk_corner_x - x_center) * (chunk_corner_x - x_center) + (chunk_corner_z - z_center) * (chunk_corner_z - z_center) < radius * radius;
|
||||
// By gmfamily - Use long representation of the distance between tested chunk and center of tested limit
|
||||
// to avoid int overflow while computing the distance compared to limit radius using square delta value
|
||||
long chunk_delta_x = chunk_corner_x - x_center;
|
||||
long chunk_delta_z = chunk_corner_z - z_center;
|
||||
return chunk_delta_x * chunk_delta_x + chunk_delta_z * chunk_delta_z < (long) radius * radius;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -411,7 +411,7 @@
|
|||
|
||||
.dynmap .sublist .item > a {
|
||||
display: block;
|
||||
|
||||
|
||||
text-indent: -99999px;
|
||||
outline: none;
|
||||
}
|
||||
|
@ -806,10 +806,10 @@
|
|||
}
|
||||
|
||||
.chatinput {
|
||||
|
||||
position: absolute;
|
||||
width: 608px;
|
||||
height: 16px;
|
||||
|
||||
bottom: 8px;
|
||||
outline: none;
|
||||
color: #fff;
|
||||
background-color: #000000;
|
||||
|
@ -829,6 +829,9 @@
|
|||
}
|
||||
|
||||
.loginbutton {
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
right: 4px;
|
||||
color: #000;
|
||||
font-family: sans-serif;
|
||||
font-size: 11px;
|
||||
|
|
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 30 KiB |
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square150x150logo src="images/icons/mstile-150x150.png"/>
|
||||
<TileColor>#ffffff</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 22 KiB |
|
@ -0,0 +1,112 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="200.000000pt" height="200.000000pt" viewBox="0 0 200.000000 200.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<metadata>
|
||||
Created by potrace 1.14, written by Peter Selinger 2001-2017
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,200.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M1205 1970 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
|
||||
-7 -4 -4 -10z"/>
|
||||
<path d="M1170 1940 c0 -4 7 -10 15 -14 8 -3 15 -10 15 -15 0 -6 -7 -8 -15 -5
|
||||
-8 4 -15 1 -15 -5 0 -6 6 -11 13 -11 6 0 12 -12 13 -28 2 -51 15 -103 25 -97
|
||||
5 4 7 11 3 17 -5 8 -8 40 -13 144 -1 13 -41 27 -41 14z"/>
|
||||
<path d="M1250 1880 c-21 -21 -28 -80 -10 -80 6 0 10 9 10 19 0 11 8 26 18 33
|
||||
18 14 26 48 11 48 -5 0 -18 -9 -29 -20z"/>
|
||||
<path d="M701 1785 c-18 -8 -44 -15 -58 -15 -17 0 -24 -5 -22 -17 3 -34 -1
|
||||
-41 -21 -36 -11 3 -20 9 -20 14 0 5 -10 9 -23 9 -27 0 -77 -21 -77 -33 0 -13
|
||||
-27 -37 -42 -37 -10 0 -12 -11 -10 -40 2 -22 9 -40 16 -40 6 0 17 -9 24 -20 7
|
||||
-11 19 -20 28 -20 11 0 14 -8 12 -26 -3 -29 -17 -39 -61 -49 -15 -3 -25 -10
|
||||
-22 -15 3 -5 -21 -14 -54 -21 l-60 -11 5 -42 c56 -444 70 -582 62 -587 -5 -3
|
||||
-4 -41 3 -97 9 -73 9 -95 -1 -107 -10 -12 -9 -15 4 -15 10 0 15 -4 11 -9 -3
|
||||
-5 5 -17 17 -27 18 -12 19 -15 4 -10 -14 5 -17 2 -12 -9 3 -8 9 -22 13 -31 4
|
||||
-12 2 -15 -8 -12 -8 2 -15 16 -17 31 -5 39 -25 50 -49 27 -12 -10 -23 -17 -26
|
||||
-14 -2 3 -7 -2 -10 -10 -4 -9 -2 -18 3 -21 6 -4 10 -13 10 -22 0 -13 -3 -13
|
||||
-15 -3 -17 14 -38 2 -56 -32 -9 -16 -6 -18 27 -13 21 2 41 10 46 17 7 12 9 11
|
||||
12 -11 0 -5 4 -13 8 -16 4 -4 3 -16 -3 -26 -9 -17 -6 -19 27 -14 21 2 41 10
|
||||
46 17 6 9 10 7 14 -9 7 -25 34 -32 34 -9 0 10 14 16 43 18 41 3 42 4 45 43 2
|
||||
22 7 44 12 49 5 5 58 -26 129 -77 66 -48 125 -87 130 -87 16 0 13 17 -4 24
|
||||
-23 8 -21 105 3 122 20 15 52 18 52 5 0 -5 10 -13 22 -17 19 -6 20 -7 4 -16
|
||||
-12 -7 -14 -13 -7 -22 8 -10 4 -16 -14 -24 -38 -17 -33 -50 11 -68 36 -15 36
|
||||
-16 15 -30 -14 -11 -21 -26 -21 -50 0 -19 -4 -34 -10 -34 -5 0 -10 5 -10 10 0
|
||||
6 -4 10 -8 10 -4 0 -8 -11 -8 -25 0 -31 7 -31 38 0 l25 25 48 -35 c36 -25 52
|
||||
-31 61 -24 7 6 18 8 24 4 6 -4 20 1 30 10 11 10 26 14 38 11 16 -5 19 -2 17
|
||||
25 -2 29 7 37 112 115 62 46 113 88 113 92 0 11 196 153 232 169 15 7 28 17
|
||||
28 23 0 6 4 9 9 6 15 -9 40 28 43 64 2 25 -1 35 -12 35 -37 2 -49 16 -43 48 3
|
||||
18 12 37 19 43 8 6 12 19 8 28 -3 9 -1 16 4 16 12 0 10 34 -3 63 -9 22 11 155
|
||||
28 175 7 9 11 48 9 110 -1 67 2 102 12 116 7 12 17 44 20 71 l7 51 -45 12
|
||||
c-25 6 -46 16 -46 22 0 5 -7 10 -15 10 -9 0 -15 9 -15 21 0 13 -8 23 -21 26
|
||||
-12 3 -16 9 -10 12 6 4 13 21 17 38 5 28 3 31 -25 36 -17 4 -38 4 -46 1 -18
|
||||
-7 -20 -55 -3 -72 8 -8 8 -15 -3 -28 -10 -12 -24 -15 -59 -11 -24 3 -52 1 -62
|
||||
-4 -14 -7 -19 0 -33 44 -10 28 -33 82 -52 120 -35 67 -36 67 -78 67 -41 0 -43
|
||||
-1 -60 -47 -10 -27 -27 -63 -37 -81 -18 -29 -24 -32 -52 -27 -57 12 -66 16
|
||||
-66 35 0 28 -11 51 -21 44 -5 -3 -9 -21 -9 -40 0 -48 -16 -43 -24 8 -5 29 -10
|
||||
38 -15 29 -5 -8 -7 -27 -4 -42 3 -20 -1 -31 -11 -35 -9 -3 -16 -13 -16 -21 0
|
||||
-11 -6 -14 -22 -9 -13 3 -38 6 -56 6 l-33 0 3 48 c3 42 6 47 28 50 23 3 25 7
|
||||
24 49 -1 39 -5 48 -25 55 -13 5 -27 16 -32 24 -10 18 -42 17 -86 -1z m-5 -131
|
||||
c6 -7 16 -14 23 -14 14 0 15 -86 1 -95 -6 -4 -33 -7 -60 -8 -27 -1 -52 -6 -56
|
||||
-10 -17 -17 -34 -6 -34 22 0 63 11 90 41 96 20 5 26 11 22 22 -5 13 -1 15 23
|
||||
9 16 -4 34 -14 40 -22z m509 6 c3 -5 1 -10 -4 -10 -6 0 -11 5 -11 10 0 6 2 10
|
||||
4 10 3 0 8 -4 11 -10z m-167 -97 c46 -6 52 -18 23 -50 -17 -18 -24 -19 -60
|
||||
-10 -49 13 -54 25 -8 21 17 -2 23 -1 12 2 -11 3 -27 8 -35 11 -8 3 -21 7 -29
|
||||
7 -8 1 -16 6 -18 13 -5 13 33 23 57 15 8 -2 34 -7 58 -9z m167 -73 c3 -5 1
|
||||
-10 -4 -10 -6 0 -11 5 -11 10 0 6 2 10 4 10 3 0 8 -4 11 -10z m211 -15 c-21
|
||||
-16 -32 -13 -21 4 3 6 14 11 23 11 15 -1 15 -2 -2 -15z m-786 -21 c0 -31 -23
|
||||
-28 -28 4 -2 15 2 22 12 22 11 0 16 -9 16 -26z m583 -6 c6 -22 1 -38 -11 -38
|
||||
-10 0 -31 48 -24 55 12 12 30 4 35 -17z m137 -8 c-8 -5 -13 -10 -10 -11 3 0
|
||||
14 -2 25 -5 64 -13 156 -23 169 -18 9 3 16 1 16 -5 0 -6 -7 -11 -15 -11 -8 0
|
||||
-15 -7 -15 -15 0 -8 -4 -15 -10 -15 -5 0 -10 4 -10 9 0 5 -15 12 -32 16 -95
|
||||
23 -159 33 -180 27 -26 -6 -23 11 5 24 29 15 79 18 57 4z m-262 -19 c19 -12
|
||||
10 -47 -11 -43 -18 3 -23 -13 -7 -23 12 -7 4 -25 -11 -25 -5 0 -9 14 -9 30 0
|
||||
17 -5 30 -11 30 -5 0 -7 5 -4 10 4 6 11 8 16 5 5 -4 9 1 9 9 0 18 8 20 28 7z
|
||||
m52 -71 l-8 -35 -1 31 c-1 17 2 34 6 37 11 12 12 3 3 -33z m80 24 c0 -8 -4
|
||||
-12 -10 -9 -5 3 -10 10 -10 16 0 5 5 9 10 9 6 0 10 -7 10 -16z m-605 -27 c6
|
||||
-7 55 -28 110 -47 55 -18 107 -40 116 -47 8 -7 21 -13 28 -13 10 0 11 -10 7
|
||||
-35 -6 -32 -3 -39 23 -63 22 -18 31 -36 31 -57 0 -16 7 -43 15 -59 8 -15 15
|
||||
-35 15 -42 0 -8 6 -14 14 -14 7 0 19 -7 26 -15 7 -8 8 -15 3 -15 -6 0 -22 -11
|
||||
-37 -25 -23 -21 -30 -23 -46 -12 -11 6 -20 19 -20 29 0 9 -9 19 -20 23 -12 4
|
||||
-24 21 -30 45 -6 22 -15 42 -20 45 -6 3 -10 13 -10 20 0 18 -31 55 -45 55 -6
|
||||
0 -15 15 -20 32 -8 26 -20 37 -55 51 l-46 19 -33 -31 -33 -31 7 -113 c8 -130
|
||||
10 -133 75 -204 11 -13 20 -35 21 -50 1 -28 15 -74 35 -106 14 -23 51 -30 58
|
||||
-10 5 11 14 14 36 10 16 -4 32 -2 35 2 3 5 16 8 30 6 14 -1 28 2 31 6 8 13 48
|
||||
11 62 -3 7 -7 12 -25 12 -40 0 -21 5 -28 20 -28 16 0 20 7 20 33 0 17 7 41 15
|
||||
51 8 11 15 28 15 38 0 9 8 25 19 35 10 10 21 39 25 68 6 51 26 87 26 48 0 -12
|
||||
-4 -25 -10 -28 -5 -3 -10 -21 -10 -39 0 -20 -8 -40 -20 -51 -11 -10 -20 -25
|
||||
-20 -34 0 -9 -7 -26 -15 -38 -9 -12 -15 -26 -14 -30 5 -31 -3 -55 -21 -60 -12
|
||||
-3 -20 -14 -20 -25 0 -17 5 -19 28 -14 26 6 26 6 8 -9 -11 -8 -23 -15 -28 -15
|
||||
-4 0 -8 -10 -8 -22 0 -18 -2 -20 -9 -9 -5 8 -21 16 -35 18 -20 3 -27 -2 -32
|
||||
-21 -8 -35 -38 -42 -72 -17 l-29 20 -26 -32 c-25 -31 -26 -31 -46 -13 -11 10
|
||||
-20 21 -19 25 2 19 -5 33 -37 65 -19 20 -35 43 -35 52 0 8 -7 29 -16 45 -8 17
|
||||
-13 37 -10 45 8 22 -12 65 -43 94 -16 14 -31 39 -34 55 -3 17 -13 62 -21 100
|
||||
-23 112 -22 268 3 314 8 14 11 38 8 59 -6 34 -6 34 26 28 18 -3 37 -12 42 -19z
|
||||
m593 -36 c15 -47 15 -51 1 -51 -5 0 -7 5 -3 11 4 7 -3 19 -16 29 -15 11 -21
|
||||
23 -17 34 10 26 23 18 35 -23z m69 17 c-3 -8 -6 -5 -6 6 -1 11 2 17 5 13 3 -3
|
||||
4 -12 1 -19z m-36 -51 c-13 -13 -15 11 -4 40 7 16 8 15 11 -6 2 -13 -1 -28 -7
|
||||
-34z m396 1 c-3 -8 -6 -5 -6 6 -1 11 2 17 5 13 3 -3 4 -12 1 -19z m-72 -43
|
||||
c-2 -31 -8 -61 -13 -68 -6 -7 -14 -47 -18 -90 -4 -43 -10 -80 -15 -83 -12 -7
|
||||
2 165 17 210 7 22 11 44 8 48 -5 8 13 38 22 38 1 0 1 -25 -1 -55z m-48 -17
|
||||
c-3 -7 -5 -2 -5 12 0 14 2 19 5 13 2 -7 2 -19 0 -25z m-130 -34 c2 -5 -24 -20
|
||||
-57 -33 -54 -21 -81 -50 -47 -51 6 0 4 -5 -6 -11 -14 -8 -22 -8 -30 0 -14 14
|
||||
-18 69 -6 77 5 3 9 -3 9 -13 0 -14 2 -15 9 -4 5 8 7 21 4 30 -4 14 -3 14 6 1
|
||||
9 -13 15 -12 53 2 45 17 60 18 65 2z m-153 -131 c-4 -16 -10 -30 -13 -33 -3
|
||||
-3 -6 -11 -7 -17 -2 -30 -4 -36 -11 -30 -10 10 -32 -13 -27 -28 3 -7 1 -16 -5
|
||||
-20 -17 -10 -24 21 -11 44 8 16 8 21 -1 21 -7 0 -9 3 -5 8 4 4 12 7 18 7 6 0
|
||||
12 8 14 18 3 21 32 57 46 57 4 0 5 -12 2 -27z m306 -79 c0 -8 -5 -12 -10 -9
|
||||
-6 4 -8 11 -5 16 9 14 15 11 15 -7z m-996 -248 c8 -18 22 -40 33 -47 10 -8 18
|
||||
-20 17 -26 -1 -7 -2 -17 -3 -23 0 -5 -5 -10 -10 -10 -5 0 -7 9 -4 20 3 11 1
|
||||
20 -4 20 -4 0 -17 15 -27 34 -10 19 -25 37 -33 40 -8 3 -11 10 -8 16 11 18 25
|
||||
10 39 -24z m566 -5 c0 -17 -4 -33 -10 -36 -5 -3 -10 -21 -10 -40 0 -40 -8 -65
|
||||
-22 -65 -10 0 -4 70 13 133 12 44 29 49 29 8z m-626 -26 c19 -28 21 -44 4 -27
|
||||
-7 7 -17 8 -30 1 -14 -7 -18 -6 -18 6 0 8 5 15 10 15 6 0 10 5 10 11 0 5 -4 7
|
||||
-10 4 -5 -3 -10 -1 -10 4 0 20 28 11 44 -14z m6 -60 c11 -13 10 -14 -4 -9 -9
|
||||
3 -16 10 -16 15 0 13 6 11 20 -6z m-50 1 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1
|
||||
-10 4 0 6 5 11 10 11 6 0 10 -2 10 -4z m180 -102 c0 -28 -2 -32 -13 -23 -14
|
||||
14 -10 72 4 63 5 -3 9 -21 9 -40z m-216 -90 c17 -16 21 -34 9 -34 -17 1 -45
|
||||
29 -38 39 8 14 11 14 29 -5z m651 -153 c-6 -5 -25 10 -25 20 0 5 6 4 14 -3 8
|
||||
-7 12 -15 11 -17z"/>
|
||||
<path d="M579 1193 c-13 -16 -12 -17 4 -4 9 7 17 15 17 17 0 8 -8 3 -21 -13z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 7.6 KiB |
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"name": "",
|
||||
"short_name": "",
|
||||
"icons": [
|
||||
{
|
||||
"src": "android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"theme_color": "#ffffff",
|
||||
"background_color": "#ffffff"
|
||||
}
|
|
@ -11,9 +11,16 @@
|
|||
<!-- These 2 lines make us fullscreen on apple mobile products - remove if you don't like that -->
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="theme-color" content="#000000">
|
||||
|
||||
<link rel="icon" href="images/dynmap.ico" type="image/ico" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="images/icons/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="images/icons/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="images/icons/favicon-16x16.png">
|
||||
<link rel="manifest" href="images/icons/site.webmanifest">
|
||||
<link rel="mask-icon" href="images/icons/safari-pinned-tab.svg" color="#000000">
|
||||
<link rel="shortcut icon" href="images/icons/favicon.ico">
|
||||
<meta name="msapplication-TileColor" content="#000000">
|
||||
<meta name="msapplication-config" content="images/icons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#000000">
|
||||
|
||||
<script type="text/javascript" src="js/jquery-3.5.1.js?_=${version}-${buildnumber}"></script>
|
||||
<link rel="stylesheet" type="text/css" href="css/leaflet.css?_=${version}-${buildnumber}" />
|
||||
|
|
|
@ -194,7 +194,9 @@ var DynmapTileLayer = L.TileLayer.extend({
|
|||
if (!url) {
|
||||
this._cachedTileUrls[tileName] = url = this.options.dynmap.getTileUrl(tileName);
|
||||
}
|
||||
|
||||
if (typeof timestamp === 'undefined') {
|
||||
timestamp = this.options.dynmap.inittime
|
||||
}
|
||||
if(typeof timestamp !== 'undefined') {
|
||||
url += (url.indexOf('?') === -1 ? '?timestamp=' + timestamp : '×tamp=' + timestamp);
|
||||
}
|
||||
|
|
|
@ -592,9 +592,6 @@ DynMap.prototype = {
|
|||
me.selectWorldAndPan(location.world, location, function() {
|
||||
if(completed) completed();
|
||||
});
|
||||
} else {
|
||||
var latlng = me.maptype.getProjection().fromLocationToLatLng(location);
|
||||
me.panToLatLng(latlng, completed);
|
||||
}
|
||||
},
|
||||
panToLayerPoint: function(point, completed) {
|
||||
|
@ -779,8 +776,7 @@ DynMap.prototype = {
|
|||
if (me.followingPlayer !== player) {
|
||||
me.followPlayer(null);
|
||||
}
|
||||
if(player.location.world)
|
||||
me.panToLocation(player.location);
|
||||
me.panToLocation(player.location);
|
||||
});
|
||||
player.menuname.data('sort', player.sort);
|
||||
// Inject into playerlist alphabetically
|
||||
|
|
|
@ -27,7 +27,7 @@ componentconstructors['markers'] = function(dynmap, configuration) {
|
|||
|
||||
function loadmarkers(world) {
|
||||
removeAllMarkers();
|
||||
var url = concatURL(dynmap.options.url.markers, '_markers_/marker_' + encodeURIComponent(world) + '.json');
|
||||
var url = concatURL(dynmap.options.url.markers, '_markers_/marker_' + world + '.json');
|
||||
|
||||
$.getJSON(url, function(data) {
|
||||
var ts = data.timestamp;
|
||||
|
|
|
@ -19,7 +19,7 @@ if (strcmp($userid, '-guest-')) {
|
|||
$loggedin = true;
|
||||
}
|
||||
|
||||
$path = $_REQUEST['marker'];
|
||||
$path = htmlspecialchars($_REQUEST['marker']);
|
||||
if ((!isset($path)) || strstr($path, "..")) {
|
||||
header('HTTP/1.0 500 Error');
|
||||
echo "<h1>500 Error</h1>";
|
||||
|
|
|
@ -19,7 +19,7 @@ if (strcmp($userid, '-guest-')) {
|
|||
$loggedin = true;
|
||||
}
|
||||
|
||||
$path = $_REQUEST['tile'];
|
||||
$path = htmlspecialchars($_REQUEST['tile']);
|
||||
if ((!isset($path)) || strstr($path, "..")) {
|
||||
header('HTTP/1.0 500 Error');
|
||||
echo "<h1>500 Error</h1>";
|
||||
|
|
|
@ -75,7 +75,7 @@ function updateStandaloneFileByServerId($fname, $sid, $content)
|
|||
|
||||
initDbIfNeeded();
|
||||
$stmt = $db->prepare('UPDATE ' . $dbprefix . 'StandaloneFiles SET Content=:content WHERE FileName=:fname AND ServerID=:sid');
|
||||
$stmt->bindParam(':content', $content, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':content', $content, PDO::PARAM_LOB);
|
||||
$stmt->bindParam(':fname', $fname, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':sid', $sid, PDO::PARAM_INT);
|
||||
$res = $stmt->execute();
|
||||
|
|
|
@ -19,7 +19,7 @@ if (strcmp($userid, '-guest-')) {
|
|||
$loggedin = true;
|
||||
}
|
||||
|
||||
$path = $_REQUEST['marker'];
|
||||
$path = htmlspecialchars($_REQUEST['marker']);
|
||||
if ((!isset($path)) || strstr($path, "..")) {
|
||||
header('HTTP/1.0 500 Error');
|
||||
echo "<h1>500 Error</h1>";
|
||||
|
|
|
@ -19,7 +19,7 @@ if (strcmp($userid, '-guest-')) {
|
|||
$loggedin = true;
|
||||
}
|
||||
|
||||
$path = $_REQUEST['tile'];
|
||||
$path = htmlspecialchars($_REQUEST['tile']);
|
||||
if ((!isset($path)) || strstr($path, "..")) {
|
||||
header('HTTP/1.0 500 Error');
|
||||
echo "<h1>500 Error</h1>";
|
||||
|
|
|
@ -17,7 +17,7 @@ if (strcmp($userid, '-guest-')) {
|
|||
$loggedin = true;
|
||||
}
|
||||
|
||||
$path = $_REQUEST['marker'];
|
||||
$path = htmlspecialchars($_REQUEST['marker']);
|
||||
if ((!isset($path)) || strstr($path, "..")) {
|
||||
header('HTTP/1.0 500 Error');
|
||||
echo "<h1>500 Error</h1>";
|
||||
|
|
|
@ -17,7 +17,7 @@ if (strcmp($userid, '-guest-')) {
|
|||
$loggedin = true;
|
||||
}
|
||||
|
||||
$path = $_REQUEST['tile'];
|
||||
$path = htmlspecialchars($_REQUEST['tile']);
|
||||
if ((!isset($path)) || strstr($path, "..")) {
|
||||
header('HTTP/1.0 500 Error');
|
||||
echo "<h1>500 Error</h1>";
|
||||
|
|
|
@ -24,7 +24,7 @@ if (strcmp($userid, '-guest-')) {
|
|||
$loggedin = true;
|
||||
}
|
||||
|
||||
$path = $_REQUEST['marker'];
|
||||
$path = htmlspecialchars($_REQUEST['marker']);
|
||||
if ((!isset($path)) || strstr($path, "..")) {
|
||||
header('HTTP/1.0 500 Error');
|
||||
echo "<h1>500 Error</h1>";
|
||||
|
|
|
@ -24,7 +24,7 @@ if (strcmp($userid, '-guest-')) {
|
|||
$loggedin = true;
|
||||
}
|
||||
|
||||
$path = $_REQUEST['tile'];
|
||||
$path = htmlspecialchars($_REQUEST['tile']);
|
||||
if ((!isset($path)) || strstr($path, "..")) {
|
||||
header('HTTP/1.0 500 Error');
|
||||
echo "<h1>500 Error</h1>";
|
||||
|
|
|
@ -814,7 +814,8 @@ block:id=detector_rail,state=powered:false,patch0=0:detector_rail,transparency=T
|
|||
# Web
|
||||
block:id=cobweb,patch0-1=0:cobweb,transparency=TRANSPARENT
|
||||
# Grass
|
||||
block:id=grass,patch0-1=1000:grass,transparency=TRANSPARENT
|
||||
[-1.20.2]block:id=grass,patch0-1=1000:grass,transparency=TRANSPARENT
|
||||
[1.20.3-]block:id=short_grass,patch0-1=1000:grass,transparency=TRANSPARENT
|
||||
# Fern
|
||||
block:id=fern,patch0-1=1000:fern,transparency=TRANSPARENT
|
||||
# Dead shrub
|
||||
|
@ -3733,3 +3734,868 @@ block:id=%melon_stem,patch0=0:melon_stem,blockcolor=foliagebiome,transparency=TR
|
|||
[1.19-]block:id=%lightning_rod,state=powered:false/facing:up,patch0=0:lightning_rod,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19-]block:id=%lightning_rod,state=powered:true/facing:down,patch0=0:lightning_rod_on,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19-]block:id=%lightning_rod,state=powered:false/facing:down,patch0=0:lightning_rod,transparency=SEMITRANSPARENT,stdrot=true
|
||||
|
||||
# 1.19.3
|
||||
[1.19.3-]texture:id=bamboo_block,filename=assets/minecraft/textures/block/bamboo_block.png,xcount=1,ycount=1
|
||||
[1.19.3-]texture:id=bamboo_block_top,filename=assets/minecraft/textures/block/bamboo_block_top.png,xcount=1,ycount=1
|
||||
[1.19.3-]texture:id=stripped_bamboo_block,filename=assets/minecraft/textures/block/stripped_bamboo_block.png,xcount=1,ycount=1
|
||||
[1.19.3-]texture:id=stripped_bamboo_block_top,filename=assets/minecraft/textures/block/stripped_bamboo_block_top.png,xcount=1,ycount=1
|
||||
[1.19.3-]texture:id=stripped_bamboo_block,filename=assets/minecraft/textures/block/stripped_bamboo_block.png,xcount=1,ycount=1
|
||||
[1.19.3-]texture:id=stripped_bamboo_block_top,filename=assets/minecraft/textures/block/stripped_bamboo_block_top.png,xcount=1,ycount=1
|
||||
[1.19.3-]texture:id=bamboo_planks,filename=assets/minecraft/textures/block/bamboo_planks.png,xcount=1,ycount=1
|
||||
[1.19.3-]texture:id=bamboo_mosaic,filename=assets/minecraft/textures/block/bamboo_mosaic.png,xcount=1,ycount=1
|
||||
[1.19.3-]texture:id=bamboo_door_top,filename=assets/minecraft/textures/block/bamboo_door_top.png,xcount=1,ycount=1
|
||||
[1.19.3-]texture:id=bamboo_door_bottom,filename=assets/minecraft/textures/block/bamboo_door_bottom.png,xcount=1,ycount=1
|
||||
[1.19.3-]texture:id=bamboo_trapdoor,filename=assets/minecraft/textures/block/bamboo_trapdoor.png,xcount=1,ycount=1
|
||||
[1.19.3-]texturefile:id=bamboo_sign,filename=assets/minecraft/textures/entity/signs/bamboo.png,format=SIGN
|
||||
[1.19.3-]texturefile:id=piglin,filename=assets/minecraft/textures/entity/piglin/piglin.png,format=SKIN
|
||||
[1.19.3-]texture:id=chiseled_bookshelf_side,filename=assets/minecraft/textures/block/chiseled_bookshelf_side.png,xcount=1,ycount=1
|
||||
[1.19.3-]texture:id=chiseled_bookshelf_top,filename=assets/minecraft/textures/block/chiseled_bookshelf_top.png,xcount=1,ycount=1
|
||||
[1.19.3-]texture:id=chiseled_bookshelf_occupied,filename=assets/minecraft/textures/block/chiseled_bookshelf_occupied.png,xcount=1,ycount=1
|
||||
[1.19.3-]texture:id=chiseled_bookshelf_empty,filename=assets/minecraft/textures/block/chiseled_bookshelf_empty.png,xcount=1,ycount=1
|
||||
|
||||
[1.19.3-]texturefile:id=acacia_hanging_sign,filename=assets/minecraft/textures/entity/signs/hanging/acacia.png,format=SIGN
|
||||
[1.19.3-]texturefile:id=bamboo_hanging_sign,filename=assets/minecraft/textures/entity/signs/hanging/bamboo.png,format=SIGN
|
||||
[1.19.3-]texturefile:id=birch_hanging_sign,filename=assets/minecraft/textures/entity/signs/hanging/birch.png,format=SIGN
|
||||
[1.19.3-]texturefile:id=crimson_hanging_sign,filename=assets/minecraft/textures/entity/signs/hanging/crimson.png,format=SIGN
|
||||
[1.19.3-]texturefile:id=dark_oak_hanging_sign,filename=assets/minecraft/textures/entity/signs/hanging/dark_oak.png,format=SIGN
|
||||
[1.19.3-]texturefile:id=jungle_hanging_sign,filename=assets/minecraft/textures/entity/signs/hanging/jungle.png,format=SIGN
|
||||
[1.19.3-]texturefile:id=mangrove_hanging_sign,filename=assets/minecraft/textures/entity/signs/hanging/mangrove.png,format=SIGN
|
||||
[1.19.3-]texturefile:id=oak_hanging_sign,filename=assets/minecraft/textures/entity/signs/hanging/oak_hanging_sign.png,format=SIGN
|
||||
[1.19.3-]texturefile:id=spruce_hanging_sign,filename=assets/minecraft/textures/entity/signs/hanging/spruce_hanging_sign.png,format=SIGN
|
||||
[1.19.3-]texturefile:id=warped_hanging_sign,filename=assets/minecraft/textures/entity/signs/hanging/warped.png,format=SIGN
|
||||
|
||||
[1.19.3-]block:id=%bamboo_block,state=axis:x,patch0=0:bamboo_block,patch1=0:bamboo_block_top,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_block,state=axis:y,patch0=0:bamboo_block,patch1=0:bamboo_block_top,patch2=0:bamboo_block,patch3=0:bamboo_block,patch4=0:bamboo_block_top,patch5=0:bamboo_block,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_block,state=axis:z,patch0=0:bamboo_block,patch1=0:bamboo_block_top,stdrot=true
|
||||
[1.19.3-]block:id=%stripped_bamboo_block,state=axis:x,patch0=0:stripped_bamboo_block,patch1=0:stripped_bamboo_block_top,stdrot=true
|
||||
[1.19.3-]block:id=%stripped_bamboo_block,state=axis:y,patch0=0:stripped_bamboo_block,patch1=0:stripped_bamboo_block_top,patch2=0:stripped_bamboo_block,patch3=0:stripped_bamboo_block,patch4=0:stripped_bamboo_block_top,patch5=0:stripped_bamboo_block,stdrot=true
|
||||
[1.19.3-]block:id=%stripped_bamboo_block,state=axis:z,patch0=0:stripped_bamboo_block,patch1=0:stripped_bamboo_block_top,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_planks,patch0=0:bamboo_planks,patch1=0:bamboo_planks,patch2=0:bamboo_planks,patch3=0:bamboo_planks,patch4=0:bamboo_planks,patch5=0:bamboo_planks,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic,patch0=0:bamboo_mosaic,patch1=0:bamboo_mosaic,patch2=0:bamboo_mosaic,patch3=0:bamboo_mosaic,patch4=0:bamboo_mosaic,patch5=0:bamboo_mosaic,stdrot=true
|
||||
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:north/half:top/shape:straight,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:north/half:top/shape:inner_left,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:north/half:top/shape:inner_right,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:north/half:top/shape:outer_left,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:north/half:top/shape:outer_right,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:north/half:bottom/shape:straight,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:north/half:bottom/shape:inner_left,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:north/half:bottom/shape:inner_right,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:north/half:bottom/shape:outer_left,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:north/half:bottom/shape:outer_right,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:south/half:top/shape:straight,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:south/half:top/shape:inner_left,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:south/half:top/shape:inner_right,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:south/half:top/shape:outer_left,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:south/half:top/shape:outer_right,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:south/half:bottom/shape:straight,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:south/half:bottom/shape:inner_left,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:south/half:bottom/shape:inner_right,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:south/half:bottom/shape:outer_left,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:south/half:bottom/shape:outer_right,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:west/half:top/shape:straight,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:west/half:top/shape:inner_left,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:west/half:top/shape:inner_right,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:west/half:top/shape:outer_left,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:west/half:top/shape:outer_right,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:west/half:bottom/shape:straight,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:west/half:bottom/shape:inner_left,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:west/half:bottom/shape:inner_right,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:west/half:bottom/shape:outer_left,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:west/half:bottom/shape:outer_right,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:east/half:top/shape:straight,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:east/half:top/shape:inner_left,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:east/half:top/shape:inner_right,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:east/half:top/shape:outer_left,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:east/half:top/shape:outer_right,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:east/half:bottom/shape:straight,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:east/half:bottom/shape:inner_left,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:east/half:bottom/shape:inner_right,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:east/half:bottom/shape:outer_left,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_stairs,state=facing:east/half:bottom/shape:outer_right,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:north/half:top/shape:straight,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:north/half:top/shape:inner_left,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:north/half:top/shape:inner_right,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:north/half:top/shape:outer_left,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:north/half:top/shape:outer_right,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:north/half:bottom/shape:straight,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:north/half:bottom/shape:inner_left,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:north/half:bottom/shape:inner_right,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:north/half:bottom/shape:outer_left,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:north/half:bottom/shape:outer_right,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:south/half:top/shape:straight,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:south/half:top/shape:inner_left,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:south/half:top/shape:inner_right,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:south/half:top/shape:outer_left,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:south/half:top/shape:outer_right,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:south/half:bottom/shape:straight,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:south/half:bottom/shape:inner_left,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:south/half:bottom/shape:inner_right,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:south/half:bottom/shape:outer_left,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:south/half:bottom/shape:outer_right,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:west/half:top/shape:straight,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:west/half:top/shape:inner_left,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:west/half:top/shape:inner_right,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:west/half:top/shape:outer_left,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:west/half:top/shape:outer_right,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:west/half:bottom/shape:straight,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:west/half:bottom/shape:inner_left,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:west/half:bottom/shape:inner_right,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:west/half:bottom/shape:outer_left,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:west/half:bottom/shape:outer_right,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:east/half:top/shape:straight,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:east/half:top/shape:inner_left,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:east/half:top/shape:inner_right,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:east/half:top/shape:outer_left,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:east/half:top/shape:outer_right,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:east/half:bottom/shape:straight,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:east/half:bottom/shape:inner_left,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:east/half:bottom/shape:inner_right,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:east/half:bottom/shape:outer_left,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_stairs,state=facing:east/half:bottom/shape:outer_right,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
|
||||
[1.19.3-]block:id=%bamboo_slab,state=type:top,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_slab,state=type:bottom,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_slab,state=type:double,patch0=0:bamboo_planks,patch1=0:bamboo_planks,patch2=0:bamboo_planks,patch3=0:bamboo_planks,patch4=0:bamboo_planks,patch5=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
|
||||
[1.19.3-]block:id=%bamboo_mosaic_slab,state=type:top,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_slab,state=type:bottom,patch0=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_mosaic_slab,state=type:double,patch0=0:bamboo_mosaic,patch1=0:bamboo_mosaic,patch2=0:bamboo_mosaic,patch3=0:bamboo_mosaic,patch4=0:bamboo_mosaic,patch5=0:bamboo_mosaic,transparency=SEMITRANSPARENT,stdrot=true
|
||||
|
||||
[1.19.3-]block:id=%bamboo_fence,state=west:true/east:true/south:true/north:true,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence,state=west:false/east:true/south:true/north:true,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence,state=west:true/east:true/south:false/north:true,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence,state=west:false/east:true/south:false/north:true,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence,state=west:true/east:true/south:true/north:false,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence,state=west:false/east:true/south:true/north:false,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence,state=west:true/east:true/south:false/north:false,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence,state=west:false/east:true/south:false/north:false,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence,state=west:true/east:false/south:true/north:true,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence,state=west:false/east:false/south:true/north:true,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence,state=west:true/east:false/south:false/north:true,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence,state=west:false/east:false/south:false/north:true,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence,state=west:true/east:false/south:true/north:false,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence,state=west:false/east:false/south:true/north:false,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence,state=west:true/east:false/south:false/north:false,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence,state=west:false/east:false/south:false/north:false,patch0=0:bamboo_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
|
||||
[1.19.3-]block:id=%bamboo_fence_gate,state=facing:north/in_wall:true/open:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence_gate,state=facing:north/in_wall:true/open:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence_gate,state=facing:north/in_wall:false/open:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence_gate,state=facing:north/in_wall:false/open:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence_gate,state=facing:south/in_wall:true/open:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence_gate,state=facing:south/in_wall:true/open:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence_gate,state=facing:south/in_wall:false/open:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence_gate,state=facing:south/in_wall:false/open:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence_gate,state=facing:west/in_wall:true/open:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence_gate,state=facing:west/in_wall:true/open:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence_gate,state=facing:west/in_wall:false/open:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence_gate,state=facing:west/in_wall:false/open:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence_gate,state=facing:east/in_wall:true/open:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence_gate,state=facing:east/in_wall:true/open:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence_gate,state=facing:east/in_wall:false/open:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_fence_gate,state=facing:east/in_wall:false/open:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:north/hinge:left/half:upper/open:true,patch0=0:bamboo_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:north/hinge:left/half:upper/open:false,patch0=0:bamboo_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:north/hinge:right/half:upper/open:true,patch0=0:bamboo_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:north/hinge:right/half:upper/open:false,patch0=0:bamboo_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:north/hinge:left/half:lower/open:true,patch0=0:bamboo_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:north/hinge:left/half:lower/open:false,patch0=0:bamboo_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:north/hinge:right/half:lower/open:true,patch0=0:bamboo_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:north/hinge:right/half:lower/open:false,patch0=0:bamboo_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:south/hinge:left/half:upper/open:true,patch0=0:bamboo_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:south/hinge:left/half:upper/open:false,patch0=0:bamboo_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:south/hinge:right/half:upper/open:true,patch0=0:bamboo_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:south/hinge:right/half:upper/open:false,patch0=0:bamboo_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:south/hinge:left/half:lower/open:true,patch0=0:bamboo_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:south/hinge:left/half:lower/open:false,patch0=0:bamboo_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:south/hinge:right/half:lower/open:true,patch0=0:bamboo_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:south/hinge:right/half:lower/open:false,patch0=0:bamboo_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:west/hinge:left/half:upper/open:true,patch0=0:bamboo_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:west/hinge:left/half:upper/open:false,patch0=0:bamboo_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:west/hinge:right/half:upper/open:true,patch0=0:bamboo_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:west/hinge:right/half:upper/open:false,patch0=0:bamboo_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:west/hinge:left/half:lower/open:true,patch0=0:bamboo_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:west/hinge:left/half:lower/open:false,patch0=0:bamboo_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:west/hinge:right/half:lower/open:true,patch0=0:bamboo_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:west/hinge:right/half:lower/open:false,patch0=0:bamboo_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:east/hinge:left/half:upper/open:true,patch0=0:bamboo_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:east/hinge:left/half:upper/open:false,patch0=0:bamboo_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:east/hinge:right/half:upper/open:true,patch0=0:bamboo_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:east/hinge:right/half:upper/open:false,patch0=0:bamboo_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:east/hinge:left/half:lower/open:true,patch0=0:bamboo_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:east/hinge:left/half:lower/open:false,patch0=0:bamboo_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:east/hinge:right/half:lower/open:true,patch0=0:bamboo_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_door,state=facing:east/hinge:right/half:lower/open:false,patch0=0:bamboo_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
|
||||
[1.19.3-]block:id=%bamboo_trapdoor,state=facing:north/half:top/open:true,patch0=0:bamboo_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_trapdoor,state=facing:north/half:top/open:false,patch0=0:bamboo_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_trapdoor,state=facing:north/half:bottom/open:true,patch0=0:bamboo_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_trapdoor,state=facing:north/half:bottom/open:false,patch0=0:bamboo_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_trapdoor,state=facing:south/half:top/open:true,patch0=0:bamboo_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_trapdoor,state=facing:south/half:top/open:false,patch0=0:bamboo_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_trapdoor,state=facing:south/half:bottom/open:true,patch0=0:bamboo_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_trapdoor,state=facing:south/half:bottom/open:false,patch0=0:bamboo_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_trapdoor,state=facing:west/half:top/open:true,patch0=0:bamboo_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_trapdoor,state=facing:west/half:top/open:false,patch0=0:bamboo_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_trapdoor,state=facing:west/half:bottom/open:true,patch0=0:bamboo_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_trapdoor,state=facing:west/half:bottom/open:false,patch0=0:bamboo_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_trapdoor,state=facing:east/half:top/open:true,patch0=0:bamboo_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_trapdoor,state=facing:east/half:top/open:false,patch0=0:bamboo_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_trapdoor,state=facing:east/half:bottom/open:true,patch0=0:bamboo_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_trapdoor,state=facing:east/half:bottom/open:false,patch0=0:bamboo_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
|
||||
[1.19.3-]block:id=%bamboo_pressure_plate,state=powered:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_pressure_plate,state=powered:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:north/face:floor/powered:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:north/face:floor/powered:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:south/face:floor/powered:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:south/face:floor/powered:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:west/face:floor/powered:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:west/face:floor/powered:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:east/face:floor/powered:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:east/face:floor/powered:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:north/face:wall/powered:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:north/face:wall/powered:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:south/face:wall/powered:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:south/face:wall/powered:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:west/face:wall/powered:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:west/face:wall/powered:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:east/face:wall/powered:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:east/face:wall/powered:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:north/face:ceiling/powered:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:north/face:ceiling/powered:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:south/face:ceiling/powered:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:south/face:ceiling/powered:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:west/face:ceiling/powered:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:west/face:ceiling/powered:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:east/face:ceiling/powered:true,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.3-]block:id=%bamboo_button,state=facing:east/face:ceiling/powered:false,patch0=0:bamboo_planks,transparency=TRANSPARENT,stdrot=true
|
||||
|
||||
[1.19.3-]block:id=%bamboo_sign,patch0=0,patch1=1,patch2=2,patch3=3,patch4=4,patch5=5,patch6=6,patch7=7,patch8=8,patch9=9,transparency=TRANSPARENT,txtid=bamboo_sign
|
||||
[1.19.3-]block:id=%bamboo_wall_sign,patch0=0,patch1=1,patch2=2,patch3=3,patch4=4,patch5=5,transparency=TRANSPARENT,txtid=bamboo_sign
|
||||
|
||||
[1.19.3-]block:id=piglin_wall_head,patch0=5:piglin,patch1=4:piglin,patch2=1:piglin,patch3=0:piglin,patch4=2:piglin,patch5=3:piglin,transparency=TRANSPARENT
|
||||
[1.19.3-]block:id=piglin_head,patch0=5:piglin,patch1=4:piglin,patch2=1:piglin,patch3=0:piglin,patch4=2:piglin,patch5=3:piglin,transparency=TRANSPARENT
|
||||
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:north/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:north/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:north/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:north/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:north/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:north/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:north/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:north/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:north/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:north/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:north/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:north/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:north/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:north/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:north/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:north/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:north/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:north/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:north/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:north/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:north/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:north/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:north/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:north/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:north/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:north/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:north/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:north/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:north/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:north/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:north/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:north/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:north/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:north/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:north/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:north/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:north/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:north/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:north/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:north/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:north/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:north/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:north/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:north/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:north/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:north/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:north/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:north/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:north/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:north/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:north/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:north/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:north/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:north/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:north/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:north/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:north/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:north/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:north/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:north/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:north/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:north/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:north/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:north/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:south/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:south/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:south/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:south/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:south/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:south/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:south/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:south/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:south/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:south/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:south/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:south/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:south/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:south/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:south/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:south/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:south/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:south/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:south/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:south/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:south/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:south/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:south/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:south/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:south/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:south/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:south/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:south/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:south/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:south/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:south/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:south/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:south/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:south/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:south/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:south/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:south/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:south/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:south/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:south/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:south/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:south/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:south/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:south/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:south/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:south/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:south/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:south/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:south/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:south/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:south/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:south/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:south/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:south/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:south/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:south/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:south/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:south/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:south/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:south/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:south/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:south/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:south/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:south/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:west/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:west/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:west/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:west/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:west/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:west/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:west/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:west/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:west/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:west/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:west/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:west/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:west/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:west/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:west/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:west/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:west/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:west/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:west/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:west/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:west/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:west/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:west/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:west/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:west/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:west/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:west/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:west/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:west/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:west/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:west/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:west/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:west/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:west/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:west/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:west/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:west/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:west/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:west/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:west/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:west/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:west/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:west/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:west/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:west/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:west/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:west/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:west/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:west/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:west/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:west/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:west/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:west/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:west/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:west/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:west/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:west/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:west/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:west/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:west/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:west/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:west/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:west/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:west/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:east/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:east/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:east/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:east/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:east/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:east/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:east/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:east/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:east/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:east/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:east/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:east/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:east/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:east/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:east/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:east/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:east/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:east/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:east/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:east/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:east/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:east/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:east/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:east/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:east/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:east/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:east/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:east/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:true/facing:east/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:true/facing:east/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:true/facing:east/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:true/facing:east/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:east/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:east/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:east/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:east/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:east/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:east/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:east/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:east/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:east/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:east/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:east/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:east/slot_1_occupied:true/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:east/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:east/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:east/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:east/slot_1_occupied:true/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_occupied,patch3=0:chiseled_bookshelf_empty,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:east/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:east/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:east/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:east/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:east/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:east/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:east/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:true/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:east/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:east/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:east/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:east/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:east/slot_1_occupied:false/slot_3_occupied:true,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:true/slot_0_occupied:false/facing:east/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:true/slot_0_occupied:false/facing:east/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:true/slot_4_occupied:false/slot_0_occupied:false/facing:east/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,patch3=0:chiseled_bookshelf_occupied,stdrot=true
|
||||
[1.19.3-]block:id=%chiseled_bookshelf,state=slot_2_occupied:false/slot_5_occupied:false/slot_4_occupied:false/slot_0_occupied:false/facing:east/slot_1_occupied:false/slot_3_occupied:false,patch0=0:chiseled_bookshelf_side,patch1=0:chiseled_bookshelf_top,patch2=0:chiseled_bookshelf_empty,stdrot=true
|
||||
|
||||
# 1.19.4
|
||||
[1.19.4-]texture:id=cherry_planks,filename=assets/minecraft/textures/block/cherry_planks.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=cherry_sapling,filename=assets/minecraft/textures/block/cherry_sapling.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=cherry_log,filename=assets/minecraft/textures/block/cherry_log.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=cherry_log_top,filename=assets/minecraft/textures/block/cherry_log_top.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=stripped_cherry_log,filename=assets/minecraft/textures/block/stripped_cherry_log.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=stripped_cherry_log_top,filename=assets/minecraft/textures/block/stripped_cherry_log_top.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=cherry_leaves,filename=assets/minecraft/textures/block/cherry_leaves.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=cherry_trapdoor,filename=assets/minecraft/textures/block/cherry_trapdoor.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=cherry_door_top,filename=assets/minecraft/textures/block/cherry_door_top.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=cherry_door_bottom,filename=assets/minecraft/textures/block/cherry_door_bottom.png,xcount=1,ycount=1
|
||||
[1.19.4-]texturefile:id=cherry_sign,filename=assets/minecraft/textures/entity/signs/cherry.png,format=SIGN
|
||||
[1.19.4-]texture:id=suspicious_sand_0,filename=assets/minecraft/textures/block/suspicious_sand_0.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=suspicious_sand_1,filename=assets/minecraft/textures/block/suspicious_sand_1.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=suspicious_sand_2,filename=assets/minecraft/textures/block/suspicious_sand_2.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=suspicious_sand_3,filename=assets/minecraft/textures/block/suspicious_sand_3.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=torchflower,filename=assets/minecraft/textures/block/torchflower.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=torchflower_crop_stage0,filename=assets/minecraft/textures/block/torchflower_crop_stage0.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=torchflower_crop_stage1,filename=assets/minecraft/textures/block/torchflower_crop_stage1.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=torchflower_crop_stage2,filename=assets/minecraft/textures/block/torchflower_crop_stage2.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=pink_petals,filename=assets/minecraft/textures/block/pink_petals.png,xcount=1,ycount=1
|
||||
[1.19.4-]texture:id=pink_petals_stem,filename=assets/minecraft/textures/block/pink_petals_stem.png,xcount=1,ycount=1
|
||||
[1.19.4-]block:id=%cherry_planks,patch0=0:cherry_planks,patch1=0:cherry_planks,patch2=0:cherry_planks,patch3=0:cherry_planks,patch4=0:cherry_planks,patch5=0:cherry_planks,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_sapling,patch0=0:cherry_sapling,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_planks,patch0=0:cherry_planks,patch1=0:cherry_planks,patch2=0:cherry_planks,patch3=0:cherry_planks,patch4=0:cherry_planks,patch5=0:cherry_planks,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_sapling,patch0=0:cherry_sapling,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_log,state=axis:x,patch0=0:cherry_log_top,patch1=6000:cherry_log,patch2=6000:cherry_log,patch3=0:cherry_log_top,patch4=6000:cherry_log,patch5=6000:cherry_log,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_log,state=axis:y,patch0=0:cherry_log,patch1=0:cherry_log_top,patch2=0:cherry_log,patch3=0:cherry_log,patch4=0:cherry_log_top,patch5=0:cherry_log,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_log,state=axis:z,patch0=6000:cherry_log,patch1=0:cherry_log,patch2=0:cherry_log_top,patch3=6000:cherry_log,patch4=0:cherry_log,patch5=0:cherry_log_top,stdrot=true
|
||||
[1.19.4-]block:id=%stripped_cherry_log,state=axis:x,patch0=0:stripped_cherry_log_top,patch1=6000:stripped_cherry_log,patch2=6000:stripped_cherry_log,patch3=0:stripped_cherry_log_top,patch4=6000:stripped_cherry_log,patch5=6000:stripped_cherry_log,stdrot=true
|
||||
[1.19.4-]block:id=%stripped_cherry_log,state=axis:y,patch0=0:stripped_cherry_log,patch1=0:stripped_cherry_log_top,patch2=0:stripped_cherry_log,patch3=0:stripped_cherry_log,patch4=0:stripped_cherry_log_top,patch5=0:stripped_cherry_log,stdrot=true
|
||||
[1.19.4-]block:id=%stripped_cherry_log,state=axis:z,patch0=6000:stripped_cherry_log,patch1=0:stripped_cherry_log,patch2=0:stripped_cherry_log_top,patch3=6000:stripped_cherry_log,patch4=0:stripped_cherry_log,patch5=0:stripped_cherry_log_top,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_wood,state=axis:x,patch0=0:cherry_log,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_wood,state=axis:y,patch0=0:cherry_log,patch1=0:cherry_log,patch2=0:cherry_log,patch3=0:cherry_log,patch4=0:cherry_log,patch5=0:cherry_log,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_wood,state=axis:z,patch0=0:cherry_log,stdrot=true
|
||||
[1.19.4-]block:id=%stripped_cherry_wood,state=axis:x,patch0=0:stripped_cherry_log,stdrot=true
|
||||
[1.19.4-]block:id=%stripped_cherry_wood,state=axis:y,patch0=0:stripped_cherry_log,patch1=0:stripped_cherry_log,patch2=0:stripped_cherry_log,patch3=0:stripped_cherry_log,patch4=0:stripped_cherry_log,patch5=0:stripped_cherry_log,stdrot=true
|
||||
[1.19.4-]block:id=%stripped_cherry_wood,state=axis:z,patch0=0:stripped_cherry_log,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_leaves,patch0=0:cherry_leaves,patch1=0:cherry_leaves,patch2=0:cherry_leaves,patch3=0:cherry_leaves,patch4=0:cherry_leaves,patch5=0:cherry_leaves,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_pressure_plate,state=powered:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_pressure_plate,state=powered:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_trapdoor,state=facing:north/half:top/open:true,patch0=0:cherry_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_trapdoor,state=facing:north/half:top/open:false,patch0=0:cherry_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_trapdoor,state=facing:north/half:bottom/open:true,patch0=0:cherry_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_trapdoor,state=facing:north/half:bottom/open:false,patch0=0:cherry_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_trapdoor,state=facing:south/half:top/open:true,patch0=0:cherry_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_trapdoor,state=facing:south/half:top/open:false,patch0=0:cherry_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_trapdoor,state=facing:south/half:bottom/open:true,patch0=0:cherry_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_trapdoor,state=facing:south/half:bottom/open:false,patch0=0:cherry_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_trapdoor,state=facing:west/half:top/open:true,patch0=0:cherry_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_trapdoor,state=facing:west/half:top/open:false,patch0=0:cherry_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_trapdoor,state=facing:west/half:bottom/open:true,patch0=0:cherry_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_trapdoor,state=facing:west/half:bottom/open:false,patch0=0:cherry_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_trapdoor,state=facing:east/half:top/open:true,patch0=0:cherry_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_trapdoor,state=facing:east/half:top/open:false,patch0=0:cherry_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_trapdoor,state=facing:east/half:bottom/open:true,patch0=0:cherry_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_trapdoor,state=facing:east/half:bottom/open:false,patch0=0:cherry_trapdoor,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%potted_cherry_sapling,patch0=0:flower_pot,patch1=0:dirt,patch2=0:cherry_sapling,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:north/face:floor/powered:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:north/face:floor/powered:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:south/face:floor/powered:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:south/face:floor/powered:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:west/face:floor/powered:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:west/face:floor/powered:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:east/face:floor/powered:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:east/face:floor/powered:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:north/face:wall/powered:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:north/face:wall/powered:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:south/face:wall/powered:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:south/face:wall/powered:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:west/face:wall/powered:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:west/face:wall/powered:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:east/face:wall/powered:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:east/face:wall/powered:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:north/face:ceiling/powered:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:north/face:ceiling/powered:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:south/face:ceiling/powered:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:south/face:ceiling/powered:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:west/face:ceiling/powered:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:west/face:ceiling/powered:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:east/face:ceiling/powered:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_button,state=facing:east/face:ceiling/powered:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:north/half:top/shape:straight,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:north/half:top/shape:inner_left,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:north/half:top/shape:inner_right,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:north/half:top/shape:outer_left,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:north/half:top/shape:outer_right,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:north/half:bottom/shape:straight,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:north/half:bottom/shape:inner_left,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:north/half:bottom/shape:inner_right,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:north/half:bottom/shape:outer_left,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:north/half:bottom/shape:outer_right,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:south/half:top/shape:straight,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:south/half:top/shape:inner_left,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:south/half:top/shape:inner_right,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:south/half:top/shape:outer_left,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:south/half:top/shape:outer_right,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:south/half:bottom/shape:straight,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:south/half:bottom/shape:inner_left,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:south/half:bottom/shape:inner_right,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:south/half:bottom/shape:outer_left,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:south/half:bottom/shape:outer_right,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:west/half:top/shape:straight,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:west/half:top/shape:inner_left,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:west/half:top/shape:inner_right,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:west/half:top/shape:outer_left,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:west/half:top/shape:outer_right,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:west/half:bottom/shape:straight,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:west/half:bottom/shape:inner_left,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:west/half:bottom/shape:inner_right,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:west/half:bottom/shape:outer_left,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:west/half:bottom/shape:outer_right,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:east/half:top/shape:straight,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:east/half:top/shape:inner_left,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:east/half:top/shape:inner_right,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:east/half:top/shape:outer_left,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:east/half:top/shape:outer_right,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:east/half:bottom/shape:straight,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:east/half:bottom/shape:inner_left,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:east/half:bottom/shape:inner_right,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:east/half:bottom/shape:outer_left,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_stairs,state=facing:east/half:bottom/shape:outer_right,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_slab,state=type:top,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_slab,state=type:bottom,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_slab,state=type:double,patch0=0:cherry_planks,patch1=0:cherry_planks,patch2=0:cherry_planks,patch3=0:cherry_planks,patch4=0:cherry_planks,patch5=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence_gate,state=facing:north/in_wall:true/open:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence_gate,state=facing:north/in_wall:true/open:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence_gate,state=facing:north/in_wall:false/open:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence_gate,state=facing:north/in_wall:false/open:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence_gate,state=facing:south/in_wall:true/open:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence_gate,state=facing:south/in_wall:true/open:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence_gate,state=facing:south/in_wall:false/open:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence_gate,state=facing:south/in_wall:false/open:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence_gate,state=facing:west/in_wall:true/open:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence_gate,state=facing:west/in_wall:true/open:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence_gate,state=facing:west/in_wall:false/open:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence_gate,state=facing:west/in_wall:false/open:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence_gate,state=facing:east/in_wall:true/open:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence_gate,state=facing:east/in_wall:true/open:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence_gate,state=facing:east/in_wall:false/open:true,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence_gate,state=facing:east/in_wall:false/open:false,patch0=0:cherry_planks,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence,state=west:true/east:true/south:true/north:true,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence,state=west:false/east:true/south:true/north:true,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence,state=west:true/east:true/south:false/north:true,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence,state=west:false/east:true/south:false/north:true,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence,state=west:true/east:true/south:true/north:false,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence,state=west:false/east:true/south:true/north:false,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence,state=west:true/east:true/south:false/north:false,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence,state=west:false/east:true/south:false/north:false,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence,state=west:true/east:false/south:true/north:true,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence,state=west:false/east:false/south:true/north:true,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence,state=west:true/east:false/south:false/north:true,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence,state=west:false/east:false/south:false/north:true,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence,state=west:true/east:false/south:true/north:false,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence,state=west:false/east:false/south:true/north:false,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence,state=west:true/east:false/south:false/north:false,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_fence,state=west:false/east:false/south:false/north:false,patch0=0:cherry_planks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:north/hinge:left/half:upper/open:true,patch0=0:cherry_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:north/hinge:left/half:upper/open:false,patch0=0:cherry_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:north/hinge:right/half:upper/open:true,patch0=0:cherry_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:north/hinge:right/half:upper/open:false,patch0=0:cherry_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:north/hinge:left/half:lower/open:true,patch0=0:cherry_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:north/hinge:left/half:lower/open:false,patch0=0:cherry_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:north/hinge:right/half:lower/open:true,patch0=0:cherry_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:north/hinge:right/half:lower/open:false,patch0=0:cherry_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:south/hinge:left/half:upper/open:true,patch0=0:cherry_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:south/hinge:left/half:upper/open:false,patch0=0:cherry_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:south/hinge:right/half:upper/open:true,patch0=0:cherry_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:south/hinge:right/half:upper/open:false,patch0=0:cherry_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:south/hinge:left/half:lower/open:true,patch0=0:cherry_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:south/hinge:left/half:lower/open:false,patch0=0:cherry_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:south/hinge:right/half:lower/open:true,patch0=0:cherry_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:south/hinge:right/half:lower/open:false,patch0=0:cherry_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:west/hinge:left/half:upper/open:true,patch0=0:cherry_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:west/hinge:left/half:upper/open:false,patch0=0:cherry_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:west/hinge:right/half:upper/open:true,patch0=0:cherry_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:west/hinge:right/half:upper/open:false,patch0=0:cherry_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:west/hinge:left/half:lower/open:true,patch0=0:cherry_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:west/hinge:left/half:lower/open:false,patch0=0:cherry_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:west/hinge:right/half:lower/open:true,patch0=0:cherry_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:west/hinge:right/half:lower/open:false,patch0=0:cherry_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:east/hinge:left/half:upper/open:true,patch0=0:cherry_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:east/hinge:left/half:upper/open:false,patch0=0:cherry_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:east/hinge:right/half:upper/open:true,patch0=0:cherry_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:east/hinge:right/half:upper/open:false,patch0=0:cherry_door_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:east/hinge:left/half:lower/open:true,patch0=0:cherry_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:east/hinge:left/half:lower/open:false,patch0=0:cherry_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:east/hinge:right/half:lower/open:true,patch0=0:cherry_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%cherry_door,state=facing:east/hinge:right/half:lower/open:false,patch0=0:cherry_door_bottom,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=cherry_sign,patch0=0,patch1=1,patch2=2,patch3=3,patch4=4,patch5=5,patch6=6,patch7=7,patch8=8,patch9=9,transparency=TRANSPARENT,txtid=cherry_sign
|
||||
[1.19.4-]block:id=cherry_wall_sign,patch0=0,patch1=1,patch2=2,patch3=3,patch4=4,patch5=5,transparency=TRANSPARENT,txtid=cherry_sign
|
||||
[1.19.4-]block:id=%suspicious_sand,state=dusted:0,patch0=0:suspicious_sand_0,patch1=0:suspicious_sand_0,patch2=0:suspicious_sand_0,patch3=0:suspicious_sand_0,patch4=0:suspicious_sand_0,patch5=0:suspicious_sand_0,stdrot=true
|
||||
[1.19.4-]block:id=%suspicious_sand,state=dusted:1,patch0=0:suspicious_sand_1,patch1=0:suspicious_sand_1,patch2=0:suspicious_sand_1,patch3=0:suspicious_sand_1,patch4=0:suspicious_sand_1,patch5=0:suspicious_sand_1,stdrot=true
|
||||
[1.19.4-]block:id=%suspicious_sand,state=dusted:2,patch0=0:suspicious_sand_2,patch1=0:suspicious_sand_2,patch2=0:suspicious_sand_2,patch3=0:suspicious_sand_2,patch4=0:suspicious_sand_2,patch5=0:suspicious_sand_2,stdrot=true
|
||||
[1.19.4-]block:id=%suspicious_sand,state=dusted:3,patch0=0:suspicious_sand_3,patch1=0:suspicious_sand_3,patch2=0:suspicious_sand_3,patch3=0:suspicious_sand_3,patch4=0:suspicious_sand_3,patch5=0:suspicious_sand_3,stdrot=true
|
||||
[1.19.4-]block:id=%torchflower,patch0=0:torchflower,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%potted_torchflower,patch0=0:flower_pot,patch1=0:dirt,patch2=0:torchflower,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%torchflower_crop,state=age:0,patch0=0:torchflower_crop_stage0,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%torchflower_crop,state=age:1,patch0=0:torchflower_crop_stage1,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%torchflower_crop,state=age:2,patch0=0:torchflower_crop_stage2,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%pink_petals,state=facing:north/flower_amount:1,patch0=0:pink_petals,patch1=2000:pink_petals_stem,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%pink_petals,state=facing:north/flower_amount:2,patch0=0:pink_petals,patch1=2000:pink_petals_stem,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%pink_petals,state=facing:north/flower_amount:3,patch0=0:pink_petals,patch1=2000:pink_petals_stem,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%pink_petals,state=facing:north/flower_amount:4,patch0=0:pink_petals,patch1=2000:pink_petals_stem,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%pink_petals,state=facing:south/flower_amount:1,patch0=0:pink_petals,patch1=2000:pink_petals_stem,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%pink_petals,state=facing:south/flower_amount:2,patch0=0:pink_petals,patch1=2000:pink_petals_stem,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%pink_petals,state=facing:south/flower_amount:3,patch0=0:pink_petals,patch1=2000:pink_petals_stem,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%pink_petals,state=facing:south/flower_amount:4,patch0=0:pink_petals,patch1=2000:pink_petals_stem,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%pink_petals,state=facing:west/flower_amount:1,patch0=0:pink_petals,patch1=2000:pink_petals_stem,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%pink_petals,state=facing:west/flower_amount:2,patch0=0:pink_petals,patch1=2000:pink_petals_stem,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%pink_petals,state=facing:west/flower_amount:3,patch0=0:pink_petals,patch1=2000:pink_petals_stem,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%pink_petals,state=facing:west/flower_amount:4,patch0=0:pink_petals,patch1=2000:pink_petals_stem,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%pink_petals,state=facing:east/flower_amount:1,patch0=0:pink_petals,patch1=2000:pink_petals_stem,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%pink_petals,state=facing:east/flower_amount:2,patch0=0:pink_petals,patch1=2000:pink_petals_stem,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%pink_petals,state=facing:east/flower_amount:3,patch0=0:pink_petals,patch1=2000:pink_petals_stem,transparency=TRANSPARENT,stdrot=true
|
||||
[1.19.4-]block:id=%pink_petals,state=facing:east/flower_amount:4,patch0=0:pink_petals,patch1=2000:pink_petals_stem,transparency=TRANSPARENT,stdrot=true
|
||||
|
||||
# 1.20
|
||||
[1.20-]texture:id=pitcher_crop_side,filename=assets/minecraft/textures/block/pitcher_crop_side.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=pitcher_crop_bottom,filename=assets/minecraft/textures/block/pitcher_crop_bottom.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=pitcher_crop_top,filename=assets/minecraft/textures/block/pitcher_crop_top.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=pitcher_crop_bottom_stage_1,filename=assets/minecraft/textures/block/pitcher_crop_bottom_stage_1.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=pitcher_crop_bottom_stage_2,filename=assets/minecraft/textures/block/pitcher_crop_bottom_stage_2.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=pitcher_crop_top_stage_3,filename=assets/minecraft/textures/block/pitcher_crop_top_stage_3.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=pitcher_crop_bottom_stage_3,filename=assets/minecraft/textures/block/pitcher_crop_bottom_stage_3.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=pitcher_crop_top_stage_4,filename=assets/minecraft/textures/block/pitcher_crop_top_stage_4.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=pitcher_crop_bottom_stage_4,filename=assets/minecraft/textures/block/pitcher_crop_bottom_stage_4.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_not_cracked_south,filename=assets/minecraft/textures/block/sniffer_egg_not_cracked_south.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_not_cracked_bottom,filename=assets/minecraft/textures/block/sniffer_egg_not_cracked_bottom.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_not_cracked_east,filename=assets/minecraft/textures/block/sniffer_egg_not_cracked_east.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_not_cracked_west,filename=assets/minecraft/textures/block/sniffer_egg_not_cracked_west.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_not_cracked_north,filename=assets/minecraft/textures/block/sniffer_egg_not_cracked_north.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_not_cracked_top,filename=assets/minecraft/textures/block/sniffer_egg_not_cracked_top.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_slightly_cracked_south,filename=assets/minecraft/textures/block/sniffer_egg_slightly_cracked_south.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_slightly_cracked_bottom,filename=assets/minecraft/textures/block/sniffer_egg_slightly_cracked_bottom.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_slightly_cracked_east,filename=assets/minecraft/textures/block/sniffer_egg_slightly_cracked_east.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_slightly_cracked_west,filename=assets/minecraft/textures/block/sniffer_egg_slightly_cracked_west.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_slightly_cracked_north,filename=assets/minecraft/textures/block/sniffer_egg_slightly_cracked_north.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_slightly_cracked_top,filename=assets/minecraft/textures/block/sniffer_egg_slightly_cracked_top.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_very_cracked_south,filename=assets/minecraft/textures/block/sniffer_egg_very_cracked_south.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_very_cracked_bottom,filename=assets/minecraft/textures/block/sniffer_egg_very_cracked_bottom.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_very_cracked_east,filename=assets/minecraft/textures/block/sniffer_egg_very_cracked_east.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_very_cracked_west,filename=assets/minecraft/textures/block/sniffer_egg_very_cracked_west.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_very_cracked_north,filename=assets/minecraft/textures/block/sniffer_egg_very_cracked_north.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=sniffer_egg_very_cracked_top,filename=assets/minecraft/textures/block/sniffer_egg_very_cracked_top.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=calibrated_sculk_sensor_input_side,filename=assets/minecraft/textures/block/calibrated_sculk_sensor_input_side.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=calibrated_sculk_sensor_top,filename=assets/minecraft/textures/block/calibrated_sculk_sensor_top.png,xcount=1,ycount=1
|
||||
[1.20-]texture:id=calibrated_sculk_sensor_amethyst,filename=assets/minecraft/textures/block/calibrated_sculk_sensor_amethyst.png,xcount=1,ycount=1
|
||||
[1.20-]block:id=%pitcher_crop,state=age:0/half:upper,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%pitcher_crop,state=age:0/half:lower,patch0=0:pitcher_crop_side,patch1=0:pitcher_crop_bottom,patch2=0:pitcher_crop_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%pitcher_crop,state=age:1/half:upper,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%pitcher_crop,state=age:1/half:lower,patch0=0:pitcher_crop_bottom_stage_1,patch1=0:pitcher_crop_side,patch2=0:pitcher_crop_bottom,patch3=0:pitcher_crop_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%pitcher_crop,state=age:2/half:upper,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%pitcher_crop,state=age:2/half:lower,patch0=0:pitcher_crop_bottom_stage_2,patch1=0:pitcher_crop_side,patch2=0:pitcher_crop_bottom,patch3=0:pitcher_crop_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%pitcher_crop,state=age:3/half:upper,patch0=0:pitcher_crop_top_stage_3,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%pitcher_crop,state=age:3/half:lower,patch0=0:pitcher_crop_bottom_stage_3,patch1=0:pitcher_crop_side,patch2=0:pitcher_crop_bottom,patch3=0:pitcher_crop_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%pitcher_crop,state=age:4/half:upper,patch0=0:pitcher_crop_top_stage_4,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%pitcher_crop,state=age:4/half:lower,patch0=0:pitcher_crop_bottom_stage_4,patch1=0:pitcher_crop_side,patch2=0:pitcher_crop_bottom,patch3=0:pitcher_crop_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%pitcher_plant,state=half:upper,patch0=0:pitcher_crop_top_stage_4,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%pitcher_plant,state=half:lower,patch0=0:pitcher_crop_bottom_stage_4,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%sniffer_egg,state=hatch:0,patch0=0:sniffer_egg_not_cracked_south,patch1=0:sniffer_egg_not_cracked_bottom,patch2=0:sniffer_egg_not_cracked_east,patch3=0:sniffer_egg_not_cracked_west,patch4=0:sniffer_egg_not_cracked_north,patch5=0:sniffer_egg_not_cracked_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%sniffer_egg,state=hatch:1,patch0=0:sniffer_egg_slightly_cracked_south,patch1=0:sniffer_egg_slightly_cracked_bottom,patch2=0:sniffer_egg_slightly_cracked_east,patch3=0:sniffer_egg_slightly_cracked_west,patch4=0:sniffer_egg_slightly_cracked_north,patch5=0:sniffer_egg_slightly_cracked_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%sniffer_egg,state=hatch:2,patch0=0:sniffer_egg_very_cracked_south,patch1=0:sniffer_egg_very_cracked_bottom,patch2=0:sniffer_egg_very_cracked_east,patch3=0:sniffer_egg_very_cracked_west,patch4=0:sniffer_egg_very_cracked_north,patch5=0:sniffer_egg_very_cracked_top,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%calibrated_sculk_sensor,state=facing:north/sculk_sensor_phase:inactive,patch0=0:calibrated_sculk_sensor_input_side,patch1=0:sculk_sensor_bottom,patch2=0:sculk_sensor_side,patch3=0:calibrated_sculk_sensor_top,patch4=0:sculk_sensor_tendril_inactive,patch5=0:calibrated_sculk_sensor_amethyst,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%calibrated_sculk_sensor,state=facing:north/sculk_sensor_phase:active,patch0=0:calibrated_sculk_sensor_input_side,patch1=0:sculk_sensor_bottom,patch2=0:sculk_sensor_side,patch3=0:calibrated_sculk_sensor_top,patch4=0:sculk_sensor_tendril_active,patch5=0:calibrated_sculk_sensor_amethyst,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%calibrated_sculk_sensor,state=facing:north/sculk_sensor_phase:cooldown,patch0=0:calibrated_sculk_sensor_input_side,patch1=0:sculk_sensor_bottom,patch2=0:sculk_sensor_side,patch3=0:calibrated_sculk_sensor_top,patch4=0:sculk_sensor_tendril_active,patch5=0:calibrated_sculk_sensor_amethyst,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%calibrated_sculk_sensor,state=facing:south/sculk_sensor_phase:inactive,patch0=0:calibrated_sculk_sensor_input_side,patch1=0:sculk_sensor_bottom,patch2=0:sculk_sensor_side,patch3=0:calibrated_sculk_sensor_top,patch4=0:sculk_sensor_tendril_inactive,patch5=0:calibrated_sculk_sensor_amethyst,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%calibrated_sculk_sensor,state=facing:south/sculk_sensor_phase:active,patch0=0:calibrated_sculk_sensor_input_side,patch1=0:sculk_sensor_bottom,patch2=0:sculk_sensor_side,patch3=0:calibrated_sculk_sensor_top,patch4=0:sculk_sensor_tendril_active,patch5=0:calibrated_sculk_sensor_amethyst,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%calibrated_sculk_sensor,state=facing:south/sculk_sensor_phase:cooldown,patch0=0:calibrated_sculk_sensor_input_side,patch1=0:sculk_sensor_bottom,patch2=0:sculk_sensor_side,patch3=0:calibrated_sculk_sensor_top,patch4=0:sculk_sensor_tendril_active,patch5=0:calibrated_sculk_sensor_amethyst,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%calibrated_sculk_sensor,state=facing:west/sculk_sensor_phase:inactive,patch0=0:calibrated_sculk_sensor_input_side,patch1=0:sculk_sensor_bottom,patch2=0:sculk_sensor_side,patch3=0:calibrated_sculk_sensor_top,patch4=0:sculk_sensor_tendril_inactive,patch5=0:calibrated_sculk_sensor_amethyst,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%calibrated_sculk_sensor,state=facing:west/sculk_sensor_phase:active,patch0=0:calibrated_sculk_sensor_input_side,patch1=0:sculk_sensor_bottom,patch2=0:sculk_sensor_side,patch3=0:calibrated_sculk_sensor_top,patch4=0:sculk_sensor_tendril_active,patch5=0:calibrated_sculk_sensor_amethyst,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%calibrated_sculk_sensor,state=facing:west/sculk_sensor_phase:cooldown,patch0=0:calibrated_sculk_sensor_input_side,patch1=0:sculk_sensor_bottom,patch2=0:sculk_sensor_side,patch3=0:calibrated_sculk_sensor_top,patch4=0:sculk_sensor_tendril_active,patch5=0:calibrated_sculk_sensor_amethyst,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%calibrated_sculk_sensor,state=facing:east/sculk_sensor_phase:inactive,patch0=0:calibrated_sculk_sensor_input_side,patch1=0:sculk_sensor_bottom,patch2=0:sculk_sensor_side,patch3=0:calibrated_sculk_sensor_top,patch4=0:sculk_sensor_tendril_inactive,patch5=0:calibrated_sculk_sensor_amethyst,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%calibrated_sculk_sensor,state=facing:east/sculk_sensor_phase:active,patch0=0:calibrated_sculk_sensor_input_side,patch1=0:sculk_sensor_bottom,patch2=0:sculk_sensor_side,patch3=0:calibrated_sculk_sensor_top,patch4=0:sculk_sensor_tendril_active,patch5=0:calibrated_sculk_sensor_amethyst,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20-]block:id=%calibrated_sculk_sensor,state=facing:east/sculk_sensor_phase:cooldown,patch0=0:calibrated_sculk_sensor_input_side,patch1=0:sculk_sensor_bottom,patch2=0:sculk_sensor_side,patch3=0:calibrated_sculk_sensor_top,patch4=0:sculk_sensor_tendril_active,patch5=0:calibrated_sculk_sensor_amethyst,transparency=SEMITRANSPARENT,stdrot=true
|
||||
|
||||
# 1.20.3
|
||||
[1.20.3-]texture:id=suspicious_gravel_0,filename=assets/minecraft/textures/block/suspicious_gravel_0.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=suspicious_gravel_1,filename=assets/minecraft/textures/block/suspicious_gravel_1.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=suspicious_gravel_2,filename=assets/minecraft/textures/block/suspicious_gravel_2.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=suspicious_gravel_3,filename=assets/minecraft/textures/block/suspicious_gravel_3.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=tuff,filename=assets/minecraft/textures/block/tuff.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=polished_tuff,filename=assets/minecraft/textures/block/polished_tuff.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=chiseled_tuff,filename=assets/minecraft/textures/block/chiseled_tuff.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=chiseled_tuff_top,filename=assets/minecraft/textures/block/chiseled_tuff_top.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=tuff_bricks,filename=assets/minecraft/textures/block/tuff_bricks.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=chiseled_tuff_bricks,filename=assets/minecraft/textures/block/chiseled_tuff_bricks.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=chiseled_tuff_bricks_top,filename=assets/minecraft/textures/block/chiseled_tuff_bricks_top.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=oxidized_chiseled_copper,filename=assets/minecraft/textures/block/oxidized_chiseled_copper.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=weathered_chiseled_copper,filename=assets/minecraft/textures/block/weathered_chiseled_copper.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=exposed_chiseled_copper,filename=assets/minecraft/textures/block/exposed_chiseled_copper.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=chiseled_copper,filename=assets/minecraft/textures/block/chiseled_copper.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=copper_door_top,filename=assets/minecraft/textures/block/copper_door_top.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=copper_door_bottom,filename=assets/minecraft/textures/block/copper_door_bottom.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=exposed_copper_door_top,filename=assets/minecraft/textures/block/exposed_copper_door_top.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=exposed_copper_door_bottom,filename=assets/minecraft/textures/block/exposed_copper_door_bottom.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=oxidized_copper_door_top,filename=assets/minecraft/textures/block/oxidized_copper_door_top.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=oxidized_copper_door_bottom,filename=assets/minecraft/textures/block/oxidized_copper_door_bottom.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=weathered_copper_door_top,filename=assets/minecraft/textures/block/weathered_copper_door_top.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=weathered_copper_door_bottom,filename=assets/minecraft/textures/block/weathered_copper_door_bottom.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=copper_trapdoor,filename=assets/minecraft/textures/block/copper_trapdoor.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=exposed_copper_trapdoor,filename=assets/minecraft/textures/block/exposed_copper_trapdoor.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=oxidized_copper_trapdoor,filename=assets/minecraft/textures/block/oxidized_copper_trapdoor.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=weathered_copper_trapdoor,filename=assets/minecraft/textures/block/weathered_copper_trapdoor.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=copper_grate,filename=assets/minecraft/textures/block/copper_grate.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=exposed_copper_grate,filename=assets/minecraft/textures/block/exposed_copper_grate.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=weathered_copper_grate,filename=assets/minecraft/textures/block/weathered_copper_grate.png,xcount=1,ycount=1
|
||||
[1.20.3-]texture:id=oxidized_copper_grate,filename=assets/minecraft/textures/block/oxidized_copper_grate.png,xcount=1,ycount=1
|
||||
[1.20.3-]block:id=%suspicious_gravel,state=dusted:0,patch0=0:suspicious_gravel_0,patch1=0:suspicious_gravel_0,patch2=0:suspicious_gravel_0,patch3=0:suspicious_gravel_0,patch4=0:suspicious_gravel_0,patch5=0:suspicious_gravel_0,stdrot=true
|
||||
[1.20.3-]block:id=%suspicious_gravel,state=dusted:1,patch0=0:suspicious_gravel_1,patch1=0:suspicious_gravel_1,patch2=0:suspicious_gravel_1,patch3=0:suspicious_gravel_1,patch4=0:suspicious_gravel_1,patch5=0:suspicious_gravel_1,stdrot=true
|
||||
[1.20.3-]block:id=%suspicious_gravel,state=dusted:2,patch0=0:suspicious_gravel_2,patch1=0:suspicious_gravel_2,patch2=0:suspicious_gravel_2,patch3=0:suspicious_gravel_2,patch4=0:suspicious_gravel_2,patch5=0:suspicious_gravel_2,stdrot=true
|
||||
[1.20.3-]block:id=%suspicious_gravel,state=dusted:3,patch0=0:suspicious_gravel_3,patch1=0:suspicious_gravel_3,patch2=0:suspicious_gravel_3,patch3=0:suspicious_gravel_3,patch4=0:suspicious_gravel_3,patch5=0:suspicious_gravel_3,stdrot=true
|
||||
[1.20.3-]block:id=%tuff,patch0-5=0:tuff,stdrot=true
|
||||
[1.20.3-]block:id=%tuff_slab,state=type:top,patch0=0:tuff,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%tuff_slab,state=type:bottom,patch0=0:tuff,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%tuff_slab,state=type:double,patch0-5=0:tuff,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%tuff_stairs,patch0-2=0:tuff,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%tuff_wall,patch0-2=0:tuff,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%polished_tuff,patch0-5=0:polished_tuff,stdrot=true
|
||||
[1.20.3-]block:id=%polished_tuff_slab,state=type:top,patch0=0:polished_tuff,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%polished_tuff_slab,state=type:bottom,patch0=0:polished_tuff,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%polished_tuff_slab,state=type:double,patch0-5=0:polished_tuff,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%polished_tuff_stairs,patch0-2=0:polished_tuff,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%polished_tuff_wall,patch0-2=0:polished_tuff,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%chiseled_tuff,patch0=0:chiseled_tuff,patch1=0:chiseled_tuff_top,patch2=0:chiseled_tuff,patch3=0:chiseled_tuff,patch4=0:chiseled_tuff_top,patch5=0:chiseled_tuff,stdrot=true
|
||||
[1.20.3-]block:id=%tuff_bricks,patch0-5=0:tuff_bricks,stdrot=true
|
||||
[1.20.3-]block:id=%tuff_brick_slab,state=type:top,patch0=0:tuff_bricks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%tuff_brick_slab,state=type:bottom,patch0=0:tuff_bricks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%tuff_brick_slab,state=type:double,patch0-5=0:tuff_bricks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%tuff_brick_stairs,patch0-2=0:tuff_bricks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%tuff_brick_wall,patch0-2=0:tuff_bricks,transparency=SEMITRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%chiseled_tuff_bricks,patch0-5=0:chiseled_tuff_bricks,stdrot=true
|
||||
[1.20.3-]block:id=%oxidized_chiseled_copper,patch0-5=0:oxidized_chiseled_copper,stdrot=true
|
||||
[1.20.3-]block:id=%weathered_chiseled_copper,patch0-5=0:weathered_chiseled_copper,stdrot=true
|
||||
[1.20.3-]block:id=%exposed_chiseled_copper,patch0-5=0:exposed_chiseled_copper,stdrot=true
|
||||
[1.20.3-]block:id=%chiseled_copper,patch0-5=0:chiseled_copper,stdrot=true
|
||||
[1.20.3-]block:id=%waxed_oxidized_chiseled_copper,patch0-5=0:oxidized_chiseled_copper,stdrot=true
|
||||
[1.20.3-]block:id=%waxed_weathered_chiseled_copper,patch0-5=0:weathered_chiseled_copper,stdrot=true
|
||||
[1.20.3-]block:id=%waxed_exposed_chiseled_copper,patch0-5=0:exposed_chiseled_copper,stdrot=true
|
||||
[1.20.3-]block:id=%waxed_chiseled_copper,patch0-5=0:chiseled_copper,stdrot=true
|
||||
[1.20.3-]block:id=%copper_door,data=*,patch0=0:copper_door_top,patch1=0:copper_door_bottom,transparency=TRANSPARENT
|
||||
[1.20.3-]block:id=%exposed_copper_door,data=*,patch0=0:exposed_copper_door_top,patch1=0:exposed_copper_door_bottom,transparency=TRANSPARENT
|
||||
[1.20.3-]block:id=%oxidized_copper_door,data=*,patch0=0:oxidized_copper_door_top,patch1=0:oxidized_copper_door_bottom,transparency=TRANSPARENT
|
||||
[1.20.3-]block:id=%weathered_copper_door,data=*,patch0=0:weathered_copper_door_top,patch1=0:weathered_copper_door_bottom,transparency=TRANSPARENT
|
||||
[1.20.3-]block:id=%waxed_copper_door,data=*,patch0=0:copper_door_top,patch1=0:copper_door_bottom,transparency=TRANSPARENT
|
||||
[1.20.3-]block:id=%waxed_exposed_copper_door,data=*,patch0=0:exposed_copper_door_top,patch1=0:exposed_copper_door_bottom,transparency=TRANSPARENT
|
||||
[1.20.3-]block:id=%waxed_oxidized_copper_door,data=*,patch0=0:oxidized_copper_door_top,patch1=0:oxidized_copper_door_bottom,transparency=TRANSPARENT
|
||||
[1.20.3-]block:id=%waxed_weathered_copper_door,data=*,patch0=0:weathered_copper_door_top,patch1=0:weathered_copper_door_bottom,transparency=TRANSPARENT
|
||||
[1.20.3-]block:id=%copper_trapdoor,id=%waxed_copper_trapdoor,allfaces=0:copper_trapdoor,stdrot=true,transparency=TRANSPARENT
|
||||
[1.20.3-]block:id=%exposed_copper_trapdoor,id=%waxed_exposed_copper_trapdoor,allfaces=0:exposed_copper_trapdoor,stdrot=true,transparency=TRANSPARENT
|
||||
[1.20.3-]block:id=%oxidized_copper_trapdoor,id=%waxed_oxidized_copper_trapdoor,allfaces=0:oxidized_copper_trapdoor,stdrot=true,transparency=TRANSPARENT
|
||||
[1.20.3-]block:id=%weathered_copper_trapdoor,id=%waxed_weathered_copper_trapdoor,allfaces=0:weathered_copper_trapdoor,stdrot=true,transparency=TRANSPARENT
|
||||
[1.20.3-]block:id=%copper_grate,patch0-5=0:copper_grate,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%exposed_copper_grate,patch0-5=0:exposed_copper_grate,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%weathered_copper_grate,patch0-5=0:weathered_copper_grate,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%oxidized_copper_grate,patch0-5=0:oxidized_copper_grate,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%waxed_copper_grate,patch0-5=0:copper_grate,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%waxed_exposed_copper_grate,patch0-5=0:exposed_copper_grate,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%waxed_weathered_copper_grate,patch0-5=0:weathered_copper_grate,transparency=TRANSPARENT,stdrot=true
|
||||
[1.20.3-]block:id=%waxed_oxidized_copper_grate,patch0-5=0:oxidized_copper_grate,transparency=TRANSPARENT,stdrot=true
|
||||
|
|
Before Width: | Height: | Size: 252 B After Width: | Height: | Size: 219 B |
Before Width: | Height: | Size: 264 B After Width: | Height: | Size: 233 B |
Before Width: | Height: | Size: 249 B After Width: | Height: | Size: 210 B |
Before Width: | Height: | Size: 259 B After Width: | Height: | Size: 193 B |
Before Width: | Height: | Size: 301 B After Width: | Height: | Size: 243 B |
Before Width: | Height: | Size: 269 B After Width: | Height: | Size: 202 B |
Before Width: | Height: | Size: 232 B After Width: | Height: | Size: 204 B |
Before Width: | Height: | Size: 294 B After Width: | Height: | Size: 242 B |
Before Width: | Height: | Size: 295 B After Width: | Height: | Size: 243 B |
Before Width: | Height: | Size: 284 B After Width: | Height: | Size: 212 B |
Before Width: | Height: | Size: 249 B After Width: | Height: | Size: 215 B |
Before Width: | Height: | Size: 276 B After Width: | Height: | Size: 207 B |
Before Width: | Height: | Size: 298 B After Width: | Height: | Size: 222 B |
Before Width: | Height: | Size: 260 B After Width: | Height: | Size: 198 B |
Before Width: | Height: | Size: 236 B After Width: | Height: | Size: 170 B |
Before Width: | Height: | Size: 201 B After Width: | Height: | Size: 192 B |
Before Width: | Height: | Size: 146 B After Width: | Height: | Size: 144 B |
Before Width: | Height: | Size: 265 B After Width: | Height: | Size: 209 B |
Before Width: | Height: | Size: 287 B After Width: | Height: | Size: 248 B |
Before Width: | Height: | Size: 235 B After Width: | Height: | Size: 201 B |
Before Width: | Height: | Size: 251 B After Width: | Height: | Size: 184 B |
After Width: | Height: | Size: 219 B |
After Width: | Height: | Size: 166 B |
After Width: | Height: | Size: 244 B |
After Width: | Height: | Size: 253 B |
After Width: | Height: | Size: 249 B |
After Width: | Height: | Size: 214 B |
After Width: | Height: | Size: 153 B |
After Width: | Height: | Size: 153 B |
Before Width: | Height: | Size: 290 B After Width: | Height: | Size: 255 B |
After Width: | Height: | Size: 230 B |
After Width: | Height: | Size: 225 B |