Skip to content

Commit

Permalink
fix: don't require WEOrigin / WEOffset in MCEdit schematics (#2936)
Browse files Browse the repository at this point in the history
  • Loading branch information
PierreSchwang authored Oct 6, 2024
1 parent 7192e14 commit be3ae1a
Showing 1 changed file with 18 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.NoSuchElementException;
import java.util.Set;

/**
Expand Down Expand Up @@ -126,18 +127,25 @@ public Clipboard read() throws IOException {
short height = schematicTag.getTag("Height", LinTagType.shortTag()).valueAsShort();
short length = schematicTag.getTag("Length", LinTagType.shortTag()).valueAsShort();

int originX = schematicTag.getTag("WEOriginX", LinTagType.intTag()).valueAsInt();
int originY = schematicTag.getTag("WEOriginY", LinTagType.intTag()).valueAsInt();
int originZ = schematicTag.getTag("WEOriginZ", LinTagType.intTag()).valueAsInt();
BlockVector3 min = BlockVector3.at(originX, originY, originZ);
try {
int originX = schematicTag.getTag("WEOriginX", LinTagType.intTag()).valueAsInt();
int originY = schematicTag.getTag("WEOriginY", LinTagType.intTag()).valueAsInt();
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
Expand Down

0 comments on commit be3ae1a

Please sign in to comment.