litematica command works and added schematic selection if more than 1 schematic is loaded

bug: if schematic origin isnt minimum corner schematic is built in the wrong place
This commit is contained in:
rycbar0 2022-09-30 17:53:31 +02:00
parent 4ba3c883e6
commit 025f6235f9
5 changed files with 29 additions and 28 deletions

View File

@ -58,7 +58,7 @@ public interface IBuilderProcess extends IBaritoneProcess {
void buildOpenSchematic(); void buildOpenSchematic();
void buildOpenLitematic(); void buildOpenLitematic(int i);
void pause(); void pause();

View File

@ -34,8 +34,18 @@ public class LitematicaCommand extends Command {
@Override @Override
public void execute(String label, IArgConsumer args) throws CommandException { public void execute(String label, IArgConsumer args) throws CommandException {
args.requireMax(0); int schematic = 0;
baritone.getBuilderProcess().buildOpenLitematic(); if(args.hasAny()) {
args.requireMax(1);
if (args.is(Integer.class)) {
schematic = args.getAs(Integer.class)-1;
}
}
try {
baritone.getBuilderProcess().buildOpenLitematic(schematic);
} catch (IndexOutOfBoundsException e) {
logDirect("Pleas provide a valid index.");
}
} }
@Override @Override
@ -51,10 +61,11 @@ public class LitematicaCommand extends Command {
@Override @Override
public List<String> getLongDesc() { public List<String> getLongDesc() {
return Arrays.asList( return Arrays.asList(
"Builds the schematic currently open in Litematica.", "Build a schematic currently open in Litematica.",
"", "",
"Usage:", "Usage:",
"> litematica" "> litematica",
"> litematica <#>"
); );
} }
} }

View File

@ -178,15 +178,12 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil
} }
@Override @Override
public void buildOpenLitematic() { public void buildOpenLitematic(int i) {
logDirect("start building open litematic");
if (LitematicaHelper.isLitematicaPresent()) { if (LitematicaHelper.isLitematicaPresent()) {
logDirect("litematica is present"); //TODO debug line remove
if (LitematicaHelper.hasLoadedSchematic()) { if (LitematicaHelper.hasLoadedSchematic()) {
logDirect("a schematic is present"); //TODO debug line remove String name = LitematicaHelper.getName(i);
String name = LitematicaHelper.getName(0); File schemFile = LitematicaHelper.getSchematicFile(i);
File schemFile = LitematicaHelper.getSchematicFile(0); Vec3i origin = LitematicaHelper.getOrigin(i);
Vec3i origin = LitematicaHelper.getOrigin(0);
boolean success = build(name, schemFile, origin); boolean success = build(name, schemFile, origin);
if (success) { if (success) {

View File

@ -19,12 +19,9 @@ package baritone.utils.schematic.litematica;
import fi.dy.masa.litematica.Litematica; import fi.dy.masa.litematica.Litematica;
import fi.dy.masa.litematica.data.DataManager; import fi.dy.masa.litematica.data.DataManager;
import fi.dy.masa.litematica.schematic.placement.SchematicPlacement;
import fi.dy.masa.litematica.schematic.placement.SchematicPlacementManager;
import net.minecraft.util.math.Vec3i; import net.minecraft.util.math.Vec3i;
import java.io.File; import java.io.File;
import java.util.List;
public final class LitematicaHelper { public final class LitematicaHelper {
public static boolean isLitematicaPresent() { public static boolean isLitematicaPresent() {
@ -35,27 +32,21 @@ public final class LitematicaHelper {
return false; return false;
} }
} }
//TODO compact into one line when debugging is done
public static boolean hasLoadedSchematic() { public static boolean hasLoadedSchematic() {
System.out.println("start checking for schematic"); //TODO debug line remove return DataManager.getSchematicPlacementManager().getAllSchematicsPlacements().size()>0;
SchematicPlacementManager a = DataManager.getSchematicPlacementManager();
System.out.println("manager aquired"); //TODO debug line remove
List< SchematicPlacement> b = a.getAllSchematicPlacements();
System.out.println("list aquired"); //TODO debug line remove
return b.size()>0;
} }
public static String getName(int i) { public static String getName(int i) {
return DataManager.getSchematicPlacementManager().getAllSchematicPlacements().get(i).getName(); return DataManager.getSchematicPlacementManager().getAllSchematicsPlacements().get(i).getName();
} }
public static Vec3i getOrigin(int i) { public static Vec3i getOrigin(int i) {
int x,y,z; int x,y,z;
x=DataManager.getSchematicPlacementManager().getAllSchematicPlacements().get(i).getOrigin().getX(); x=DataManager.getSchematicPlacementManager().getAllSchematicsPlacements().get(i).getOrigin().getX();
y=DataManager.getSchematicPlacementManager().getAllSchematicPlacements().get(i).getOrigin().getY(); y=DataManager.getSchematicPlacementManager().getAllSchematicsPlacements().get(i).getOrigin().getY();
z=DataManager.getSchematicPlacementManager().getAllSchematicPlacements().get(i).getOrigin().getZ(); z=DataManager.getSchematicPlacementManager().getAllSchematicsPlacements().get(i).getOrigin().getZ();
return new Vec3i(x,y,z); return new Vec3i(x,y,z);
} }
public static File getSchematicFile(int i) { public static File getSchematicFile(int i) {
return DataManager.getSchematicPlacementManager().getAllSchematicPlacements().get(i).getSchematicFile(); return DataManager.getSchematicPlacementManager().getAllSchematicsPlacements().get(i).getSchematicFile();
} }
} }

View File

@ -23,7 +23,9 @@ import java.util.List;
public class SchematicPlacementManager { public class SchematicPlacementManager {
private final List<SchematicPlacement> schematicPlacements = new ArrayList<>(); private final List<SchematicPlacement> schematicPlacements = new ArrayList<>();
public List<SchematicPlacement> getAllSchematicPlacements() { //in case of a java.lang.NoSuchMethodError try change the name of this method to getAllSchematicPlacements()
// there are inconsistencies in the litematica mod about the naming of this method
public List<SchematicPlacement> getAllSchematicsPlacements() {
return schematicPlacements; return schematicPlacements;
} }
} }