diff --git a/worldedit-core/src/main/java/com/boydti/fawe/object/RunnableVal2.java b/worldedit-core/src/main/java/com/boydti/fawe/object/RunnableVal2.java new file mode 100644 index 000000000..a8a43ab61 --- /dev/null +++ b/worldedit-core/src/main/java/com/boydti/fawe/object/RunnableVal2.java @@ -0,0 +1,33 @@ +package com.boydti.fawe.object; + +import java.util.function.BiConsumer; + +public abstract class RunnableVal2 implements Runnable, BiConsumer { + public T value1; + public U value2; + + public RunnableVal2() { + } + + public RunnableVal2(T value1, U value2) { + this.value1 = value1; + this.value2 = value2; + } + + @Override + public void run() { + run(this.value1, this.value2); + } + + public abstract void run(T value1, U value2); + + public RunnableVal2 runAndGet(T value1, U value2) { + run(value1, value2); + return this; + } + + @Override + public void accept(T t, U u) { + run(t, u); + } +} \ No newline at end of file diff --git a/worldedit-core/src/main/java/com/boydti/fawe/util/MainUtil.java b/worldedit-core/src/main/java/com/boydti/fawe/util/MainUtil.java index 73de0e462..fb2a8af58 100644 --- a/worldedit-core/src/main/java/com/boydti/fawe/util/MainUtil.java +++ b/worldedit-core/src/main/java/com/boydti/fawe/util/MainUtil.java @@ -2,10 +2,7 @@ package com.boydti.fawe.util; import com.boydti.fawe.Fawe; import com.boydti.fawe.config.Settings; -import com.boydti.fawe.object.FaweInputStream; -import com.boydti.fawe.object.FaweOutputStream; -import com.boydti.fawe.object.RegionWrapper; -import com.boydti.fawe.object.RunnableVal; +import com.boydti.fawe.object.*; import com.boydti.fawe.object.changeset.FaweStreamChangeSet; import com.boydti.fawe.object.io.AbstractDelegateOutputStream; import com.github.luben.zstd.ZstdInputStream; @@ -40,6 +37,7 @@ import java.util.*; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; +import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.regex.Pattern; import java.util.zip.*; @@ -71,22 +69,22 @@ public class MainUtil { public static long getTotalSize(Path path) { final AtomicLong size = new AtomicLong(0); - traverse(path, new RunnableVal() { + traverse(path, new RunnableVal2() { @Override - public void run(BasicFileAttributes attrs) { + public void run(Path path, BasicFileAttributes attrs) { size.addAndGet(attrs.size()); } }); return size.get(); } - public static void traverse(Path path, final Consumer onEach) { + public static void traverse(Path path, final BiConsumer onEach) { try { Files.walkFileTree(path, new SimpleFileVisitor() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { - onEach.accept(attrs); + onEach.accept(file, attrs); return FileVisitResult.CONTINUE; } @@ -128,7 +126,7 @@ public class MainUtil { return out.toString(); } - public static void forEachFile(Path path, final RunnableVal onEach, Comparator comparator) { + public static void forEachFile(Path path, final RunnableVal2 onEach, Comparator comparator) { File dir = path.toFile(); if (!dir.exists()) return; File[] files = path.toFile().listFiles(); @@ -137,7 +135,7 @@ public class MainUtil { Path filePath = file.toPath(); try { BasicFileAttributes attr = Files.readAttributes(filePath, BasicFileAttributes.class); - onEach.run(attr); + onEach.run(file.toPath(), attr); } catch (IOException e) { e.printStackTrace(); }