Compare commits

...

45 Commits

Author SHA1 Message Date
Michael Primm b434f09035 Band-aid up Forge 1.12.2 build 2024-04-29 15:06:37 -05:00
Michael Primm e21198d279 Back to SNAPSHOT 2024-04-28 15:30:36 -05:00
Michael Primm 1d6346b580 Handle tile entity lookup in 1.20.5 2024-04-28 14:01:07 -05:00
Michael Primm e086930133 Update README 2024-04-26 23:12:08 -05:00
Michael Primm 27526e64e5 Migrate to Gradle 8.7, JDK 21 compiler 2024-04-26 22:51:32 -05:00
Michael Primm 21369ec485 Migrate to Gradle 8.7 2024-04-26 22:50:43 -05:00
Michael Primm 120889b500 Merge branch 'v3.0' of git@github-home:webbukkit/dynmap.git into v3.0 2024-04-26 20:54:54 -05:00
Michael Primm 669c75322a Start 1.20.5 code 2024-04-26 20:54:41 -05:00
mikeprimm ea24554033
Merge pull request #4056 from JurgenKuyper/patch-2
Update DynmapBlockState.java
2024-01-23 09:26:06 -06:00
JurgenKuyper b9144e3609
Update DynmapBlockState.java
also hide nether_quartz_ore if hideores is true
2024-01-22 21:11:43 +01:00
Michael Primm 9878719337 Drop older 1.19 Forge and Fabric builds 2023-12-23 15:03:35 -06:00
Michael Primm 6746631758 Back to SNAPSHOT 2023-12-23 14:54:30 -06:00
Michael Primm 23cd60ba0a Switch to beta-4 2023-12-23 09:57:55 -06:00
Michael Primm 328954b256 Handle bogus gamma correction on new GRAY texturepack images 2023-12-22 11:08:10 -06:00
Michael Primm 574a400ada Back to SNAPSHOT 2023-12-15 00:16:37 -06:00
Michael Primm 84ee4cdf0c Prep for 3.7-beta-3 2023-12-14 22:49:51 -06:00
Michael Primm dea6a55acd Add Fabric 1.20.4 build 2023-12-14 22:47:56 -06:00
Michael Primm 87993219bb Add 1.20.3, 1.20.4 blocks 2023-12-14 22:19:53 -06:00
Michael Primm 7cdd90768e Fix S3 PR for 1.12 build 2023-12-12 22:13:44 -06:00
mikeprimm b0e56d3e5a
Merge pull request #4030 from ChimneySwift/generic-s3
Allow generic S3 endpoints for alternative services
2023-12-12 22:02:03 -06:00
Michael Primm 20700c21b8 Fix broken spectator/invisible PR on 1.12 2023-12-12 22:00:23 -06:00
Michael Primm 85885ced0e Add spigot-1.20.4 initial support 2023-12-12 21:22:38 -06:00
mikeprimm 06fbcb8d3d
Merge pull request #4036 from ApliNi/v3.0
Fix SQLite database size keeps increasing
2023-12-12 17:58:59 -06:00
mikeprimm b181607e5a
Merge pull request #4015 from JurgenKuyper/v3.0
implemented hide if spectator
2023-12-01 14:42:45 -06:00
mikeprimm bb1438b3c4
Merge pull request #4023 from Spongecade/patch-1
Update Minecraft wiki link to new domain
2023-12-01 11:43:12 -06:00
ChimneySwift 1ba6dd4683 Bundle xml.bind as this is used by s3-lite 2023-11-17 13:21:35 +10:00
ChimneySwift d16fdc8275 Add override_endpoint setting to configuration files 2023-11-16 22:07:28 +10:00
ChimneySwift 914fc5a10c Allow for custom S3 endpoints 2023-11-16 21:56:35 +10:00
ChimneySwift a669d75de0 Update s3-lite client to 0.0.2-SNAPSHOT version 2023-11-16 21:19:16 +10:00
Jurgen bc0117ac5a implemented hideifspectator switch, fully functional 2023-10-08 11:56:41 +02:00
Spongecade 298b31cdc8
Update Minecraft wiki link to new domain
The Minecraft Fandom wiki has been forked to a new domain: minecraft.wiki. Learn more here: https://minecraft.wiki/w/Minecraft_Wiki:Moving_from_Fandom. This PR updates the old wiki link accordingly.
2023-10-05 16:19:08 -05:00
ApliNi 5244e74d47 PRAGMA auto_vacuum = FULL; 2023-10-03 18:31:51 +08:00
JurgenKuyper 0d15ee5a46
Merge branch 'webbukkit:v3.0' into v3.0 2023-10-01 10:44:26 +02:00
Michael Primm ca80758605 Back to SNAPSHOT 2023-09-28 00:37:31 -05:00
Michael Primm 96554717f1 Switch to 3.7-beta-2 2023-09-27 22:06:10 -05:00
Michael Primm c807861859 Restrict /dmarker file imports to {dynmap-directory}/import 2023-09-27 21:35:40 -05:00
Michael Primm 65cca049ac Fix running on spigot/paper 1.20, 1.20.1 2023-09-27 16:35:44 -05:00
JurgenKuyper 0ba3c8008f
Merge pull request #1 from webbukkit/v3.0
align repo
2023-09-27 22:21:33 +02:00
Jurgen 030a0e1d24 implemented hideifspectator switch, still need to test fabric/forge 2023-09-27 22:22:00 +02:00
Michael Primm 79f354b111 Switch to SecureRandom for web auth token (avoid hugely unlikely
compromise during login register process...).
2023-09-27 12:25:14 -05:00
Michael Primm 92b9016c65 Merge branch 'v3.0' of git@github-home:webbukkit/dynmap.git into v3.0 2023-09-23 18:08:33 -05:00
Michael Primm e6a18f1029 Back to SNAPSHOT 2023-09-23 18:08:23 -05:00
mikeprimm ff87b9dd3e
Merge pull request #4017 from MuriloGhignatti/patch-1
Proper error catching (regarding Quilt)
2023-09-23 18:07:13 -05:00
Murilo Henrique Ghignatti b97d5045b6
Proper error catching (regarding Quilt)
When the mod is loaded by quilt and you try to get the path using this method an IllegalArgumentException is thrown, I think that quilt is not loading the mod as a file so this is why you are getting this error.
2023-09-13 21:53:17 -03:00
Jurgen c093a95bc0 implemented hide if spectator 2023-09-03 12:37:58 +02:00
1071 changed files with 2353 additions and 15229 deletions

View File

@ -19,11 +19,13 @@ dependencies {
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 {
@ -46,7 +48,7 @@ processResources {
}
jar {
classifier = 'unshaded'
archiveClassifier = 'unshaded'
}
shadowJar {
@ -58,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/**")
@ -75,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 {

View File

@ -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());

View File

@ -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;
@ -224,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;
}
@ -428,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")) {

View File

@ -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,7 +26,7 @@ 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;

View File

@ -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

View File

@ -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),

View File

@ -1273,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;
}

View File

@ -2176,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);
@ -2184,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) {
@ -3201,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) {
@ -3214,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;
@ -3261,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;

View File

@ -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;
@ -139,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) {
@ -221,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;
@ -248,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 += '/';
}
@ -518,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) {
@ -571,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) {
@ -734,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;
@ -763,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) {

View File

@ -533,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;

View File

@ -856,7 +856,13 @@ modellist:id=%iron_bars,state=west:false/east:false/south:false/north:false,box=
# Fern
# Dead shrub
# Tall grass
patchblock:id=fern,id=grass,id=cobweb,id=tall_grass,id=dead_bush,id=sugar_cane,patch0=VertX1Z0ToX0Z1,patch1=VertX1Z0ToX0Z1@90
patchblock:id=fern,patch0=VertX1Z0ToX0Z1,patch1=VertX1Z0ToX0Z1@90
[-1.20.2]patchblock:id=grass,patch0=VertX1Z0ToX0Z1,patch1=VertX1Z0ToX0Z1@90
[1.20.3-]patchblock:id=short_grass,patch0=VertX1Z0ToX0Z1,patch1=VertX1Z0ToX0Z1@90
patchblock:id=cobweb,patch0=VertX1Z0ToX0Z1,patch1=VertX1Z0ToX0Z1@90
patchblock:id=tall_grass,patch0=VertX1Z0ToX0Z1,patch1=VertX1Z0ToX0Z1@90
patchblock:id=dead_bush,patch0=VertX1Z0ToX0Z1,patch1=VertX1Z0ToX0Z1@90
patchblock:id=sugar_cane,patch0=VertX1Z0ToX0Z1,patch1=VertX1Z0ToX0Z1@90
# Seagrass
# Tall seagrass
@ -3435,3 +3441,25 @@ modellist:id=%dropper,state=facing:down,box=0.000000/0.000000/0.000000:16.000000
[1.20-]modellist:id=%calibrated_sculk_sensor,state=facing:east/sculk_sensor_phase:inactive,box=0.000000/0.000000/0.000000:16.000000/8.000000/16.000000:n/2/0.000000/8.000000/16.000000/16.000000:w/2/0.000000/8.000000/16.000000/16.000000:s/0/0.000000/8.000000/16.000000/16.000000:d/1/0.000000/0.000000/16.000000/16.000000:e/2/0.000000/8.000000/16.000000/16.000000:u/3/0.000000/0.000000/16.000000/16.000000:R/0/90/0,box=-1.000000/8.000000/3.000000:7.000000/16.000000/3.000000/0.000000/45.000000/0.000000/3.000000/12.000000/3.000000:n/4/4.000000/8.000000/12.000000/16.000000:s/4/12.000000/8.000000/4.000000/16.000000:R/0/90/0,box=9.000000/8.000000/3.000000:17.000000/16.000000/3.000000/0.000000/-45.000000/0.000000/13.000000/12.000000/3.000000:n/4/12.000000/8.000000/4.000000/16.000000:s/4/4.000000/8.000000/12.000000/16.000000:R/0/90/0,box=9.000000/8.000000/13.000000:17.000000/16.000000/13.000000/0.000000/45.000000/0.000000/13.000000/12.000000/13.000000:n/4/12.000000/8.000000/4.000000/16.000000:s/4/4.000000/8.000000/12.000000/16.000000:R/0/90/0,box=-1.000000/8.000000/13.000000:7.000000/16.000000/13.000000/0.000000/-45.000000/0.000000/3.000000/12.000000/13.000000:n/4/4.000000/8.000000/12.000000/16.000000:s/4/12.000000/8.000000/4.000000/16.000000:R/0/90/0,box=8.000000/8.000000/0.000000/false:8.000000/20.000000/16.000000/0.000000/45.000000/0.000000/8.000000/9.000000/8.000000:w/5/0.000000/4.000000/16.000000/16.000000:e/5/0.000000/4.000000/16.000000/16.000000:R/0/90/0,box=0.000000/8.000000/8.000000/false:16.000000/20.000000/8.000000/0.000000/45.000000/0.000000/8.000000/9.000000/8.000000:n/5/0.000000/4.000000/16.000000/16.000000:s/5/0.000000/4.000000/16.000000/16.000000:R/0/90/0
[1.20-]modellist:id=%calibrated_sculk_sensor,state=facing:east/sculk_sensor_phase:active,box=0.000000/0.000000/0.000000:16.000000/8.000000/16.000000:n/2/0.000000/8.000000/16.000000/16.000000:w/2/0.000000/8.000000/16.000000/16.000000:s/0/0.000000/8.000000/16.000000/16.000000:d/1/0.000000/0.000000/16.000000/16.000000:e/2/0.000000/8.000000/16.000000/16.000000:u/3/0.000000/0.000000/16.000000/16.000000:R/0/90/0,box=-1.000000/8.000000/3.000000:7.000000/16.000000/3.000000/0.000000/45.000000/0.000000/3.000000/12.000000/3.000000:n/4/4.000000/8.000000/12.000000/16.000000:s/4/12.000000/8.000000/4.000000/16.000000:R/0/90/0,box=9.000000/8.000000/3.000000:17.000000/16.000000/3.000000/0.000000/-45.000000/0.000000/13.000000/12.000000/3.000000:n/4/12.000000/8.000000/4.000000/16.000000:s/4/4.000000/8.000000/12.000000/16.000000:R/0/90/0,box=9.000000/8.000000/13.000000:17.000000/16.000000/13.000000/0.000000/45.000000/0.000000/13.000000/12.000000/13.000000:n/4/12.000000/8.000000/4.000000/16.000000:s/4/4.000000/8.000000/12.000000/16.000000:R/0/90/0,box=-1.000000/8.000000/13.000000:7.000000/16.000000/13.000000/0.000000/-45.000000/0.000000/3.000000/12.000000/13.000000:n/4/4.000000/8.000000/12.000000/16.000000:s/4/12.000000/8.000000/4.000000/16.000000:R/0/90/0,box=8.000000/8.000000/0.000000/false:8.000000/20.000000/16.000000/0.000000/45.000000/0.000000/8.000000/9.000000/8.000000:w/5/0.000000/4.000000/16.000000/16.000000:e/5/0.000000/4.000000/16.000000/16.000000:R/0/90/0,box=0.000000/8.000000/8.000000/false:16.000000/20.000000/8.000000/0.000000/45.000000/0.000000/8.000000/9.000000/8.000000:n/5/0.000000/4.000000/16.000000/16.000000:s/5/0.000000/4.000000/16.000000/16.000000:R/0/90/0
[1.20-]modellist:id=%calibrated_sculk_sensor,state=facing:east/sculk_sensor_phase:cooldown,box=0.000000/0.000000/0.000000:16.000000/8.000000/16.000000:n/2/0.000000/8.000000/16.000000/16.000000:w/2/0.000000/8.000000/16.000000/16.000000:s/0/0.000000/8.000000/16.000000/16.000000:d/1/0.000000/0.000000/16.000000/16.000000:e/2/0.000000/8.000000/16.000000/16.000000:u/3/0.000000/0.000000/16.000000/16.000000:R/0/90/0,box=-1.000000/8.000000/3.000000:7.000000/16.000000/3.000000/0.000000/45.000000/0.000000/3.000000/12.000000/3.000000:n/4/4.000000/8.000000/12.000000/16.000000:s/4/12.000000/8.000000/4.000000/16.000000:R/0/90/0,box=9.000000/8.000000/3.000000:17.000000/16.000000/3.000000/0.000000/-45.000000/0.000000/13.000000/12.000000/3.000000:n/4/12.000000/8.000000/4.000000/16.000000:s/4/4.000000/8.000000/12.000000/16.000000:R/0/90/0,box=9.000000/8.000000/13.000000:17.000000/16.000000/13.000000/0.000000/45.000000/0.000000/13.000000/12.000000/13.000000:n/4/12.000000/8.000000/4.000000/16.000000:s/4/4.000000/8.000000/12.000000/16.000000:R/0/90/0,box=-1.000000/8.000000/13.000000:7.000000/16.000000/13.000000/0.000000/-45.000000/0.000000/3.000000/12.000000/13.000000:n/4/4.000000/8.000000/12.000000/16.000000:s/4/12.000000/8.000000/4.000000/16.000000:R/0/90/0,box=8.000000/8.000000/0.000000/false:8.000000/20.000000/16.000000/0.000000/45.000000/0.000000/8.000000/9.000000/8.000000:w/5/0.000000/4.000000/16.000000/16.000000:e/5/0.000000/4.000000/16.000000/16.000000:R/0/90/0,box=0.000000/8.000000/8.000000/false:16.000000/20.000000/8.000000/0.000000/45.000000/0.000000/8.000000/9.000000/8.000000:n/5/0.000000/4.000000/16.000000/16.000000:s/5/0.000000/4.000000/16.000000/16.000000:R/0/90/0
# 1.20.3
[1.20.3-]modellist:id=%tuff_slab,state=type:top,box=0.000000/8.000000/0.000000:16.000000/16.000000/16.000000:n/0/0.000000/0.000000/16.000000/8.000000:w/0/0.000000/0.000000/16.000000/8.000000:e/0/0.000000/0.000000/16.000000/8.000000:s/0/0.000000/0.000000/16.000000/8.000000:u/0/0.000000/0.000000/16.000000/16.000000:d/0/0.000000/0.000000/16.000000/16.000000
[1.20.3-]modellist:id=%tuff_slab,state=type:bottom,box=0.000000/0.000000/0.000000:16.000000/8.000000/16.000000:n/0/0.000000/8.000000/16.000000/16.000000:w/0/0.000000/8.000000/16.000000/16.000000:e/0/0.000000/8.000000/16.000000/16.000000:s/0/0.000000/8.000000/16.000000/16.000000:u/0/0.000000/0.000000/16.000000/16.000000:d/0/0.000000/0.000000/16.000000/16.000000
[1.20.3-]customblock:id=%tuff_stairs,class=org.dynmap.hdmap.renderer.StairStateRenderer
[1.20.3-]customblock:id=%tuff_wall,class=org.dynmap.hdmap.renderer.FenceWallBlockStateRenderer,type=tallwall
[1.20.3-]modellist:id=%polished_tuff_slab,state=type:top,box=0.000000/8.000000/0.000000:16.000000/16.000000/16.000000:n/0/0.000000/0.000000/16.000000/8.000000:w/0/0.000000/0.000000/16.000000/8.000000:e/0/0.000000/0.000000/16.000000/8.000000:s/0/0.000000/0.000000/16.000000/8.000000:u/0/0.000000/0.000000/16.000000/16.000000:d/0/0.000000/0.000000/16.000000/16.000000
[1.20.3-]modellist:id=%polished_tuff_slab,state=type:bottom,box=0.000000/0.000000/0.000000:16.000000/8.000000/16.000000:n/0/0.000000/8.000000/16.000000/16.000000:w/0/0.000000/8.000000/16.000000/16.000000:e/0/0.000000/8.000000/16.000000/16.000000:s/0/0.000000/8.000000/16.000000/16.000000:u/0/0.000000/0.000000/16.000000/16.000000:d/0/0.000000/0.000000/16.000000/16.000000
[1.20.3-]customblock:id=%polished_tuff_stairs,class=org.dynmap.hdmap.renderer.StairStateRenderer
[1.20.3-]customblock:id=%polished_tuff_wall,class=org.dynmap.hdmap.renderer.FenceWallBlockStateRenderer,type=tallwall
[1.20.3-]customblock:id=%polished_tuff_stairs,class=org.dynmap.hdmap.renderer.StairStateRenderer
[1.20.3-]customblock:id=%polished_tuff_wall,class=org.dynmap.hdmap.renderer.FenceWallBlockStateRenderer,type=tallwall
[1.20.3-]customblock:id=%copper_door,id=%exposed_copper_door,id=%oxidized_copper_door,id=%weathered_copper_door,class=org.dynmap.hdmap.renderer.DoorStateRenderer
[1.20.3-]customblock:id=%waxed_copper_door,id=%waxed_exposed_copper_door,id=%waxed_oxidized_copper_door,id=%waxed_weathered_copper_door,class=org.dynmap.hdmap.renderer.DoorStateRenderer
[1.20.3-]boxblock:id=%copper_trapdoor,id=%waxed_copper_trapdoor,id=%exposed_copper_trapdoor,id=%waxed_exposed_copper_trapdoor,id=%oxidized_copper_trapdoor,id=%waxed_oxidized_copper_trapdoor,id=%weathered_copper_trapdoor,id=%waxed_weathered_copper_trapdoor,data=12-15,data=28-31,data=44-47,data=60-63,ymax=0.1875
[1.20.3-]boxblock:id=%copper_trapdoor,id=%waxed_copper_trapdoor,id=%exposed_copper_trapdoor,id=%waxed_exposed_copper_trapdoor,id=%oxidized_copper_trapdoor,id=%waxed_oxidized_copper_trapdoor,id=%weathered_copper_trapdoor,id=%waxed_weathered_copper_trapdoor,data=32-35,data=40-44,xmin=0.8125
[1.20.3-]boxblock:id=%copper_trapdoor,id=%waxed_copper_trapdoor,id=%exposed_copper_trapdoor,id=%waxed_exposed_copper_trapdoor,id=%oxidized_copper_trapdoor,id=%waxed_oxidized_copper_trapdoor,id=%weathered_copper_trapdoor,id=%waxed_weathered_copper_trapdoor,data=48-51,data=56-59,xmax=0.1875
[1.20.3-]boxblock:id=%copper_trapdoor,id=%waxed_copper_trapdoor,id=%exposed_copper_trapdoor,id=%waxed_exposed_copper_trapdoor,id=%oxidized_copper_trapdoor,id=%waxed_oxidized_copper_trapdoor,id=%weathered_copper_trapdoor,id=%waxed_weathered_copper_trapdoor,data=16-19,data=24-27,zmax=0.1875
[1.20.3-]boxblock:id=%copper_trapdoor,id=%waxed_copper_trapdoor,id=%exposed_copper_trapdoor,id=%waxed_exposed_copper_trapdoor,id=%oxidized_copper_trapdoor,id=%waxed_oxidized_copper_trapdoor,id=%weathered_copper_trapdoor,id=%waxed_weathered_copper_trapdoor,data=0-3,data=8-11,zmin=0.8125
[1.20.3-]boxblock:id=%copper_trapdoor,id=%waxed_copper_trapdoor,id=%exposed_copper_trapdoor,id=%waxed_exposed_copper_trapdoor,id=%oxidized_copper_trapdoor,id=%waxed_oxidized_copper_trapdoor,id=%weathered_copper_trapdoor,id=%waxed_weathered_copper_trapdoor,data=4-7,data=20-23,data=36-39,data=52-55,ymin=0.8125

View File

@ -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
@ -4513,3 +4514,88 @@ block:id=%melon_stem,patch0=0:melon_stem,blockcolor=foliagebiome,transparency=TR
[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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 252 B

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 B

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 249 B

After

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 259 B

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 B

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 269 B

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 B

After

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 294 B

After

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 B

After

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 249 B

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 276 B

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 B

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 260 B

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 B

After

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 B

After

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 B

After

Width:  |  Height:  |  Size: 144 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 265 B

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 B

After

Width:  |  Height:  |  Size: 248 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 B

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 B

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 299 B

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 B

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 327 B

After

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 304 B

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

After

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 289 B

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 B

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 B

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 B

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 303 B

After

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 B

After

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 B

After

Width:  |  Height:  |  Size: 232 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 B

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 203 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 323 B

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 270 B

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 B

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 B

After

Width:  |  Height:  |  Size: 203 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 B

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 256 B

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 B

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 B

After

Width:  |  Height:  |  Size: 169 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 B

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 286 B

After

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 315 B

After

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 B

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 B

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 B

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 250 B

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 B

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 B

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 B

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 B

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 B

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 297 B

After

Width:  |  Height:  |  Size: 234 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 B

After

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 B

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 266 B

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 B

After

Width:  |  Height:  |  Size: 239 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 B

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 B

After

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 B

After

Width:  |  Height:  |  Size: 248 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 228 B

After

Width:  |  Height:  |  Size: 172 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 349 B

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 266 B

After

Width:  |  Height:  |  Size: 256 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 350 B

After

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 417 B

After

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 B

After

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 288 B

After

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 B

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 369 B

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 294 B

After

Width:  |  Height:  |  Size: 256 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 B

After

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 205 B

After

Width:  |  Height:  |  Size: 172 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 B

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 B

After

Width:  |  Height:  |  Size: 179 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 317 B

After

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 463 B

After

Width:  |  Height:  |  Size: 382 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 B

After

Width:  |  Height:  |  Size: 139 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 242 B

After

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 413 B

After

Width:  |  Height:  |  Size: 319 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 B

After

Width:  |  Height:  |  Size: 206 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 B

After

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 B

After

Width:  |  Height:  |  Size: 188 B

Some files were not shown because too many files have changed in this diff Show More