11
11
import net .kyori .adventure .text .Component ;
12
12
import net .kyori .adventure .text .serializer .gson .GsonComponentSerializer ;
13
13
import org .bukkit .ChatColor ;
14
+ import org .bukkit .Location ;
14
15
import org .bukkit .Material ;
15
16
import org .bukkit .World ;
16
17
import org .bukkit .block .Sign ;
@@ -131,20 +132,17 @@ public static boolean saveSchematic(File directory, String name, Clipboard clipb
131
132
/**
132
133
* Save a schematic from a craft
133
134
*
134
- * @param craft The craft to save
135
+ * @param directory Directory to save in
136
+ * @param name Name to save as
137
+ * @param world World to save from
138
+ * @param hitbox Hitbox to save from
139
+ * @param origin Origin point to save from
135
140
* @return true on success
136
141
*/
137
- public static boolean saveCraftSchematic (@ NotNull PilotedCraft craft , @ NotNull Sign sign ) {
138
- File repairDirectory = new File (MovecraftRepair .getInstance ().getDataFolder (), "RepairStates" );
139
- File playerDirectory = new File (repairDirectory , craft .getPilot ().getUniqueId ().toString ());
140
- if (!playerDirectory .exists ())
141
- playerDirectory .mkdirs ();
142
- String repairName = ChatColor .stripColor (sign .getLine (1 ));
143
-
144
- HitBox hitbox = craft .getHitBox ();
142
+ public static boolean saveCraftSchematic (File directory , String name , World world , @ NotNull HitBox hitbox , @ NotNull Location origin ) {
145
143
BlockVector3 minPos = BlockVector3 .at (hitbox .getMinX (), hitbox .getMinY (), hitbox .getMinZ ());
146
144
BlockVector3 maxPos = BlockVector3 .at (hitbox .getMaxX (), hitbox .getMaxY (), hitbox .getMaxZ ());
147
- BlockVector3 origin = BlockVector3 .at (sign . getX (), sign . getY (), sign . getZ ());
145
+ BlockVector3 weOrigin = BlockVector3 .at (origin . getBlockX (), origin . getBlockY (), origin . getBlockZ ());
148
146
CuboidRegion region = new CuboidRegion (minPos , maxPos );
149
147
// Calculate a hitbox of all blocks within the cuboid region but not within the
150
148
// hitbox (so we don't save them)
@@ -153,17 +151,16 @@ public static boolean saveCraftSchematic(@NotNull PilotedCraft craft, @NotNull S
153
151
new MovecraftLocation (hitbox .getMaxX (), hitbox .getMaxY (), hitbox .getMaxZ ()));
154
152
surrounding = new BitmapHitBox (surrounding ).difference (hitbox );
155
153
156
- World bukkitWorld = craft .getWorld ();
157
- com .sk89q .worldedit .world .World world = new BukkitWorld (bukkitWorld );
154
+ com .sk89q .worldedit .world .World weWorld = new BukkitWorld (world );
158
155
159
- Set <BaseBlock > blocks = getWorldEditBlocks (craft . getHitBox (), bukkitWorld );
156
+ Set <BaseBlock > blocks = getWorldEditBlocks (hitbox , world );
160
157
161
158
Clipboard clipboard ;
162
159
try {
163
160
clipboard = new BlockArrayClipboard (region );
164
- clipboard .setOrigin (origin );
165
- EditSession source = WorldEdit .getInstance ().newEditSession (world );
166
- ForwardExtentCopy copy = new ForwardExtentCopy (source , region , origin , clipboard , origin );
161
+ clipboard .setOrigin (weOrigin );
162
+ EditSession source = WorldEdit .getInstance ().newEditSession (weWorld );
163
+ ForwardExtentCopy copy = new ForwardExtentCopy (source , region , weOrigin , clipboard , weOrigin );
167
164
BlockMask mask = new BlockMask (source , blocks );
168
165
copy .setSourceMask (mask );
169
166
Operations .complete (copy );
@@ -178,7 +175,7 @@ public static boolean saveCraftSchematic(@NotNull PilotedCraft craft, @NotNull S
178
175
return false ;
179
176
}
180
177
181
- return saveSchematic (playerDirectory , repairName , clipboard );
178
+ return saveSchematic (directory , name , clipboard );
182
179
}
183
180
184
181
@ NotNull
0 commit comments