Skip to content

Commit 49c3eda

Browse files
committed
Split out repair sign logic
1 parent 0d3cb11 commit 49c3eda

File tree

2 files changed

+21
-18
lines changed

2 files changed

+21
-18
lines changed

src/main/java/net/countercraft/movecraft/repair/RepairSign.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package net.countercraft.movecraft.repair;
22

3+
import java.io.File;
34
import java.io.FileNotFoundException;
45
import java.io.IOException;
56
import java.util.Map;
@@ -208,7 +209,12 @@ public void onLeftClick(Sign sign, Player player, PlayerCraft craft) {
208209
}
209210
}
210211

211-
if (!WEUtils.saveCraftSchematic(craft, sign)) {
212+
File repairDirectory = new File(MovecraftRepair.getInstance().getDataFolder(), "RepairStates");
213+
File playerDirectory = new File(repairDirectory, craft.getPilot().getUniqueId().toString());
214+
if (!playerDirectory.exists())
215+
playerDirectory.mkdirs();
216+
String repairName = ChatColor.stripColor(sign.getLine(1));
217+
if (!WEUtils.saveCraftSchematic(playerDirectory, repairName, craft.getWorld(), craft.getHitBox(), sign.getLocation())) {
212218
player.sendMessage(I18nSupport.getInternationalisedComponent("Repair - Could not save file"));
213219
return;
214220
}

src/main/java/net/countercraft/movecraft/repair/util/WEUtils.java

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import net.kyori.adventure.text.Component;
1212
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
1313
import org.bukkit.ChatColor;
14+
import org.bukkit.Location;
1415
import org.bukkit.Material;
1516
import org.bukkit.World;
1617
import org.bukkit.block.Sign;
@@ -131,20 +132,17 @@ public static boolean saveSchematic(File directory, String name, Clipboard clipb
131132
/**
132133
* Save a schematic from a craft
133134
*
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
135140
* @return true on success
136141
*/
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) {
145143
BlockVector3 minPos = BlockVector3.at(hitbox.getMinX(), hitbox.getMinY(), hitbox.getMinZ());
146144
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());
148146
CuboidRegion region = new CuboidRegion(minPos, maxPos);
149147
// Calculate a hitbox of all blocks within the cuboid region but not within the
150148
// hitbox (so we don't save them)
@@ -153,17 +151,16 @@ public static boolean saveCraftSchematic(@NotNull PilotedCraft craft, @NotNull S
153151
new MovecraftLocation(hitbox.getMaxX(), hitbox.getMaxY(), hitbox.getMaxZ()));
154152
surrounding = new BitmapHitBox(surrounding).difference(hitbox);
155153

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);
158155

159-
Set<BaseBlock> blocks = getWorldEditBlocks(craft.getHitBox(), bukkitWorld);
156+
Set<BaseBlock> blocks = getWorldEditBlocks(hitbox, world);
160157

161158
Clipboard clipboard;
162159
try {
163160
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);
167164
BlockMask mask = new BlockMask(source, blocks);
168165
copy.setSourceMask(mask);
169166
Operations.complete(copy);
@@ -178,7 +175,7 @@ public static boolean saveCraftSchematic(@NotNull PilotedCraft craft, @NotNull S
178175
return false;
179176
}
180177

181-
return saveSchematic(playerDirectory, repairName, clipboard);
178+
return saveSchematic(directory, name, clipboard);
182179
}
183180

184181
@NotNull

0 commit comments

Comments
 (0)