fix: don't require WEOrigin / WEOffset in MCEdit schematics (#2936)

This commit is contained in:
Pierre Maurice Schwang 2024-10-07 01:50:12 +02:00 committed by GitHub
parent 7192e147d0
commit be3ae1afd9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -57,6 +57,7 @@ import java.io.UncheckedIOException;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.NoSuchElementException;
import java.util.Set; import java.util.Set;
/** /**
@ -126,18 +127,25 @@ public class MCEditSchematicReader extends NBTSchematicReader {
short height = schematicTag.getTag("Height", LinTagType.shortTag()).valueAsShort(); short height = schematicTag.getTag("Height", LinTagType.shortTag()).valueAsShort();
short length = schematicTag.getTag("Length", LinTagType.shortTag()).valueAsShort(); short length = schematicTag.getTag("Length", LinTagType.shortTag()).valueAsShort();
int originX = schematicTag.getTag("WEOriginX", LinTagType.intTag()).valueAsInt(); try {
int originY = schematicTag.getTag("WEOriginY", LinTagType.intTag()).valueAsInt(); int originX = schematicTag.getTag("WEOriginX", LinTagType.intTag()).valueAsInt();
int originZ = schematicTag.getTag("WEOriginZ", LinTagType.intTag()).valueAsInt(); int originY = schematicTag.getTag("WEOriginY", LinTagType.intTag()).valueAsInt();
BlockVector3 min = BlockVector3.at(originX, originY, originZ); int originZ = schematicTag.getTag("WEOriginZ", LinTagType.intTag()).valueAsInt();
BlockVector3 min = BlockVector3.at(originX, originY, originZ);
int offsetX = schematicTag.getTag("WEOffsetX", LinTagType.intTag()).valueAsInt();
int offsetY = schematicTag.getTag("WEOffsetY", LinTagType.intTag()).valueAsInt();
int offsetZ = schematicTag.getTag("WEOffsetZ", LinTagType.intTag()).valueAsInt();
BlockVector3 offset = BlockVector3.at(offsetX, offsetY, offsetZ);
origin = min.subtract(offset);
region = new CuboidRegion(min, min.add(width, height, length).subtract(BlockVector3.ONE));
} catch (NoSuchElementException e) {
origin = BlockVector3.ZERO;
region = new CuboidRegion(origin, origin.add(width, height, length).subtract(BlockVector3.ONE));
}
int offsetX = schematicTag.getTag("WEOffsetX", LinTagType.intTag()).valueAsInt();
int offsetY = schematicTag.getTag("WEOffsetY", LinTagType.intTag()).valueAsInt();
int offsetZ = schematicTag.getTag("WEOffsetZ", LinTagType.intTag()).valueAsInt();
BlockVector3 offset = BlockVector3.at(offsetX, offsetY, offsetZ);
origin = min.subtract(offset);
region = new CuboidRegion(min, min.add(width, height, length).subtract(BlockVector3.ONE));
// ==================================================================== // ====================================================================
// Blocks // Blocks