diff --git a/src/api/java/baritone/api/process/IBuilderProcess.java b/src/api/java/baritone/api/process/IBuilderProcess.java index 77250ce73..59b690a89 100644 --- a/src/api/java/baritone/api/process/IBuilderProcess.java +++ b/src/api/java/baritone/api/process/IBuilderProcess.java @@ -58,6 +58,8 @@ default boolean build(String schematicFile, BlockPos origin) { void buildOpenSchematic(); + void buildOpenLitematic(); + void buildOpenLitematic(int i); void pause(); diff --git a/src/main/java/baritone/command/defaults/LitematicaCommand.java b/src/main/java/baritone/command/defaults/LitematicaCommand.java index bfe0079b3..9975de592 100644 --- a/src/main/java/baritone/command/defaults/LitematicaCommand.java +++ b/src/main/java/baritone/command/defaults/LitematicaCommand.java @@ -40,11 +40,13 @@ public void execute(String label, IArgConsumer args) throws CommandException { 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."); + try { + baritone.getBuilderProcess().buildOpenLitematic(schematic); + } catch (IndexOutOfBoundsException e) { + logDirect("Pleas provide a valid index."); + } + } else { + baritone.getBuilderProcess().buildOpenLitematic(); } } diff --git a/src/main/java/baritone/process/BuilderProcess.java b/src/main/java/baritone/process/BuilderProcess.java index 0ae796e6e..ce76d5f59 100644 --- a/src/main/java/baritone/process/BuilderProcess.java +++ b/src/main/java/baritone/process/BuilderProcess.java @@ -215,6 +215,20 @@ public void buildOpenSchematic() { } } + @Override + public void buildOpenLitematic() { + if (LitematicaHelper.isLitematicaPresent()) { + Integer selectedIndex = LitematicaHelper.getSelectedIndex(); + if (selectedIndex != -1) { + buildOpenLitematic(selectedIndex); + } else { + logDirect("No schematic currently selected"); + } + } else { + logDirect("Litematica is not present"); + } + } + @Override public void buildOpenLitematic(int i) { if (LitematicaHelper.isLitematicaPresent()) { diff --git a/src/main/java/baritone/utils/schematic/litematica/LitematicaHelper.java b/src/main/java/baritone/utils/schematic/litematica/LitematicaHelper.java index 3b05c23ef..3997a1316 100644 --- a/src/main/java/baritone/utils/schematic/litematica/LitematicaHelper.java +++ b/src/main/java/baritone/utils/schematic/litematica/LitematicaHelper.java @@ -54,6 +54,17 @@ public static boolean hasLoadedSchematic() { return DataManager.getSchematicPlacementManager().getAllSchematicsPlacements().size() > 0; } + /** + * @return the index of the currently selected schematic. -1 if none selected. + */ + public static Integer getSelectedIndex() { + try { + return DataManager.getSchematicPlacementManager().getAllSchematicsPlacements().indexOf(DataManager.getSchematicPlacementManager().getSelectedSchematicPlacement()); + } catch (NullPointerException e) { + return -1; + } + } + /** * @param i index of the Schematic in the schematic placement list. * @return the name of the requested schematic. diff --git a/src/schematica_api/java/fi/dy/masa/litematica/schematic/placement/SchematicPlacementManager.java b/src/schematica_api/java/fi/dy/masa/litematica/schematic/placement/SchematicPlacementManager.java index ab60e27fa..291224c65 100644 --- a/src/schematica_api/java/fi/dy/masa/litematica/schematic/placement/SchematicPlacementManager.java +++ b/src/schematica_api/java/fi/dy/masa/litematica/schematic/placement/SchematicPlacementManager.java @@ -19,13 +19,21 @@ import java.util.ArrayList; import java.util.List; +import javax.annotation.Nullable; public class SchematicPlacementManager { private final List schematicPlacements = new ArrayList<>(); + @Nullable + private SchematicPlacement selectedPlacement; + //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 getAllSchematicsPlacements() { return schematicPlacements; } + + public SchematicPlacement getSelectedSchematicPlacement() { + return selectedPlacement; + } } \ No newline at end of file