11package xyz .webmc .wlib .api .structure ;
22
3- import xyz .webmc .wlib .api .util .SchemUtil ;
4-
53import java .io .File ;
4+ import java .io .FileInputStream ;
5+ import java .io .FileOutputStream ;
66import java .io .IOException ;
7+ import java .io .InputStream ;
8+ import java .io .OutputStream ;
79import java .util .ArrayList ;
810import java .util .List ;
911
12+ import org .bukkit .Location ;
13+
1014import com .cryptomorin .xseries .XMaterial ;
15+
1116import dev .zerite .craftlib .commons .world .Block ;
1217import dev .zerite .craftlib .schematic .Schematic ;
1318import dev .zerite .craftlib .schematic .SchematicMaterials ;
14- import org . bukkit . Location ;
19+ import xyz . webmc . wlib . api . util . SchemUtil ;
1520
1621public abstract class AbstractBaseStructure {
1722 private final List <BlockRelative > blocks = new ArrayList <>();
@@ -35,13 +40,17 @@ public final String getName() {
3540 return this .name ;
3641 }
3742
38- public final void saveSchematic (final File file ) throws IOException {
43+ public final void saveSchematic (final OutputStream os ) throws IOException {
3944 final Schematic schematic = createSchematic ();
40- SchemUtil .writeSchematicFile (schematic , file );
45+ SchemUtil .writeSchematic (schematic , os );
4146 }
4247
43- public final void loadSchematic (final File file ) throws IOException {
44- final Schematic schematic = SchemUtil .readSchematicFile (file );
48+ public final void saveSchematic (final File file ) throws IOException {
49+ saveSchematic (new FileOutputStream (file ));
50+ }
51+
52+ public final void loadSchematic (final InputStream is ) throws IOException {
53+ final Schematic schematic = SchemUtil .readSchematic (is );
4554
4655 final int width = schematic .getWidth ();
4756 final int height = schematic .getHeight ();
@@ -66,7 +75,11 @@ public final void loadSchematic(final File file) throws IOException {
6675 }
6776 }
6877
69- private Schematic createSchematic () {
78+ public final void loadSchematic (final File file ) throws IOException {
79+ loadSchematic (new FileInputStream (file ));
80+ }
81+
82+ public final Schematic createSchematic () {
7083 if (!this .blocks .isEmpty ()) {
7184 int minX = Integer .MAX_VALUE ;
7285 int minY = Integer .MAX_VALUE ;
0 commit comments