From a5270ccea86ed7a6e34197d0d6c348e53871c599 Mon Sep 17 00:00:00 2001 From: cyberpwn Date: Fri, 27 Aug 2021 01:35:23 -0400 Subject: [PATCH] Fixes --- .../iris/core/command/CommandIrisBitwise.java | 4 +++ .../com/volmit/iris/core/pack/IrisPack.java | 26 ++++++++++++++----- .../iris/core/pack/IrisPackRepository.java | 6 ++--- .../volmit/iris/util/scheduling/jobs/Job.java | 6 +++++ 4 files changed, 33 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/volmit/iris/core/command/CommandIrisBitwise.java b/src/main/java/com/volmit/iris/core/command/CommandIrisBitwise.java index 86cb66997..b118b7ba6 100644 --- a/src/main/java/com/volmit/iris/core/command/CommandIrisBitwise.java +++ b/src/main/java/com/volmit/iris/core/command/CommandIrisBitwise.java @@ -19,10 +19,14 @@ package com.volmit.iris.core.command; import com.volmit.iris.Iris; +import com.volmit.iris.core.pack.IrisPack; import com.volmit.iris.util.collection.KList; +import com.volmit.iris.util.exceptions.IrisException; import com.volmit.iris.util.plugin.MortarCommand; import com.volmit.iris.util.plugin.VolmitSender; +import java.util.concurrent.ExecutionException; + public class CommandIrisBitwise extends MortarCommand { public CommandIrisBitwise() { super("bitwise", "bits", "bw"); diff --git a/src/main/java/com/volmit/iris/core/pack/IrisPack.java b/src/main/java/com/volmit/iris/core/pack/IrisPack.java index 9e2cfb210..b8cbd2fb7 100644 --- a/src/main/java/com/volmit/iris/core/pack/IrisPack.java +++ b/src/main/java/com/volmit/iris/core/pack/IrisPack.java @@ -30,6 +30,7 @@ import com.volmit.iris.util.format.Form; import com.volmit.iris.util.io.IO; import com.volmit.iris.util.json.JSONArray; import com.volmit.iris.util.json.JSONObject; +import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.plugin.VolmitSender; import com.volmit.iris.util.scheduling.PrecisionStopwatch; import lombok.Data; @@ -39,6 +40,8 @@ import org.zeroturnaround.zip.commons.FileUtils; import java.io.File; import java.io.IOException; import java.net.MalformedURLException; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Future; /** * Represents an Iris pack that exists @@ -93,7 +96,7 @@ public class IrisPack { * @return the iris pack * @throws IrisException fails */ - public static IrisPack from(VolmitSender sender, String url) throws IrisException { + public static Future from(VolmitSender sender, String url) throws IrisException { IrisPackRepository repo = IrisPackRepository.from(url); if(repo == null) { @@ -316,9 +319,12 @@ public class IrisPack { * @return the pack * @throws MalformedURLException shit happens */ - public static IrisPack from(VolmitSender sender, IrisPackRepository repo) throws MalformedURLException { - repo.install(sender); - return new IrisPack(repo.getRepo()); + public static Future from(VolmitSender sender, IrisPackRepository repo) throws MalformedURLException { + CompletableFuture pack = new CompletableFuture<>(); + repo.install(sender, () -> { + pack.complete(new IrisPack(repo.getRepo())); + }); + return pack; } /** @@ -338,7 +344,10 @@ public class IrisPack { File fd = new File(f, "dimensions/" + name + ".json"); fd.getParentFile().mkdirs(); try { - IO.writeAll(fd, "{}"); + IO.writeAll(fd, "{\n" + + " \"name\": \""+Form.capitalize(name)+"\",\n" + + " \"version\": 1\n" + + "}\n"); } catch (IOException e) { throw new IrisException(e.getMessage(), e); } @@ -348,9 +357,14 @@ public class IrisPack { return pack; } + /** + * Get a packs pack folder for a name. Such that overworld would resolve as Iris/packs/overworld + * @param name the name + * @return the file path + */ public static File packsPack(String name) { - return Iris.instance.getDataFolder(StudioSVC.WORKSPACE_NAME, name); + return Iris.instance.getDataFolderNoCreate(StudioSVC.WORKSPACE_NAME, name); } private static KList collectFiles(File f, String fileExtension) { diff --git a/src/main/java/com/volmit/iris/core/pack/IrisPackRepository.java b/src/main/java/com/volmit/iris/core/pack/IrisPackRepository.java index fcc12add2..ffe337933 100644 --- a/src/main/java/com/volmit/iris/core/pack/IrisPackRepository.java +++ b/src/main/java/com/volmit/iris/core/pack/IrisPackRepository.java @@ -111,8 +111,8 @@ public class IrisPackRepository { return "https://codeload.github.com/" + user + "/" + repo + "/zip/refs/heads/" + branch; } - public void install(VolmitSender sender) throws MalformedURLException { - File pack = Iris.instance.getDataFolder(StudioSVC.WORKSPACE_NAME, getRepo()); + public void install(VolmitSender sender, Runnable whenComplete) throws MalformedURLException { + File pack = Iris.instance.getDataFolderNoCreate(StudioSVC.WORKSPACE_NAME, getRepo()); if (!pack.exists()) { File dl = new File(Iris.getTemp(), "dltk-" + UUID.randomUUID() + ".zip"); @@ -126,7 +126,7 @@ public class IrisPackRepository { } catch (IOException e) { e.printStackTrace(); } - })).execute(sender); + })).execute(sender, whenComplete); } else diff --git a/src/main/java/com/volmit/iris/util/scheduling/jobs/Job.java b/src/main/java/com/volmit/iris/util/scheduling/jobs/Job.java index 33864d86b..2e0331fe8 100644 --- a/src/main/java/com/volmit/iris/util/scheduling/jobs/Job.java +++ b/src/main/java/com/volmit/iris/util/scheduling/jobs/Job.java @@ -48,7 +48,12 @@ public interface Job { return (double) getWorkCompleted() / (double) getTotalWork(); } + default void execute(VolmitSender sender) { + execute(sender, () -> {}); + } + + default void execute(VolmitSender sender, Runnable whenComplete) { PrecisionStopwatch p = PrecisionStopwatch.start(); CompletableFuture f = J.afut(this::execute); int c = J.ar(() -> { @@ -61,6 +66,7 @@ public interface Job { f.whenComplete((fs, ff) -> { J.car(c); sender.sendMessage("Completed " + getName() + " in " + Form.duration(p.getMilliseconds(), 1)); + whenComplete.run(); }); } }