diff --git a/src/main/java/com/volmit/iris/manager/command/jigsaw/CommandIrisJigsawExit.java b/src/main/java/com/volmit/iris/manager/command/jigsaw/CommandIrisJigsawExit.java new file mode 100644 index 000000000..224a9b488 --- /dev/null +++ b/src/main/java/com/volmit/iris/manager/command/jigsaw/CommandIrisJigsawExit.java @@ -0,0 +1,59 @@ +package com.volmit.iris.manager.command.jigsaw; + +import com.volmit.iris.Iris; +import com.volmit.iris.IrisSettings; +import com.volmit.iris.manager.edit.JigsawEditor; +import com.volmit.iris.util.KList; +import com.volmit.iris.util.MortarCommand; +import com.volmit.iris.util.MortarSender; + +import java.io.File; + +public class CommandIrisJigsawExit extends MortarCommand +{ + public CommandIrisJigsawExit() + { + super("exit", "x", "close", "stop"); + requiresPermission(Iris.perm); + setCategory("Jigsaw"); + setDescription("Close a currently open piece without saving"); + } + + @Override + public void addTabOptions(MortarSender sender, String[] args, KList list) { + + } + + @Override + public boolean handle(MortarSender sender, String[] args) + { + if(!IrisSettings.get().isStudio()) + { + sender.sendMessage("To use Iris Studio Jigsaw, please enable studio in Iris/settings.json"); + return true; + } + + if(!sender.isPlayer()) + { + sender.sendMessage("Ingame only"); + return true; + } + + JigsawEditor editor = JigsawEditor.editors.get(sender.player()); + + if(editor == null) + { + sender.sendMessage("You don't have any pieces open to close!"); + return true; + } + + editor.exit(); + return true; + } + + @Override + protected String getArgsUsage() + { + return ""; + } +} diff --git a/src/main/java/com/volmit/iris/manager/edit/JigsawEditor.java b/src/main/java/com/volmit/iris/manager/edit/JigsawEditor.java index 9db523501..e0eb53c8a 100644 --- a/src/main/java/com/volmit/iris/manager/edit/JigsawEditor.java +++ b/src/main/java/com/volmit/iris/manager/edit/JigsawEditor.java @@ -146,11 +146,7 @@ public class JigsawEditor implements Listener { public void close() { - J.car(ticker); - Iris.instance.unregisterListener(this); - object.unplaceCenterY(origin); - editors.remove(player); - falling.v().forEach(Runnable::run); + exit(); try { IO.writeAll(targetSaveLocation, new JSONObject(new Gson().toJson(piece)).toString(4)); } catch (IOException e) { @@ -158,6 +154,15 @@ public class JigsawEditor implements Listener { } } + public void exit() + { + J.car(ticker); + Iris.instance.unregisterListener(this); + object.unplaceCenterY(origin); + editors.remove(player); + falling.v().forEach(Runnable::run); + } + public void onTick() { if(cl.flip())