getCorrectedOrigin returns the correct origin
This commit is contained in:
parent
144a534bb3
commit
d1930e03e1
@ -190,7 +190,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil
|
|||||||
try {
|
try {
|
||||||
LitematicaSchematic schematic1 = new LitematicaSchematic(CompressedStreamTools.readCompressed(Files.newInputStream(LitematicaHelper.getSchematicFile(i).toPath())),false);
|
LitematicaSchematic schematic1 = new LitematicaSchematic(CompressedStreamTools.readCompressed(Files.newInputStream(LitematicaHelper.getSchematicFile(i).toPath())),false);
|
||||||
LitematicaSchematic schematic2 = LitematicaHelper.blackMagicFuckery(schematic1, i);
|
LitematicaSchematic schematic2 = LitematicaHelper.blackMagicFuckery(schematic1, i);
|
||||||
Vec3i correctedOrigin = LitematicaHelper.getCorrectedOrigin(LitematicaHelper.getOrigin(i), schematic2.getMinimumCorner());
|
Vec3i correctedOrigin = LitematicaHelper.getCorrectedOrigin(schematic2, i);
|
||||||
|
|
||||||
build(name, schematic2, correctedOrigin);
|
build(name, schematic2, correctedOrigin);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
@ -57,8 +57,50 @@ public final class LitematicaHelper {
|
|||||||
public static Mirror getMirror(int i) {
|
public static Mirror getMirror(int i) {
|
||||||
return DataManager.getSchematicPlacementManager().getAllSchematicsPlacements().get(i).getMirror();
|
return DataManager.getSchematicPlacementManager().getAllSchematicsPlacements().get(i).getMirror();
|
||||||
}
|
}
|
||||||
public static Vec3i getCorrectedOrigin(Vec3i origin, Vec3i correction) {
|
public static Vec3i getCorrectedOrigin(LitematicaSchematic schematic, int i) {
|
||||||
return new Vec3i(origin.getX()+ correction.getX(), origin.getY() + correction.getY(), origin.getZ() + correction.getZ());
|
int x = LitematicaHelper.getOrigin(i).getX() + schematic.getMinimumCorner().getX();
|
||||||
|
int y = LitematicaHelper.getOrigin(i).getY() + schematic.getMinimumCorner().getY();
|
||||||
|
int z = LitematicaHelper.getOrigin(i).getZ() + schematic.getMinimumCorner().getZ();
|
||||||
|
Vec3i correctedOrigin;
|
||||||
|
Mirror mirror = LitematicaHelper.getMirror(i);
|
||||||
|
Rotation rotation = LitematicaHelper.getRotation(i);
|
||||||
|
|
||||||
|
//todo there has to be a better way to do this but i cant finde it atm
|
||||||
|
switch (mirror) {
|
||||||
|
case FRONT_BACK:
|
||||||
|
case LEFT_RIGHT:
|
||||||
|
switch ((mirror.ordinal()*2+rotation.ordinal())%4) {
|
||||||
|
case 1:
|
||||||
|
correctedOrigin = new Vec3i(x - schematic.getX()+1, y, z - schematic.getZ()+1);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
correctedOrigin = new Vec3i(x, y, z - schematic.getZ()+1);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
correctedOrigin = new Vec3i(x, y, z);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
correctedOrigin = new Vec3i(x - schematic.getX()+1, y, z);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
switch (rotation) {
|
||||||
|
case CLOCKWISE_90:
|
||||||
|
correctedOrigin = new Vec3i(x - schematic.getX()+1, y, z);
|
||||||
|
break;
|
||||||
|
case CLOCKWISE_180:
|
||||||
|
correctedOrigin = new Vec3i(x - schematic.getX()+1, y, z - schematic.getZ()+1);
|
||||||
|
break;
|
||||||
|
case COUNTERCLOCKWISE_90:
|
||||||
|
correctedOrigin = new Vec3i(x, y, z - schematic.getZ()+1);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
correctedOrigin = new Vec3i(x, y, z);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return correctedOrigin;
|
||||||
}
|
}
|
||||||
public static Vec3i doMirroring(Vec3i in, int sizeX, int sizeZ, Mirror mirror) {
|
public static Vec3i doMirroring(Vec3i in, int sizeX, int sizeZ, Mirror mirror) {
|
||||||
int xOut = in.getX();
|
int xOut = in.getX();
|
||||||
|
Loading…
Reference in New Issue
Block a user