diff --git a/bukkit/src/main/java/com/boydti/fawe/bukkit/FaweBukkit.java b/bukkit/src/main/java/com/boydti/fawe/bukkit/FaweBukkit.java index 82a56740..dd7487e9 100644 --- a/bukkit/src/main/java/com/boydti/fawe/bukkit/FaweBukkit.java +++ b/bukkit/src/main/java/com/boydti/fawe/bukkit/FaweBukkit.java @@ -203,8 +203,8 @@ public class FaweBukkit implements IFawe, Listener { return plugin.getQueue(world); } catch (Throwable ignore) { // Disable incompatible settings - Settings.QUEUE.PARALLEL_THREADS = 1; // BukkitAPI placer is too slow to parallel thread at the chunk level - Settings.HISTORY.COMBINE_STAGES = false; // Performing a chunk copy (if possible) wouldn't be faster using the BukkitAPI + Settings.IMP.QUEUE.PARALLEL_THREADS = 1; // BukkitAPI placer is too slow to parallel thread at the chunk level + Settings.IMP.HISTORY.COMBINE_STAGES = false; // Performing a chunk copy (if possible) wouldn't be faster using the BukkitAPI if (hasNMS) { ignore.printStackTrace(); debug("====== NO NMS BLOCK PLACER FOUND ======"); @@ -256,8 +256,8 @@ public class FaweBukkit implements IFawe, Listener { } catch (Throwable ignore) { } // Disable incompatible settings - Settings.QUEUE.PARALLEL_THREADS = 1; // BukkitAPI placer is too slow to parallel thread at the chunk level - Settings.HISTORY.COMBINE_STAGES = false; // Performing a chunk copy (if possible) wouldn't be faster using the BukkitAPI + Settings.IMP.QUEUE.PARALLEL_THREADS = 1; // BukkitAPI placer is too slow to parallel thread at the chunk level + Settings.IMP.HISTORY.COMBINE_STAGES = false; // Performing a chunk copy (if possible) wouldn't be faster using the BukkitAPI if (hasNMS) { debug("====== NO NMS BLOCK PLACER FOUND ======"); debug("FAWE couldn't find a fast block placer"); diff --git a/bukkit/src/main/java/com/boydti/fawe/bukkit/v0/BukkitChunk_All.java b/bukkit/src/main/java/com/boydti/fawe/bukkit/v0/BukkitChunk_All.java index 77289110..00f1083d 100644 --- a/bukkit/src/main/java/com/boydti/fawe/bukkit/v0/BukkitChunk_All.java +++ b/bukkit/src/main/java/com/boydti/fawe/bukkit/v0/BukkitChunk_All.java @@ -206,7 +206,7 @@ public class BukkitChunk_All extends CharFaweChunk { continue; } if (light != place) { - light = light && Settings.LIGHTING.MODE != 0; + light = light && Settings.IMP.LIGHTING.MODE != 0; if (light) { parent.enableLighting(disableResult); } diff --git a/bukkit/src/main/java/com/boydti/fawe/bukkit/v0/BukkitQueue_All.java b/bukkit/src/main/java/com/boydti/fawe/bukkit/v0/BukkitQueue_All.java index 35421d4e..678bde66 100644 --- a/bukkit/src/main/java/com/boydti/fawe/bukkit/v0/BukkitQueue_All.java +++ b/bukkit/src/main/java/com/boydti/fawe/bukkit/v0/BukkitQueue_All.java @@ -21,19 +21,19 @@ public class BukkitQueue_All extends BukkitQueue_0 { public BukkitQueue_All(com.sk89q.worldedit.world.World world) { super(world); - if (Settings.QUEUE.EXTRA_TIME_MS != Integer.MIN_VALUE) { - ALLOCATE = Settings.QUEUE.EXTRA_TIME_MS; - Settings.QUEUE.EXTRA_TIME_MS = Integer.MIN_VALUE; - Settings.QUEUE.PARALLEL_THREADS = 1; + if (Settings.IMP.QUEUE.EXTRA_TIME_MS != Integer.MIN_VALUE) { + ALLOCATE = Settings.IMP.QUEUE.EXTRA_TIME_MS; + Settings.IMP.QUEUE.EXTRA_TIME_MS = Integer.MIN_VALUE; + Settings.IMP.QUEUE.PARALLEL_THREADS = 1; } } public BukkitQueue_All(String world) { super(world); - if (Settings.QUEUE.EXTRA_TIME_MS != Integer.MIN_VALUE) { - ALLOCATE = Settings.QUEUE.EXTRA_TIME_MS; - Settings.QUEUE.EXTRA_TIME_MS = Integer.MIN_VALUE; - Settings.QUEUE.PARALLEL_THREADS = 1; + if (Settings.IMP.QUEUE.EXTRA_TIME_MS != Integer.MIN_VALUE) { + ALLOCATE = Settings.IMP.QUEUE.EXTRA_TIME_MS; + Settings.IMP.QUEUE.EXTRA_TIME_MS = Integer.MIN_VALUE; + Settings.IMP.QUEUE.PARALLEL_THREADS = 1; } } diff --git a/bukkit/src/main/java/com/boydti/fawe/bukkit/v0/ChunkListener.java b/bukkit/src/main/java/com/boydti/fawe/bukkit/v0/ChunkListener.java index f334c4df..f78eb92e 100644 --- a/bukkit/src/main/java/com/boydti/fawe/bukkit/v0/ChunkListener.java +++ b/bukkit/src/main/java/com/boydti/fawe/bukkit/v0/ChunkListener.java @@ -27,7 +27,7 @@ public class ChunkListener implements Listener { int rateLimit = 0; public ChunkListener() { - if (Settings.TICK_LIMITER.ENABLED) { + if (Settings.IMP.TICK_LIMITER.ENABLED) { Bukkit.getPluginManager().registerEvents(ChunkListener.this, Fawe.imp().getPlugin()); TaskManager.IMP.repeat(new Runnable() { @Override @@ -38,11 +38,11 @@ public class ChunkListener implements Listener { counter.clear(); lastZ = Integer.MIN_VALUE; for (Long badChunk : badChunks) { - counter.put(badChunk, new IntegerTrio(Settings.TICK_LIMITER.PHYSICS, Settings.TICK_LIMITER.ITEMS, Settings.TICK_LIMITER.FALLING)); + counter.put(badChunk, new IntegerTrio(Settings.IMP.TICK_LIMITER.PHYSICS, Settings.IMP.TICK_LIMITER.ITEMS, Settings.IMP.TICK_LIMITER.FALLING)); } badChunks.clear(); } - }, Settings.TICK_LIMITER.INTERVAL); + }, Settings.IMP.TICK_LIMITER.INTERVAL); } } @@ -92,7 +92,7 @@ public class ChunkListener implements Listener { int cx = x >> 4; int cz = z >> 4; IntegerTrio count = getCount(cx, cz); - if (count.x >= Settings.TICK_LIMITER.PHYSICS) { + if (count.x >= Settings.IMP.TICK_LIMITER.PHYSICS) { event.setCancelled(true); return; } @@ -100,7 +100,7 @@ public class ChunkListener implements Listener { int y = block.getY(); if (y != lastPhysY) { lastPhysY = y; - if (++count.x == Settings.TICK_LIMITER.PHYSICS) { + if (++count.x == Settings.IMP.TICK_LIMITER.PHYSICS) { badChunks.add(MathMan.pairInt(cx, cz)); if (rateLimit <= 0) { rateLimit = 120; @@ -127,9 +127,9 @@ public class ChunkListener implements Listener { int cx = x >> 4; int cz = z >> 4; IntegerTrio count = getCount(cx, cz); - if (++count.y >= Settings.TICK_LIMITER.FALLING) { - if (count.y == Settings.TICK_LIMITER.FALLING) { - count.x = Settings.TICK_LIMITER.PHYSICS; + if (++count.y >= Settings.IMP.TICK_LIMITER.FALLING) { + if (count.y == Settings.IMP.TICK_LIMITER.FALLING) { + count.x = Settings.IMP.TICK_LIMITER.PHYSICS; badChunks.add(MathMan.pairInt(cx, cz)); Fawe.debug("[Tick Limiter] Detected and cancelled falling block lag source at " + block.getLocation()); } @@ -149,9 +149,9 @@ public class ChunkListener implements Listener { int cx = loc.getBlockX() >> 4; int cz = loc.getBlockZ() >> 4; IntegerTrio count = getCount(cx, cz); - if (++count.z >= Settings.TICK_LIMITER.ITEMS) { - if (count.z == Settings.TICK_LIMITER.ITEMS) { - count.x = Settings.TICK_LIMITER.PHYSICS; + if (++count.z >= Settings.IMP.TICK_LIMITER.ITEMS) { + if (count.z == Settings.IMP.TICK_LIMITER.ITEMS) { + count.x = Settings.IMP.TICK_LIMITER.PHYSICS; cleanup(loc.getChunk()); badChunks.add(MathMan.pairInt(cx, cz)); if (rateLimit <= 0) { diff --git a/bukkit/src/main/java/com/boydti/fawe/bukkit/wrapper/AsyncWorld.java b/bukkit/src/main/java/com/boydti/fawe/bukkit/wrapper/AsyncWorld.java index 046d4e91..7d1c67a4 100644 --- a/bukkit/src/main/java/com/boydti/fawe/bukkit/wrapper/AsyncWorld.java +++ b/bukkit/src/main/java/com/boydti/fawe/bukkit/wrapper/AsyncWorld.java @@ -80,6 +80,10 @@ public class AsyncWorld extends DelegateFaweQueue implements World, HasFaweQueue this(parent, FaweAPI.createQueue(parent.getName(), autoQueue)); } + public AsyncWorld(String world, boolean autoQueue) { + this(Bukkit.getWorld(world), autoQueue); + } + /** * @deprecated use {@link #wrap(org.bukkit.World)} instead * @param parent diff --git a/core/src/main/java/com/boydti/fawe/Fawe.java b/core/src/main/java/com/boydti/fawe/Fawe.java index 55980225..36c0aaa6 100644 --- a/core/src/main/java/com/boydti/fawe/Fawe.java +++ b/core/src/main/java/com/boydti/fawe/Fawe.java @@ -227,11 +227,11 @@ public class Fawe { * Implementation dependent stuff */ this.setupConfigs(); - MainUtil.deleteOlder(MainUtil.getFile(IMP.getDirectory(), Settings.PATHS.HISTORY), TimeUnit.DAYS.toMillis(Settings.HISTORY.DELETE_AFTER_DAYS)); - MainUtil.deleteOlder(MainUtil.getFile(IMP.getDirectory(), Settings.PATHS.CLIPBOARD), TimeUnit.DAYS.toMillis(Settings.CLIPBOARD.DELETE_AFTER_DAYS)); + MainUtil.deleteOlder(MainUtil.getFile(IMP.getDirectory(), Settings.IMP.PATHS.HISTORY), TimeUnit.DAYS.toMillis(Settings.IMP.HISTORY.DELETE_AFTER_DAYS)); + MainUtil.deleteOlder(MainUtil.getFile(IMP.getDirectory(), Settings.IMP.PATHS.CLIPBOARD), TimeUnit.DAYS.toMillis(Settings.IMP.CLIPBOARD.DELETE_AFTER_DAYS)); TaskManager.IMP = this.IMP.getTaskManager(); - if (Settings.METRICS) { + if (Settings.IMP.METRICS) { this.IMP.startMetrics(); } this.setupCommands(); @@ -258,7 +258,7 @@ public class Fawe { TaskManager.IMP.repeat(timer, 1); - if (Settings.UPDATE) { + if (Settings.IMP.UPDATE) { // Delayed updating TaskManager.IMP.async(new Runnable() { @Override @@ -310,19 +310,18 @@ public class Fawe { public void setupConfigs() { // Setting up config.yml File file = new File(this.IMP.getDirectory(), "config.yml"); - Settings.PLATFORM = IMP.getPlatform().replace("\"", ""); + Settings.IMP.PLATFORM = IMP.getPlatform().replace("\"", ""); try { InputStream stream = getClass().getResourceAsStream("/fawe.properties"); java.util.Scanner scanner = new java.util.Scanner(stream).useDelimiter("\\A"); String versionString = scanner.next().trim(); scanner.close(); this.version = new FaweVersion(versionString); - Settings.DATE = new Date(100 + version.year, version.month, version.day).toGMTString(); - Settings.BUILD = "https://ci.athion.net/job/FastAsyncWorldEdit/" + version.build; - Settings.COMMIT = "https://github.com/boy0001/FastAsyncWorldedit/commit/" + Integer.toHexString(version.hash); + Settings.IMP.DATE = new Date(100 + version.year, version.month, version.day).toGMTString(); + Settings.IMP.BUILD = "https://ci.athion.net/job/FastAsyncWorldEdit/" + version.build; + Settings.IMP.COMMIT = "https://github.com/boy0001/FastAsyncWorldedit/commit/" + Integer.toHexString(version.hash); } catch (Throwable ignore) {} - Settings.load(file); - Settings.save(file); + Settings.IMP.reload(file); // Setting up message.yml BBC.load(new File(this.IMP.getDirectory(), "message.yml")); } @@ -483,9 +482,9 @@ public class Fawe { try { com.github.luben.zstd.util.Native.load(); } catch (Throwable e) { - if (Settings.CLIPBOARD.COMPRESSION_LEVEL > 6 || Settings.HISTORY.COMPRESSION_LEVEL > 6) { - Settings.CLIPBOARD.COMPRESSION_LEVEL = Math.min(6, Settings.CLIPBOARD.COMPRESSION_LEVEL); - Settings.HISTORY.COMPRESSION_LEVEL = Math.min(6, Settings.HISTORY.COMPRESSION_LEVEL); + if (Settings.IMP.CLIPBOARD.COMPRESSION_LEVEL > 6 || Settings.IMP.HISTORY.COMPRESSION_LEVEL > 6) { + Settings.IMP.CLIPBOARD.COMPRESSION_LEVEL = Math.min(6, Settings.IMP.CLIPBOARD.COMPRESSION_LEVEL); + Settings.IMP.HISTORY.COMPRESSION_LEVEL = Math.min(6, Settings.IMP.HISTORY.COMPRESSION_LEVEL); debug("====== ZSTD COMPRESSION BINDING NOT FOUND ======"); debug(e); debug("==============================================="); @@ -525,7 +524,7 @@ public class Fawe { } private void setupMemoryListener() { - if (Settings.MAX_MEMORY_PERCENT < 1 || Settings.MAX_MEMORY_PERCENT > 99) { + if (Settings.IMP.MAX_MEMORY_PERCENT < 1 || Settings.IMP.MAX_MEMORY_PERCENT > 99) { return; } try { @@ -547,7 +546,7 @@ public class Fawe { if (max < 0) { continue; } - final long alert = (max * Settings.MAX_MEMORY_PERCENT) / 100; + final long alert = (max * Settings.IMP.MAX_MEMORY_PERCENT) / 100; mp.setUsageThreshold(alert); } } diff --git a/core/src/main/java/com/boydti/fawe/FaweAPI.java b/core/src/main/java/com/boydti/fawe/FaweAPI.java index ec567a43..bba0ab74 100644 --- a/core/src/main/java/com/boydti/fawe/FaweAPI.java +++ b/core/src/main/java/com/boydti/fawe/FaweAPI.java @@ -231,7 +231,7 @@ public class FaweAPI { if (!file.getName().toLowerCase().endsWith(".bd")) { throw new IllegalArgumentException("Not a BD file!"); } - if (Settings.HISTORY.USE_DISK) { + if (Settings.IMP.HISTORY.USE_DISK) { throw new IllegalArgumentException("History on disk not enabled!"); } String[] path = file.getPath().split(File.separator); @@ -261,12 +261,12 @@ public class FaweAPI { * @param user - The uuid (may be null) * @param radius - The radius from the origin of the edit * @param timediff - The max age of the file in milliseconds - * @param shallow - If shallow is true, FAWE will only read the first Settings.BUFFER_SIZE bytes to obtain history info
+ * @param shallow - If shallow is true, FAWE will only read the first Settings.IMP.BUFFER_SIZE bytes to obtain history info
* Reading only part of the file will result in unreliable bounds info for large edits * @return */ public static List getBDFiles(FaweLocation origin, UUID user, int radius, long timediff, boolean shallow) { - File history = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.PATHS.HISTORY + File.separator + origin.world); + File history = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.IMP.PATHS.HISTORY + File.separator + origin.world); if (!history.exists()) { return new ArrayList<>(); } diff --git a/core/src/main/java/com/boydti/fawe/command/Rollback.java b/core/src/main/java/com/boydti/fawe/command/Rollback.java index 7d46fd37..d7447971 100644 --- a/core/src/main/java/com/boydti/fawe/command/Rollback.java +++ b/core/src/main/java/com/boydti/fawe/command/Rollback.java @@ -28,7 +28,7 @@ public class Rollback extends FaweCommand { @Override public boolean execute(final FawePlayer player, final String... args) { - if (!Settings.HISTORY.USE_DATABASE) { + if (!Settings.IMP.HISTORY.USE_DATABASE) { BBC.SETTING_DISABLE.send(player, "history.use-database"); return false; } diff --git a/core/src/main/java/com/boydti/fawe/config/Config.java b/core/src/main/java/com/boydti/fawe/config/Config.java index 8f2d76c6..d3191ae6 100644 --- a/core/src/main/java/com/boydti/fawe/config/Config.java +++ b/core/src/main/java/com/boydti/fawe/config/Config.java @@ -13,6 +13,7 @@ import java.lang.annotation.Target; import java.lang.invoke.MethodHandles; import java.lang.reflect.Field; import java.lang.reflect.Modifier; +import java.lang.reflect.ParameterizedType; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; @@ -28,7 +29,7 @@ public class Config { * @param * @return */ - public static T get(String key, Class root) { + private T get(String key, Class root) { String[] split = key.split("\\."); Object instance = getInstance(split, root); if (instance != null) { @@ -52,7 +53,7 @@ public class Config { * @param value value * */ - public static void set(String key, Object value, Class root) { + private void set(String key, Object value, Class root) { String[] split = key.split("\\."); Object instance = getInstance(split, root); if (instance != null) { @@ -75,7 +76,7 @@ public class Config { Fawe.debug("Failed to set config option: " + key + ": " + value + " | " + instance + " | " + root.getSimpleName() + ".yml"); } - public static boolean load(File file, Class root) { + public boolean load(File file) { if (!file.exists()) { return false; } @@ -85,7 +86,7 @@ public class Config { if (value instanceof MemorySection) { continue; } - set(key, value, root); + set(key, value, getClass()); } return true; } @@ -94,16 +95,19 @@ public class Config { * Set all values in the file (load first to avoid overwriting) * @param file */ - public static void save(File file, Class root) { + public void save(File file) { + Class root = getClass(); try { if (!file.exists()) { - file.getParentFile().mkdirs(); + File parent = file.getParentFile(); + if (parent != null) { + file.getParentFile().mkdirs(); + } file.createNewFile(); } PrintWriter writer = new PrintWriter(file); - Class clazz = root; - Object instance = root.newInstance(); - save(writer, clazz, instance, 0); + Object instance = this; + save(writer, getClass(), instance, 0); writer.close(); } catch (Throwable e) { e.printStackTrace(); @@ -180,7 +184,7 @@ public class Config { * @param clazz * @return */ - public static Map getFields(Class clazz) { + private Map getFields(Class clazz) { HashMap map = new HashMap<>(); for (Field field : clazz.getFields()) { if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { @@ -194,7 +198,7 @@ public class Config { return map; } - private static String toYamlString(Object value, String spacing) { + private String toYamlString(Object value, String spacing) { if (value instanceof List) { Collection listValue = (Collection) value; if (listValue.isEmpty()) { @@ -216,11 +220,16 @@ public class Config { return value != null ? value.toString() : "null"; } - private static void save(PrintWriter writer, Class clazz, Object instance, int indent) { + private void save(PrintWriter writer, Class clazz, Object instance, int indent) { try { String CTRF = System.lineSeparator(); String spacing = StringMan.repeat(" ", indent); + HashMap instances = new HashMap<>(); for (Field field : clazz.getFields()) { + if (field.getAnnotation(Ignore.class) != null) { + continue; + } + Class current = field.getType(); if (field.getAnnotation(Ignore.class) != null) { continue; } @@ -230,61 +239,58 @@ public class Config { writer.write(spacing + "# " + commentLine + CTRF); } } + if (current == ConfigBlock.class) { + current = (Class) ((ParameterizedType) (field.getGenericType())).getActualTypeArguments()[0]; + comment = current.getAnnotation(Comment.class); + if (comment != null) { + for (String commentLine : comment.value()) { + writer.write(spacing + "# " + commentLine + CTRF); + } + } + BlockName blockNames = current.getAnnotation(BlockName.class); + if (blockNames != null) { + writer.write(spacing + toNodeName(current.getSimpleName()) + ":" + CTRF); + ConfigBlock configBlock = (ConfigBlock) field.get(instance); + if (configBlock == null || configBlock.getInstances().isEmpty()) { + configBlock = new ConfigBlock(); + field.set(instance, configBlock); + for (String blockName : blockNames.value()) { + configBlock.put(blockName, current.newInstance()); + } + } + // Save each instance + for (Map.Entry entry : ((Map) configBlock.getRaw()).entrySet()) { + String key = entry.getKey(); + writer.write(spacing + " " + toNodeName(key) + ":" + CTRF); + save(writer, current, entry.getValue(), indent + 4); + } + } + continue; + } Create create = field.getAnnotation(Create.class); if (create != null) { Object value = field.get(instance); - if (value == null && field.getType() != ConfigBlock.class) { - setAccessible(field); - Class[] classes = clazz.getDeclaredClasses(); - for (Class current : classes) { - if (StringMan.isEqual(current.getSimpleName(), field.getName())) { - field.set(instance, current.newInstance()); - break; - } + setAccessible(field); + if (indent == 0) { + writer.write(CTRF); + } + comment = current.getAnnotation(Comment.class); + if (comment != null) { + for (String commentLine : comment.value()) { + writer.write(spacing + "# " + commentLine + CTRF); } } + writer.write(spacing + toNodeName(current.getSimpleName()) + ":" + CTRF); + if (value == null) { + field.set(instance, value = current.newInstance()); + instances.put(current, value); + } + save(writer, current, value, indent + 2); continue; } else { writer.write(spacing + toNodeName(field.getName() + ": ") + toYamlString(field.get(instance), spacing) + CTRF); } } - for (Class current : clazz.getClasses()) { - if (current.isInterface() || current.getAnnotation(Ignore.class) != null) { - continue; - } - if (indent == 0) { - writer.write(CTRF); - } - Comment comment = current.getAnnotation(Comment.class); - if (comment != null) { - for (String commentLine : comment.value()) { - writer.write(spacing + "# " + commentLine + CTRF); - } - } - writer.write(spacing + toNodeName(current.getSimpleName()) + ":" + CTRF); - BlockName blockNames = current.getAnnotation(BlockName.class); - if (blockNames != null) { - Field instanceField = clazz.getDeclaredField(toFieldName(current.getSimpleName())); - setAccessible(instanceField); - ConfigBlock value = (ConfigBlock) instanceField.get(instance); - if (value == null) { - value = new ConfigBlock(); - instanceField.set(instance, value); - for (String blockName : blockNames.value()) { - value.put(blockName, current.newInstance()); - } - } - // Save each instance - for (Map.Entry entry: ((Map) value.getRaw()).entrySet()) { - String key = entry.getKey(); - writer.write(spacing + " " + toNodeName(key) + ":" + CTRF); - save(writer, current, entry.getValue(), indent + 4); - } - continue; - } else { - save(writer, current, current.newInstance(), indent + 2); - } - } } catch (Throwable e) { e.printStackTrace(); } @@ -295,7 +301,7 @@ public class Config { * @param split the node (split by period) * @return */ - private static Field getField(String[] split, Class root) { + private Field getField(String[] split, Class root) { Object instance = getInstance(split, root); if (instance == null) { return null; @@ -310,7 +316,7 @@ public class Config { * @param instance the instance * @return */ - private static Field getField(String[] split, Object instance) { + private Field getField(String[] split, Object instance) { try { Field field = instance.getClass().getField(toFieldName(split[split.length - 1])); setAccessible(field); @@ -321,15 +327,22 @@ public class Config { } } + private Object getInstance(Object instance, Class clazz) throws IllegalAccessException, InstantiationException { + try { + Field instanceField = clazz.getDeclaredField(clazz.getSimpleName()); + } catch (Throwable ignore) {} + return clazz.newInstance(); + } + /** * Get the instance for a specific config node * @param split the node (split by period) * @return The instance or null */ - private static Object getInstance(String[] split, Class root) { + private Object getInstance(String[] split, Class root) { try { Class clazz = root == null ? MethodHandles.lookup().lookupClass() : root; - Object instance = clazz.newInstance(); + Object instance = this; while (split.length > 0) { switch (split.length) { case 1: @@ -391,7 +404,7 @@ public class Config { * @param node * @return */ - private static String toFieldName(String node) { + private String toFieldName(String node) { return node.toUpperCase().replaceAll("-","_"); } @@ -400,7 +413,7 @@ public class Config { * @param field * @return */ - private static String toNodeName(String field) { + private String toNodeName(String field) { return field.toLowerCase().replace("_","-"); } @@ -410,7 +423,7 @@ public class Config { * @throws NoSuchFieldException * @throws IllegalAccessException */ - private static void setAccessible(Field field) throws NoSuchFieldException, IllegalAccessException { + private void setAccessible(Field field) throws NoSuchFieldException, IllegalAccessException { field.setAccessible(true); Field modifiersField = Field.class.getDeclaredField("modifiers"); modifiersField.setAccessible(true); diff --git a/core/src/main/java/com/boydti/fawe/config/Settings.java b/core/src/main/java/com/boydti/fawe/config/Settings.java index c8f53009..69ed72f4 100644 --- a/core/src/main/java/com/boydti/fawe/config/Settings.java +++ b/core/src/main/java/com/boydti/fawe/config/Settings.java @@ -9,49 +9,70 @@ import java.util.Collection; import java.util.List; public class Settings extends Config { + @Ignore + public static final Settings IMP = new Settings(); @Comment("These first 6 aren't configurable") // This is a comment @Final // Indicates that this value isn't configurable - public static final String ISSUES = "https://github.com/boy0001/FastAsyncWorldedit/issues"; + public final String ISSUES = "https://github.com/boy0001/FastAsyncWorldedit/issues"; @Final - public static final String WIKI = "https://github.com/boy0001/FastAsyncWorldedit/wiki/"; + public final String WIKI = "https://github.com/boy0001/FastAsyncWorldedit/wiki/"; @Final - public static String DATE = null; // These values are set from FAWE before loading + public String DATE = null; // These values are set from FAWE before loading @Final - public static String BUILD = null; // These values are set from FAWE before loading + public String BUILD = null; // These values are set from FAWE before loading @Final - public static String COMMIT = null; // These values are set from FAWE before loading + public String COMMIT = null; // These values are set from FAWE before loading @Final - public static String PLATFORM = null; // These values are set from FAWE before loading + public String PLATFORM = null; // These values are set from FAWE before loading @Comment("Allow the plugin to update") - public static boolean UPDATE = true; + public boolean UPDATE = true; @Comment("Send anonymous usage statistics to MCStats.org") - public static boolean METRICS = true; + public boolean METRICS = true; @Comment("FAWE will skip chunks when there's not enough memory available") - public static boolean PREVENT_CRASHES = false; + public boolean PREVENT_CRASHES = false; @Comment({ "Set true to enable WorldEdit restrictions per region (e.g. PlotSquared or WorldGuard).", "To be allowed to WorldEdit in a region, users need the appropriate", "fawe. permission. See the Permissions page for supported region plugins." }) - public static boolean REGION_RESTRICTIONS = true; + public boolean REGION_RESTRICTIONS = true; @Comment({ "FAWE will cancel non admin edits when memory consumption exceeds this %", " - Bypass with `/wea` or `//fast` or `fawe.bypass`", " - Disable with 100 or -1." }) - public static int MAX_MEMORY_PERCENT = 95; + public int MAX_MEMORY_PERCENT = 95; + + @Create + public CLIPBOARD CLIPBOARD = null; + @Create + public LIGHTING LIGHTING = null; + @Create + public TICK_LIMITER TICK_LIMITER = null; + @Create + public WEB WEB = null; + @Create + public EXTENT EXTENT = null; + @Create + public EXPERIMENTAL EXPERIMENTAL = null; + @Create + public QUEUE QUEUE = null; + @Create + public HISTORY HISTORY = null; + @Create + public PATHS PATHS = null; @Comment("Paths for various directories") public static final class PATHS { - public static String HISTORY = "history"; - public static String CLIPBOARD = "clipboard"; + public String HISTORY = "history"; + public String CLIPBOARD = "clipboard"; } @Create // This value will be generated automatically - public static ConfigBlock LIMITS = null; + public ConfigBlock LIMITS = null; @Comment({ "The \"default\" limit group affects those without a specific limit permission.", @@ -60,7 +81,7 @@ public class Settings extends Config { "permission node with that limit name (e.g. fawe.limit.newbie )" }) @BlockName("default") // The name for the default block - public static final class LIMITS extends ConfigBlock { + public static class LIMITS extends ConfigBlock { @Comment("Max actions that can be run concurrently (i.e. commands)") public int MAX_ACTIONS = 1; @Comment("Max number of block changes (e.g. by `//set stone`).") @@ -96,11 +117,11 @@ public class Settings extends Config { "1 = Inventory for removing and placing (freebuild)", "2 = Inventory for placing (survival)", }) - public static int INVENTORY_MODE = 0; + public int INVENTORY_MODE = 0; @Comment({ "Place chunks instead of individual blocks" }) - public static boolean FAST_PLACEMENT = true; + public boolean FAST_PLACEMENT = true; } public static class HISTORY { @@ -111,18 +132,18 @@ public class Settings extends Config { " - Unlimited undo", " - Enables the rollback command" }) - public static boolean USE_DISK = true; + public boolean USE_DISK = true; @Comment({ "Use a database to store disk storage summaries:", " - Faster lookups and rollback from disk", }) - public static boolean USE_DATABASE = true; + public boolean USE_DATABASE = true; @Comment({ "Record history with dispatching:", " - Faster as it avoids duplicate block checks", " - Worse compression since dispatch order is different" }) - public static boolean COMBINE_STAGES = true; + public boolean COMBINE_STAGES = true; @Comment({ "Higher compression reduces the size of history at the expense of CPU", "0 = Uncompressed byte array (fastest)", @@ -137,12 +158,12 @@ public class Settings extends Config { "9 = 1 x high, 1 x medium, 3 x fast (best compression)", "NOTE: If using disk, do some compression (3+) as smaller files save faster" }) - public static int COMPRESSION_LEVEL = 3; + public int COMPRESSION_LEVEL = 3; @Comment({ "The buffer size for compression:", " - Larger = better ratio but uses more upfront memory" }) - public static int BUFFER_SIZE = 531441; + public int BUFFER_SIZE = 531441; @Comment({ @@ -161,46 +182,48 @@ public class Settings extends Config { " or increase chunk-wait-ms.", "A value of 0 is faster simply because it doesn't bother loading the chunks or waiting.", }) - public static int CHUNK_WAIT_MS = 1000; + public int CHUNK_WAIT_MS = 1000; @Comment("Delete history on disk after a number of days") - public static int DELETE_AFTER_DAYS = 7; + public int DELETE_AFTER_DAYS = 7; @Comment("Delete history in memory on logout (does not effect disk)") - public static boolean DELETE_ON_LOGOUT = true; + public boolean DELETE_ON_LOGOUT = true; @Comment({ "If history should be enabled by default for plugins using WorldEdit:", " - It is faster to have disabled", " - Use of the FAWE API will not be effected" }) - public static boolean ENABLE_FOR_CONSOLE = true; + public boolean ENABLE_FOR_CONSOLE = true; @Comment({ "Should redo information be stored:", " - History is about 20% larger", " - Enables use of /redo", }) - public static boolean STORE_REDO = true; + public boolean STORE_REDO = true; @Comment({ "Assumes all edits are smaller than 4096x256x4096:", " - Reduces history size by ~10%", }) - public static boolean SMALL_EDITS = false; + public boolean SMALL_EDITS = false; } public static class QUEUE { + @Create + public static PROGRESS PROGRESS = null; @Comment({ "If no blocks from completed edits are queued, and if the global queue has more available ", "chunks to place from still-processing edits than the target size setting, it will begin", "placing available blocks from edits still in the preprocessing stage." }) - public static int TARGET_SIZE = 64; + public int TARGET_SIZE = 64; @Comment({ "This should equal the number of processors you have" }) - public static int PARALLEL_THREADS = Math.max(1, Runtime.getRuntime().availableProcessors()); + public int PARALLEL_THREADS = Math.max(1, Runtime.getRuntime().availableProcessors()); @Comment({ "The time in milliseconds that the global queue can be idle before it is forced to start", "on edits which are still in the preprocessing stage." }) - public static int MAX_WAIT_MS = 1000; + public int MAX_WAIT_MS = 1000; @Comment({ "Increase or decrease queue intensity (0 = balance of performance / stability)", @@ -208,7 +231,7 @@ public class Settings extends Config { "will probably cause the server to freeze, and decreasing it (negative value)", "may reduce load on the server but should not be necessary." }) - public static int EXTRA_TIME_MS = 0; + public int EXTRA_TIME_MS = 0; @Comment({ "Discard edits which have been idle for a certain amount of time (ms) (e.g. a plugin creates", @@ -218,9 +241,9 @@ public class Settings extends Config { public static class PROGRESS { @Comment("Display constant titles about the progress of a user's edit") - public static boolean DISPLAY = false; + public boolean DISPLAY = false; @Comment("How often edit progress is displayed") - public static int INTERVAL = 1; + public int INTERVAL = 1; } } @@ -229,41 +252,41 @@ public class Settings extends Config { @Comment({ "Directly modify the region files.", }) - public static boolean ANVIL_QUEUE_MODE = false; + public boolean ANVIL_QUEUE_MODE = false; } public static class WEB { @Comment("I am already hosting a web interface for you here") - public static String URL = "http://empcraft.com/fawe/"; + public String URL = "http://empcraft.com/fawe/"; } public static class EXTENT { @Comment({ "Don't bug console when these plugins slow down WorldEdit operations" }) - public static List ALLOWED_PLUGINS = new ArrayList<>(); + public List ALLOWED_PLUGINS = new ArrayList<>(); @Comment("Disable the messages completely") - public static boolean DEBUG = true; + public boolean DEBUG = true; } @Comment("Generic tick limiter (not necessarily WorldEdit related, but useful to stop abuse)") public static class TICK_LIMITER { @Comment("Enable the limiter") - public static boolean ENABLED = true; + public boolean ENABLED = true; @Comment("The interval in ticks") - public static int INTERVAL = 1; + public int INTERVAL = 1; @Comment("Max falling blocks per interval (per chunk)") - public static int FALLING = 512; + public int FALLING = 512; @Comment("Max physics per interval (per chunk)") - public static int PHYSICS = 512; + public int PHYSICS = 512; @Comment("Max item spawns per interval (per chunk)") - public static int ITEMS = 128; + public int ITEMS = 128; } public static class CLIPBOARD { @Comment("Store the clipboard on disk instead of memory") - public static boolean USE_DISK = true; + public boolean USE_DISK = true; @Comment({ "Compress the clipboard to reduce the size:", " - TODO: Buffered random access with compression is not implemented on disk yet", @@ -271,16 +294,16 @@ public class Settings extends Config { " - 1 = Fast compression", " - 2-17 = Slower compression" }) - public static int COMPRESSION_LEVEL = 1; + public int COMPRESSION_LEVEL = 1; @Comment("Number of days to keep history on disk before deleting it") - public static int DELETE_AFTER_DAYS = 1; + public int DELETE_AFTER_DAYS = 1; } public static class LIGHTING { @Comment({ "If packet sending should be delayed until relight is finished", }) - public static boolean DELAY_PACKET_SENDING = true; + public boolean DELAY_PACKET_SENDING = true; @Comment({ "The relighting mode to use:", " - 0 = None (Do no relighting)", @@ -290,18 +313,15 @@ public class Settings extends Config { public static int MODE = 1; } - public static void save(File file) { - save(file, Settings.class); - } - - public static void load(File file) { - load(file, Settings.class); + public void reload(File file) { + load(file); + save(file); if (HISTORY.USE_DISK) { LocalSession.MAX_HISTORY_SIZE = Integer.MAX_VALUE; } } - public static FaweLimit getLimit(FawePlayer player) { + public FaweLimit getLimit(FawePlayer player) { FaweLimit limit; if (player.hasWorldEditBypass()) { limit = FaweLimit.MAX.copy(); diff --git a/core/src/main/java/com/boydti/fawe/database/RollbackDatabase.java b/core/src/main/java/com/boydti/fawe/database/RollbackDatabase.java index 68cce46b..ca791a5a 100644 --- a/core/src/main/java/com/boydti/fawe/database/RollbackDatabase.java +++ b/core/src/main/java/com/boydti/fawe/database/RollbackDatabase.java @@ -50,7 +50,7 @@ public class RollbackDatabase { this.prefix = ""; this.worldName = Fawe.imp().getWorldName(world); this.world = world; - this.dbLocation = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.PATHS.HISTORY + File.separator + Fawe.imp().getWorldName(world) + File.separator + "summary.db"); + this.dbLocation = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.IMP.PATHS.HISTORY + File.separator + Fawe.imp().getWorldName(world) + File.separator + "summary.db"); connection = openConnection(); CREATE_TABLE = "CREATE TABLE IF NOT EXISTS `" + prefix + "edits` (`player` BLOB(16) NOT NULL,`id` INT NOT NULL,`x1` INT NOT NULL,`y1` INT NOT NULL,`z1` INT NOT NULL,`x2` INT NOT NULL,`y2` INT NOT NULL,`z2` INT NOT NULL,`time` INT NOT NULL, PRIMARY KEY (player, id))"; INSERT_EDIT = "INSERT OR REPLACE INTO `" + prefix + "edits` (`player`,`id`,`x1`,`y1`,`z1`,`x2`,`y2`,`z2`,`time`) VALUES(?,?,?,?,?,?,?,?,?)"; @@ -61,7 +61,7 @@ public class RollbackDatabase { DELETE_EDITS_USER = "DELETE FROM `" + prefix + "edits` WHERE `x2`>=? AND `x1`<=? AND `y2`>=? AND `y1`<=? AND `z2`>=? AND `z1`<=? AND `time`>? AND `player`=?"; DELETE_EDIT_USER = "DELETE FROM `" + prefix + "edits` WHERE `player`=? AND `id`=?"; init(); - purge((int) TimeUnit.DAYS.toMillis(Settings.HISTORY.DELETE_AFTER_DAYS)); + purge((int) TimeUnit.DAYS.toMillis(Settings.IMP.HISTORY.DELETE_AFTER_DAYS)); TaskManager.IMP.async(new Runnable() { @Override public void run() { diff --git a/core/src/main/java/com/boydti/fawe/example/MappedFaweQueue.java b/core/src/main/java/com/boydti/fawe/example/MappedFaweQueue.java index 90a861b1..81d88ee3 100644 --- a/core/src/main/java/com/boydti/fawe/example/MappedFaweQueue.java +++ b/core/src/main/java/com/boydti/fawe/example/MappedFaweQueue.java @@ -38,13 +38,13 @@ public abstract class MappedFaweQueue extends FaweQueue { public MappedFaweQueue(final String world) { super(world); - map = Settings.PREVENT_CRASHES ? new WeakFaweQueueMap(this) : new DefaultFaweQueueMap(this); + map = Settings.IMP.PREVENT_CRASHES ? new WeakFaweQueueMap(this) : new DefaultFaweQueueMap(this); } public MappedFaweQueue(final String world, IFaweQueueMap map) { super(world); if (map == null) { - map = Settings.PREVENT_CRASHES ? new WeakFaweQueueMap(this) : new DefaultFaweQueueMap(this); + map = Settings.IMP.PREVENT_CRASHES ? new WeakFaweQueueMap(this) : new DefaultFaweQueueMap(this); } this.map = map; } @@ -52,7 +52,7 @@ public abstract class MappedFaweQueue extends FaweQueue { public MappedFaweQueue(final World world, IFaweQueueMap map) { super(world); if (map == null) { - map = Settings.PREVENT_CRASHES ? new WeakFaweQueueMap(this) : new DefaultFaweQueueMap(this); + map = Settings.IMP.PREVENT_CRASHES ? new WeakFaweQueueMap(this) : new DefaultFaweQueueMap(this); } this.map = map; } @@ -281,9 +281,9 @@ public abstract class MappedFaweQueue extends FaweQueue { boolean sync = Thread.currentThread() == Fawe.get().getMainThread(); if (sync) { loadChunk(getWorld(), cx, cz, true); - } else if (Settings.HISTORY.CHUNK_WAIT_MS > 0) { + } else if (Settings.IMP.HISTORY.CHUNK_WAIT_MS > 0) { loadChunk.value = new IntegerPair(cx, cz); - TaskManager.IMP.syncWhenFree(loadChunk, Settings.HISTORY.CHUNK_WAIT_MS); + TaskManager.IMP.syncWhenFree(loadChunk, Settings.IMP.HISTORY.CHUNK_WAIT_MS); if (!isChunkLoaded(cx, cz)) { throw new FaweException.FaweChunkLoadException(); } diff --git a/core/src/main/java/com/boydti/fawe/example/NMSMappedFaweQueue.java b/core/src/main/java/com/boydti/fawe/example/NMSMappedFaweQueue.java index 9b5b1b18..90837a73 100644 --- a/core/src/main/java/com/boydti/fawe/example/NMSMappedFaweQueue.java +++ b/core/src/main/java/com/boydti/fawe/example/NMSMappedFaweQueue.java @@ -50,7 +50,7 @@ public abstract class NMSMappedFaweQueue ex } } - private final Relighter relighter = Settings.LIGHTING.MODE > 0 ? new NMSRelighter(this) : NullRelighter.INSTANCE; + private final Relighter relighter = Settings.IMP.LIGHTING.MODE > 0 ? new NMSRelighter(this) : NullRelighter.INSTANCE; @Override public Relighter getRelighter() { @@ -60,11 +60,11 @@ public abstract class NMSMappedFaweQueue ex @Override public void end(FaweChunk chunk) { super.end(chunk); - if (Settings.LIGHTING.MODE == 0) { + if (Settings.IMP.LIGHTING.MODE == 0 || !Settings.IMP.LIGHTING.DELAY_PACKET_SENDING) { sendChunk(chunk); return; } - if (Settings.LIGHTING.MODE == 2) { + if (Settings.IMP.LIGHTING.MODE == 2) { relighter.addChunk(chunk.getX(), chunk.getZ(), null, chunk.getBitMask()); return; } diff --git a/core/src/main/java/com/boydti/fawe/jnbt/CorruptSchematicStreamer.java b/core/src/main/java/com/boydti/fawe/jnbt/CorruptSchematicStreamer.java index 85fdd7df..16e3a391 100644 --- a/core/src/main/java/com/boydti/fawe/jnbt/CorruptSchematicStreamer.java +++ b/core/src/main/java/com/boydti/fawe/jnbt/CorruptSchematicStreamer.java @@ -85,9 +85,9 @@ public class CorruptSchematicStreamer { if (width.get() == 0 || height.get() == 0 || length.get() == 0) { Fawe.debug("No dimensions found! Estimating based on factors:" + dimensions); } - if (Settings.CLIPBOARD.USE_DISK) { + if (Settings.IMP.CLIPBOARD.USE_DISK) { fc = new DiskOptimizedClipboard(dimensions.getBlockX(), dimensions.getBlockY(), dimensions.getBlockZ(), uuid); - } else if (Settings.CLIPBOARD.COMPRESSION_LEVEL == 0) { + } else if (Settings.IMP.CLIPBOARD.COMPRESSION_LEVEL == 0) { fc = new CPUOptimizedClipboard(dimensions.getBlockX(), dimensions.getBlockY(), dimensions.getBlockZ()); } else { fc = new MemoryOptimizedClipboard(dimensions.getBlockX(), dimensions.getBlockY(), dimensions.getBlockZ()); diff --git a/core/src/main/java/com/boydti/fawe/jnbt/SchematicStreamer.java b/core/src/main/java/com/boydti/fawe/jnbt/SchematicStreamer.java index 41aa4283..c943584b 100644 --- a/core/src/main/java/com/boydti/fawe/jnbt/SchematicStreamer.java +++ b/core/src/main/java/com/boydti/fawe/jnbt/SchematicStreamer.java @@ -167,9 +167,9 @@ public class SchematicStreamer extends NBTStreamer { } return fc; } - if (Settings.CLIPBOARD.USE_DISK) { + if (Settings.IMP.CLIPBOARD.USE_DISK) { return fc = new DiskOptimizedClipboard(size, 1, 1, uuid); - } else if (Settings.CLIPBOARD.COMPRESSION_LEVEL == 0) { + } else if (Settings.IMP.CLIPBOARD.COMPRESSION_LEVEL == 0) { return fc = new CPUOptimizedClipboard(size, 1, 1); } else { return fc = new MemoryOptimizedClipboard(size, 1, 1); diff --git a/core/src/main/java/com/boydti/fawe/jnbt/anvil/MCAFile.java b/core/src/main/java/com/boydti/fawe/jnbt/anvil/MCAFile.java index 370fa96e..197960dc 100644 --- a/core/src/main/java/com/boydti/fawe/jnbt/anvil/MCAFile.java +++ b/core/src/main/java/com/boydti/fawe/jnbt/anvil/MCAFile.java @@ -298,7 +298,12 @@ public class MCAFile { raf.write((offsetMedium >> 8)); raf.write((offsetMedium >> 0)); raf.write(sizeByte); - + raf.seek(i + 4096); + if (offsetMedium == 0 && sizeByte == 0) { + raf.writeInt(0); + } else { + raf.writeInt((int) (System.currentTimeMillis() / 1000L)); + } int offset = (((locations[i] & 0xFF) << 16) + ((locations[i + 1] & 0xFF) << 8) + ((locations[i+ 2] & 0xFF))) << 12; int size = (locations[i + 3] & 0xFF) << 12; } diff --git a/core/src/main/java/com/boydti/fawe/logging/LoggingChangeSet.java b/core/src/main/java/com/boydti/fawe/logging/LoggingChangeSet.java index 3f5c04b1..ce8cba1c 100644 --- a/core/src/main/java/com/boydti/fawe/logging/LoggingChangeSet.java +++ b/core/src/main/java/com/boydti/fawe/logging/LoggingChangeSet.java @@ -5,6 +5,7 @@ import com.boydti.fawe.FaweCache; import com.boydti.fawe.object.FawePlayer; import com.boydti.fawe.object.changeset.AbstractDelegateChangeSet; import com.boydti.fawe.object.changeset.FaweChangeSet; +import java.lang.reflect.Constructor; import org.bukkit.entity.Player; import org.primesoft.blockshub.IBlocksHubApi; import org.primesoft.blockshub.api.IPlayer; @@ -12,6 +13,10 @@ import org.primesoft.blockshub.api.IWorld; public class LoggingChangeSet extends AbstractDelegateChangeSet { + public static void main(String[] args) { + + } + private static boolean initialized = false; public static FaweChangeSet wrap(FawePlayer player, FaweChangeSet parent) { @@ -29,13 +34,24 @@ public class LoggingChangeSet extends AbstractDelegateChangeSet { private final MutableVector loc; private final IPlayer player; - private final IWorld world; + private IWorld world; private final MutableBlockData oldBlock; private final MutableBlockData newBlock; private LoggingChangeSet(FawePlayer player, FaweChangeSet parent) { super(parent); - this.world = api.getWorld(player.getLocation().world); + String world = player.getLocation().world; + try { + Class classBukkitWorld = Class.forName("org.primesoft.blockshub.platform.bukkit.BukkitWorld"); + Class classAsyncWorld = Class.forName("com.boydti.fawe.bukkit.wrapper.AsyncWorld"); + Object asyncWorld = classAsyncWorld.getConstructor(String.class, boolean.class).newInstance(world, false); + Constructor constructor = classBukkitWorld.getDeclaredConstructors()[0]; + constructor.setAccessible(true); + this.world = (IWorld) constructor.newInstance(asyncWorld); + } catch (Throwable ignore) { + ignore.printStackTrace(); + this.world = api.getWorld(world); + } this.loc = new MutableVector(); this.oldBlock = new MutableBlockData(); this.newBlock = new MutableBlockData(); diff --git a/core/src/main/java/com/boydti/fawe/object/FawePlayer.java b/core/src/main/java/com/boydti/fawe/object/FawePlayer.java index 3bc60bb4..a20f8dc9 100644 --- a/core/src/main/java/com/boydti/fawe/object/FawePlayer.java +++ b/core/src/main/java/com/boydti/fawe/object/FawePlayer.java @@ -100,7 +100,7 @@ public abstract class FawePlayer extends Metadatable { public FawePlayer(final T parent) { this.parent = parent; Fawe.get().register(this); - if (Settings.CLIPBOARD.USE_DISK) { + if (Settings.IMP.CLIPBOARD.USE_DISK) { loadClipboardFromDisk(); } } @@ -205,7 +205,7 @@ public abstract class FawePlayer extends Metadatable { * - Should already be called if history on disk is enabled */ public void loadClipboardFromDisk() { - File file = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.PATHS.CLIPBOARD + File.separator + getUUID() + ".bd"); + File file = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.IMP.PATHS.CLIPBOARD + File.separator + getUUID() + ".bd"); try { if (file.exists() && file.length() > 5) { DiskOptimizedClipboard doc = new DiskOptimizedClipboard(file); @@ -280,7 +280,7 @@ public abstract class FawePlayer extends Metadatable { * @return */ public FaweLimit getLimit() { - return Settings.getLimit(this); + return Settings.IMP.getLimit(this); } /** @@ -420,7 +420,7 @@ public abstract class FawePlayer extends Metadatable { * - Usually called on logout */ public void unregister() { - if (Settings.HISTORY.DELETE_ON_LOGOUT) { + if (Settings.IMP.HISTORY.DELETE_ON_LOGOUT) { session = getSession(); WorldEdit.getInstance().removeSession(getPlayer()); session.setClipboard(null); diff --git a/core/src/main/java/com/boydti/fawe/object/FaweQueue.java b/core/src/main/java/com/boydti/fawe/object/FaweQueue.java index 3882a697..363de060 100644 --- a/core/src/main/java/com/boydti/fawe/object/FaweQueue.java +++ b/core/src/main/java/com/boydti/fawe/object/FaweQueue.java @@ -41,6 +41,7 @@ public abstract class FaweQueue { private RunnableVal2 changeTask; private RunnableVal2 progressTask; private SetQueue.QueueStage stage; + private Settings settings = Settings.IMP; public FaweQueue(String world) { this.world = world; @@ -69,6 +70,14 @@ public abstract class FaweQueue { ALL, } + public Settings getSettings() { + return settings; + } + + public void setSettings(Settings settings) { + this.settings = settings == null ? Settings.IMP : settings; + } + public void setWorld(String world) { this.world = world; this.weWorld = null; @@ -300,7 +309,7 @@ public abstract class FaweQueue { @Deprecated public boolean next() { - int amount = Settings.QUEUE.PARALLEL_THREADS; + int amount = Settings.IMP.QUEUE.PARALLEL_THREADS; ExecutorCompletionService service = SetQueue.IMP.getCompleterService(); long time = 20; // 30ms return next(amount, service, time); diff --git a/core/src/main/java/com/boydti/fawe/object/brush/InspectBrush.java b/core/src/main/java/com/boydti/fawe/object/brush/InspectBrush.java index 77c3f290..4972296a 100644 --- a/core/src/main/java/com/boydti/fawe/object/brush/InspectBrush.java +++ b/core/src/main/java/com/boydti/fawe/object/brush/InspectBrush.java @@ -62,7 +62,7 @@ public class InspectBrush extends BrushTool implements DoubleActionTraceTool { player.print(BBC.getPrefix() + BBC.NO_PERM.f("worldedit.tool.inspect")); return false; } - if (!Settings.HISTORY.USE_DATABASE) { + if (!Settings.IMP.HISTORY.USE_DATABASE) { player.print(BBC.getPrefix() + BBC.SETTING_DISABLE.f("history.use-database")); return false; } diff --git a/core/src/main/java/com/boydti/fawe/object/changeset/AbstractDelegateChangeSet.java b/core/src/main/java/com/boydti/fawe/object/changeset/AbstractDelegateChangeSet.java index eddfa0f7..ede6ff8d 100644 --- a/core/src/main/java/com/boydti/fawe/object/changeset/AbstractDelegateChangeSet.java +++ b/core/src/main/java/com/boydti/fawe/object/changeset/AbstractDelegateChangeSet.java @@ -1,6 +1,9 @@ package com.boydti.fawe.object.changeset; +import com.boydti.fawe.object.FawePlayer; +import com.boydti.fawe.object.FaweQueue; import com.sk89q.jnbt.CompoundTag; +import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.Vector; import com.sk89q.worldedit.blocks.BaseBlock; import com.sk89q.worldedit.extent.inventory.BlockBag; @@ -10,7 +13,6 @@ import com.sk89q.worldedit.history.change.EntityCreate; import com.sk89q.worldedit.history.change.EntityRemove; import com.sk89q.worldedit.world.World; import java.util.Iterator; -import java.util.UUID; public class AbstractDelegateChangeSet extends FaweChangeSet { public final FaweChangeSet parent; @@ -24,8 +26,14 @@ public class AbstractDelegateChangeSet extends FaweChangeSet { return parent; } - public static FaweChangeSet getDefaultChangeSet(World world, UUID uuid) { - return FaweChangeSet.getDefaultChangeSet(world, uuid); + @Override + public String getWorldName() { + return parent.getWorldName(); + } + + @Override + public World getWorld() { + return parent.getWorld(); } @Override @@ -93,6 +101,11 @@ public class AbstractDelegateChangeSet extends FaweChangeSet { parent.delete(); } + @Override + public EditSession toEditSession(FawePlayer player) { + return parent.toEditSession(player); + } + @Override public void add(EntityCreate change) { parent.add(change); @@ -123,8 +136,18 @@ public class AbstractDelegateChangeSet extends FaweChangeSet { parent.add(x, y, z, from, to); } + @Override + public boolean isEmpty() { + return parent.isEmpty(); + } + @Override public void add(int x, int y, int z, int combinedFrom, BaseBlock to) { parent.add(x, y, z, combinedFrom, to); } + + @Override + public void addChangeTask(FaweQueue queue) { + parent.addChangeTask(queue); + } } diff --git a/core/src/main/java/com/boydti/fawe/object/changeset/DiskStorageHistory.java b/core/src/main/java/com/boydti/fawe/object/changeset/DiskStorageHistory.java index be16a5fe..8d0eb534 100644 --- a/core/src/main/java/com/boydti/fawe/object/changeset/DiskStorageHistory.java +++ b/core/src/main/java/com/boydti/fawe/object/changeset/DiskStorageHistory.java @@ -71,7 +71,7 @@ public class DiskStorageHistory extends FaweStreamChangeSet { } private void init(UUID uuid, String worldName) { - File folder = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.PATHS.HISTORY + File.separator + worldName + File.separator + uuid); + File folder = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.IMP.PATHS.HISTORY + File.separator + worldName + File.separator + uuid); int max = 0; if (folder.exists()) { for (File file : folder.listFiles()) { @@ -122,14 +122,14 @@ public class DiskStorageHistory extends FaweStreamChangeSet { private void init(UUID uuid, int i) { this.uuid = uuid; this.index = i; - File folder = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.PATHS.HISTORY + File.separator + Fawe.imp().getWorldName(getWorld()) + File.separator + uuid); + File folder = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.IMP.PATHS.HISTORY + File.separator + Fawe.imp().getWorldName(getWorld()) + File.separator + uuid); initFiles(folder); } public void delete() { Fawe.debug("Deleting history: " + Fawe.imp().getWorldName(getWorld()) + "/" + uuid + "/" + index); deleteFiles(); - if (Settings.HISTORY.USE_DATABASE) { + if (Settings.IMP.HISTORY.USE_DATABASE) { RollbackDatabase db = DBHandler.IMP.getDatabase(getWorld()); db.delete(uuid, index); } @@ -348,7 +348,7 @@ public class DiskStorageHistory extends FaweStreamChangeSet { } byte[] buffer = new byte[9]; int i = 0; - int amount = (Settings.HISTORY.BUFFER_SIZE - HEADER_SIZE) / 9; + int amount = (Settings.IMP.HISTORY.BUFFER_SIZE - HEADER_SIZE) / 9; while (!shallow && ++i < amount) { if (gis.read(buffer) == -1) { fis.close(); diff --git a/core/src/main/java/com/boydti/fawe/object/changeset/FaweChangeSet.java b/core/src/main/java/com/boydti/fawe/object/changeset/FaweChangeSet.java index 3404ff4d..1922d589 100644 --- a/core/src/main/java/com/boydti/fawe/object/changeset/FaweChangeSet.java +++ b/core/src/main/java/com/boydti/fawe/object/changeset/FaweChangeSet.java @@ -35,13 +35,13 @@ public abstract class FaweChangeSet implements ChangeSet { private final String worldName; private final boolean mainThread; private final int layers; - private AtomicInteger waitingCombined = new AtomicInteger(0); - private AtomicInteger waitingAsync = new AtomicInteger(0); - private Object lockCombined = new Object(); - private Object lockAsync = new Object(); + protected final AtomicInteger waitingCombined = new AtomicInteger(0); + private final AtomicInteger waitingAsync = new AtomicInteger(0); +// private Object lockCombined = new Object(); +// private Object lockAsync = new Object(); public static FaweChangeSet getDefaultChangeSet(World world, UUID uuid) { - if (Settings.HISTORY.USE_DISK) { + if (Settings.IMP.HISTORY.USE_DISK) { return new DiskStorageHistory(world, uuid); } else { return new MemoryOptimizedHistory(world); @@ -76,8 +76,8 @@ public abstract class FaweChangeSet implements ChangeSet { @Override public void run() { waitingAsync.decrementAndGet(); - synchronized (lockAsync) { - lockAsync.notifyAll(); + synchronized (waitingAsync) { + waitingAsync.notifyAll(); } flush(); } @@ -89,14 +89,14 @@ public abstract class FaweChangeSet implements ChangeSet { try { if (!Fawe.isMainThread()) { while (waitingAsync.get() > 0) { - synchronized (lockAsync) { - lockAsync.wait(1000); + synchronized (waitingAsync) { + waitingAsync.wait(1000); } } } while (waitingCombined.get() > 0) { - synchronized (lockCombined) { - lockCombined.wait(1000); + synchronized (waitingCombined) { + waitingCombined.wait(1000); } } } catch (InterruptedException e) { @@ -263,7 +263,7 @@ public abstract class FaweChangeSet implements ChangeSet { default: char combinedIdPrevious = previousLayer != null ? previousLayer[index] : 0; if (combinedIdCurrent != combinedIdPrevious) { - synchronized (lockCombined) { + synchronized (this) { add(xx, yy, zz, combinedIdPrevious, combinedIdCurrent); } } @@ -277,14 +277,14 @@ public abstract class FaweChangeSet implements ChangeSet { // Tiles created Map tiles = next.getTiles(); for (Map.Entry entry : tiles.entrySet()) { - synchronized (lockCombined) { + synchronized (this) { addTileCreate(entry.getValue()); } } // Tiles removed tiles = previous.getTiles(); for (Map.Entry entry : tiles.entrySet()) { - synchronized (lockCombined) { + synchronized (this) { addTileRemove(entry.getValue()); } } @@ -294,14 +294,14 @@ public abstract class FaweChangeSet implements ChangeSet { // Entities created Set entities = next.getEntities(); for (CompoundTag entityTag : entities) { - synchronized (lockCombined) { + synchronized (this) { addEntityCreate(entityTag); } } // Entities removed entities = previous.getEntities(); for (CompoundTag entityTag : entities) { - synchronized (lockCombined) { + synchronized (this) { addEntityRemove(entityTag); } } diff --git a/core/src/main/java/com/boydti/fawe/object/changeset/FaweStreamChangeSet.java b/core/src/main/java/com/boydti/fawe/object/changeset/FaweStreamChangeSet.java index 623858bf..c6282b56 100644 --- a/core/src/main/java/com/boydti/fawe/object/changeset/FaweStreamChangeSet.java +++ b/core/src/main/java/com/boydti/fawe/object/changeset/FaweStreamChangeSet.java @@ -32,11 +32,11 @@ public abstract class FaweStreamChangeSet extends FaweChangeSet { private FaweStreamPositionDelegate posDel; public FaweStreamChangeSet(World world) { - this(world, Settings.HISTORY.COMPRESSION_LEVEL, Settings.HISTORY.STORE_REDO, Settings.HISTORY.SMALL_EDITS); + this(world, Settings.IMP.HISTORY.COMPRESSION_LEVEL, Settings.IMP.HISTORY.STORE_REDO, Settings.IMP.HISTORY.SMALL_EDITS); } public FaweStreamChangeSet(String world) { - this(world, Settings.HISTORY.COMPRESSION_LEVEL, Settings.HISTORY.STORE_REDO, Settings.HISTORY.SMALL_EDITS); + this(world, Settings.IMP.HISTORY.COMPRESSION_LEVEL, Settings.IMP.HISTORY.STORE_REDO, Settings.IMP.HISTORY.SMALL_EDITS); } public FaweStreamChangeSet(String world, int compression, boolean storeRedo, boolean smallLoc) { @@ -376,8 +376,10 @@ public abstract class FaweStreamChangeSet extends FaweChangeSet { idDel.readCombined(is, change, dir); return change; } catch (EOFException ignoreOEF) { + ignoreOEF.printStackTrace(); return null; } catch (Exception e) { + e.printStackTrace(); MainUtil.handleError(e); } return null; diff --git a/core/src/main/java/com/boydti/fawe/object/changeset/MemoryOptimizedHistory.java b/core/src/main/java/com/boydti/fawe/object/changeset/MemoryOptimizedHistory.java index b8595d84..5ad7557c 100644 --- a/core/src/main/java/com/boydti/fawe/object/changeset/MemoryOptimizedHistory.java +++ b/core/src/main/java/com/boydti/fawe/object/changeset/MemoryOptimizedHistory.java @@ -118,7 +118,7 @@ public class MemoryOptimizedHistory extends FaweStreamChangeSet { } synchronized (this) { setOrigin(x, z); - idsStream = new FastByteArrayOutputStream(Settings.HISTORY.BUFFER_SIZE); + idsStream = new FastByteArrayOutputStream(Settings.IMP.HISTORY.BUFFER_SIZE); idsStreamZip = getCompressedOS(idsStream); writeHeader(idsStreamZip, x, y, z); return idsStreamZip; @@ -140,7 +140,7 @@ public class MemoryOptimizedHistory extends FaweStreamChangeSet { if (entCStreamZip != null) { return entCStreamZip; } - entCStream = new FastByteArrayOutputStream(Settings.HISTORY.BUFFER_SIZE); + entCStream = new FastByteArrayOutputStream(Settings.IMP.HISTORY.BUFFER_SIZE); return entCStreamZip = new NBTOutputStream(getCompressedOS(entCStream)); } @@ -149,7 +149,7 @@ public class MemoryOptimizedHistory extends FaweStreamChangeSet { if (entRStreamZip != null) { return entRStreamZip; } - entRStream = new FastByteArrayOutputStream(Settings.HISTORY.BUFFER_SIZE); + entRStream = new FastByteArrayOutputStream(Settings.IMP.HISTORY.BUFFER_SIZE); return entRStreamZip = new NBTOutputStream(getCompressedOS(entRStream)); } @@ -158,7 +158,7 @@ public class MemoryOptimizedHistory extends FaweStreamChangeSet { if (tileCStreamZip != null) { return tileCStreamZip; } - tileCStream = new FastByteArrayOutputStream(Settings.HISTORY.BUFFER_SIZE); + tileCStream = new FastByteArrayOutputStream(Settings.IMP.HISTORY.BUFFER_SIZE); return tileCStreamZip = new NBTOutputStream(getCompressedOS(tileCStream)); } @@ -167,7 +167,7 @@ public class MemoryOptimizedHistory extends FaweStreamChangeSet { if (tileRStreamZip != null) { return tileRStreamZip; } - tileRStream = new FastByteArrayOutputStream(Settings.HISTORY.BUFFER_SIZE); + tileRStream = new FastByteArrayOutputStream(Settings.IMP.HISTORY.BUFFER_SIZE); return tileRStreamZip = new NBTOutputStream(getCompressedOS(tileRStream)); } diff --git a/core/src/main/java/com/boydti/fawe/object/clipboard/DiskOptimizedClipboard.java b/core/src/main/java/com/boydti/fawe/object/clipboard/DiskOptimizedClipboard.java index b7bf53c7..08bf60c0 100644 --- a/core/src/main/java/com/boydti/fawe/object/clipboard/DiskOptimizedClipboard.java +++ b/core/src/main/java/com/boydti/fawe/object/clipboard/DiskOptimizedClipboard.java @@ -58,7 +58,7 @@ public class DiskOptimizedClipboard extends FaweClipboard implements Closeable { private int last; public DiskOptimizedClipboard(int width, int height, int length, UUID uuid) { - this(width, height, length, MainUtil.getFile(Fawe.imp().getDirectory(), Settings.PATHS.CLIPBOARD + File.separator + uuid + ".bd")); + this(width, height, length, MainUtil.getFile(Fawe.imp().getDirectory(), Settings.IMP.PATHS.CLIPBOARD + File.separator + uuid + ".bd")); } public DiskOptimizedClipboard(File file) { @@ -183,7 +183,7 @@ public class DiskOptimizedClipboard extends FaweClipboard implements Closeable { } public DiskOptimizedClipboard(int width, int height, int length) { - this(width, height, length, MainUtil.getFile(Fawe.imp().getDirectory(), Settings.PATHS.CLIPBOARD + File.separator + UUID.randomUUID() + ".bd")); + this(width, height, length, MainUtil.getFile(Fawe.imp().getDirectory(), Settings.IMP.PATHS.CLIPBOARD + File.separator + UUID.randomUUID() + ".bd")); } public void close() { diff --git a/core/src/main/java/com/boydti/fawe/object/clipboard/MemoryOptimizedClipboard.java b/core/src/main/java/com/boydti/fawe/object/clipboard/MemoryOptimizedClipboard.java index bb470034..b5ad365a 100644 --- a/core/src/main/java/com/boydti/fawe/object/clipboard/MemoryOptimizedClipboard.java +++ b/core/src/main/java/com/boydti/fawe/object/clipboard/MemoryOptimizedClipboard.java @@ -59,7 +59,7 @@ public class MemoryOptimizedClipboard extends FaweClipboard { private int compressionLevel; public MemoryOptimizedClipboard(int width, int height, int length) { - this(width, height, length, Settings.CLIPBOARD.COMPRESSION_LEVEL); + this(width, height, length, Settings.IMP.CLIPBOARD.COMPRESSION_LEVEL); } public MemoryOptimizedClipboard(int width, int height, int length, int compressionLevel) { diff --git a/core/src/main/java/com/boydti/fawe/object/progress/DefaultProgressTracker.java b/core/src/main/java/com/boydti/fawe/object/progress/DefaultProgressTracker.java index 4781ac75..e4659b41 100644 --- a/core/src/main/java/com/boydti/fawe/object/progress/DefaultProgressTracker.java +++ b/core/src/main/java/com/boydti/fawe/object/progress/DefaultProgressTracker.java @@ -64,7 +64,7 @@ public class DefaultProgressTracker extends RunnableVal2 lastTick + Settings.QUEUE.PROGRESS.INTERVAL) { + if (currentTick > lastTick + Settings.IMP.QUEUE.PROGRESS.INTERVAL) { lastTick = currentTick; TaskManager.IMP.task(new Runnable() { // Run on main thread @Override diff --git a/core/src/main/java/com/boydti/fawe/object/schematic/FaweFormat.java b/core/src/main/java/com/boydti/fawe/object/schematic/FaweFormat.java index df6ae5e2..5a544f75 100644 --- a/core/src/main/java/com/boydti/fawe/object/schematic/FaweFormat.java +++ b/core/src/main/java/com/boydti/fawe/object/schematic/FaweFormat.java @@ -135,7 +135,7 @@ public class FaweFormat implements ClipboardReader, ClipboardWriter { } else { ox = in.readInt(); oz = in.readInt(); - FaweOutputStream tmp = new FaweOutputStream(new FastByteArrayOutputStream(Settings.HISTORY.BUFFER_SIZE)); + FaweOutputStream tmp = new FaweOutputStream(new FastByteArrayOutputStream(Settings.IMP.HISTORY.BUFFER_SIZE)); int width = 0; int height = 0; int length = 0; diff --git a/core/src/main/java/com/boydti/fawe/regions/general/plot/PlotSquaredFeature.java b/core/src/main/java/com/boydti/fawe/regions/general/plot/PlotSquaredFeature.java index 646b7ebe..24ef25cf 100644 --- a/core/src/main/java/com/boydti/fawe/regions/general/plot/PlotSquaredFeature.java +++ b/core/src/main/java/com/boydti/fawe/regions/general/plot/PlotSquaredFeature.java @@ -28,7 +28,7 @@ public class PlotSquaredFeature extends FaweMaskManager { setupBlockQueue(); setupSchematicHandler(); setupChunkManager(); - if (Settings.PLATFORM.equals("Bukkit")) { + if (Settings.PLATFORM.equalsIgnoreCase("bukkit")) { new FaweTrim(); } if (MainCommand.getInstance().getCommand("generatebiome") == null) { diff --git a/core/src/main/java/com/boydti/fawe/util/EditSessionBuilder.java b/core/src/main/java/com/boydti/fawe/util/EditSessionBuilder.java index 2b6dc747..a3133a59 100644 --- a/core/src/main/java/com/boydti/fawe/util/EditSessionBuilder.java +++ b/core/src/main/java/com/boydti/fawe/util/EditSessionBuilder.java @@ -114,7 +114,7 @@ public class EditSessionBuilder { public EditSessionBuilder changeSet(boolean disk, @Nullable UUID uuid, int compression) { if (world == null) { if (disk) { - if (Settings.HISTORY.USE_DATABASE) { + if (Settings.IMP.HISTORY.USE_DATABASE) { this.changeSet = new RollbackOptimizedHistory(worldName, uuid); } else { this.changeSet = new DiskStorageHistory(worldName, uuid); @@ -123,7 +123,7 @@ public class EditSessionBuilder { this.changeSet = new MemoryOptimizedHistory(worldName); } } else if (disk) { - if (Settings.HISTORY.USE_DATABASE) { + if (Settings.IMP.HISTORY.USE_DATABASE) { this.changeSet = new RollbackOptimizedHistory(world, uuid); } else { this.changeSet = new DiskStorageHistory(world, uuid); diff --git a/core/src/main/java/com/boydti/fawe/util/MainUtil.java b/core/src/main/java/com/boydti/fawe/util/MainUtil.java index 99fe11c9..938d34aa 100644 --- a/core/src/main/java/com/boydti/fawe/util/MainUtil.java +++ b/core/src/main/java/com/boydti/fawe/util/MainUtil.java @@ -192,7 +192,7 @@ public class MainUtil { } public static FaweOutputStream getCompressedOS(OutputStream os) throws IOException { - return getCompressedOS(os, Settings.HISTORY.COMPRESSION_LEVEL); + return getCompressedOS(os, Settings.IMP.HISTORY.COMPRESSION_LEVEL); } public static long getSize(ChangeSet changeSet) { @@ -209,7 +209,7 @@ public class MainUtil { } public static FaweOutputStream getCompressedOS(OutputStream os, int amount) throws IOException { - return getCompressedOS(os, amount, Settings.HISTORY.BUFFER_SIZE); + return getCompressedOS(os, amount, Settings.IMP.HISTORY.BUFFER_SIZE); } private static final LZ4Factory FACTORY = LZ4Factory.fastestInstance(); @@ -273,7 +273,7 @@ public class MainUtil { } public static FaweInputStream getCompressedIS(InputStream is) throws IOException { - return getCompressedIS(is, Settings.HISTORY.BUFFER_SIZE); + return getCompressedIS(is, Settings.IMP.HISTORY.BUFFER_SIZE); } public static FaweInputStream getCompressedIS(InputStream is, int buffer) throws IOException { @@ -306,15 +306,15 @@ public class MainUtil { final String website; if (uuid == null) { uuid = UUID.randomUUID(); - website = Settings.WEB.URL + "upload.php?" + uuid; + website = Settings.IMP.WEB.URL + "upload.php?" + uuid; filename = "plot." + extension; } else { - website = Settings.WEB.URL + "save.php?" + uuid; + website = Settings.IMP.WEB.URL + "save.php?" + uuid; filename = file + '.' + extension; } final URL url; try { - url = new URL(Settings.WEB.URL + "?key=" + uuid + "&type=" + extension); + url = new URL(Settings.IMP.WEB.URL + "?key=" + uuid + "&type=" + extension); String boundary = Long.toHexString(System.currentTimeMillis()); URLConnection con = new URL(website).openConnection(); con.setDoOutput(true); diff --git a/core/src/main/java/com/boydti/fawe/util/MemUtil.java b/core/src/main/java/com/boydti/fawe/util/MemUtil.java index 0eee3711..5550bf2a 100644 --- a/core/src/main/java/com/boydti/fawe/util/MemUtil.java +++ b/core/src/main/java/com/boydti/fawe/util/MemUtil.java @@ -35,7 +35,7 @@ public class MemUtil { } final long heapFreeSize = Runtime.getRuntime().freeMemory(); final int size = (int) ((heapFreeSize * 100) / heapMaxSize); - if (size > (100 - Settings.MAX_MEMORY_PERCENT)) { + if (size > (100 - Settings.IMP.MAX_MEMORY_PERCENT)) { memoryPlentifulTask(); return Integer.MAX_VALUE; } diff --git a/core/src/main/java/com/boydti/fawe/util/SetQueue.java b/core/src/main/java/com/boydti/fawe/util/SetQueue.java index cc0a216a..7fa00dea 100644 --- a/core/src/main/java/com/boydti/fawe/util/SetQueue.java +++ b/core/src/main/java/com/boydti/fawe/util/SetQueue.java @@ -73,7 +73,7 @@ public class SetQueue { @Override public void run() { try { - targetTPS = 18 - Math.max(Settings.QUEUE.EXTRA_TIME_MS * 0.05, 0); + targetTPS = 18 - Math.max(Settings.IMP.QUEUE.EXTRA_TIME_MS * 0.05, 0); do { Runnable task = tasks.poll(); if (task != null) { @@ -90,7 +90,7 @@ public class SetQueue { if (!MemUtil.isMemoryFree()) { final int mem = MemUtil.calculateMemory(); if (mem != Integer.MAX_VALUE) { - if ((mem <= 1) && Settings.PREVENT_CRASHES) { + if ((mem <= 1) && Settings.IMP.PREVENT_CRASHES) { for (FaweQueue queue : getAllQueues()) { queue.saveMemory(); } @@ -111,17 +111,17 @@ public class SetQueue { if (Thread.currentThread() != Fawe.get().getMainThread()) { throw new IllegalStateException("This shouldn't be possible for placement to occur off the main thread"); } - long time = Settings.QUEUE.EXTRA_TIME_MS + 50 + Math.min((50 + SetQueue.this.last) - (SetQueue.this.last = System.currentTimeMillis()), SetQueue.this.secondLast - System.currentTimeMillis()); + long time = Settings.IMP.QUEUE.EXTRA_TIME_MS + 50 + Math.min((50 + SetQueue.this.last) - (SetQueue.this.last = System.currentTimeMillis()), SetQueue.this.secondLast - System.currentTimeMillis()); // Disable the async catcher as it can't discern async vs parallel - boolean parallel = Settings.QUEUE.PARALLEL_THREADS > 1; + boolean parallel = Settings.IMP.QUEUE.PARALLEL_THREADS > 1; queue.startSet(parallel); try { - if (!queue.next(Settings.QUEUE.PARALLEL_THREADS, getCompleterService(), time) && queue.getStage() == QueueStage.ACTIVE) { + if (!queue.next(Settings.IMP.QUEUE.PARALLEL_THREADS, getCompleterService(), time) && queue.getStage() == QueueStage.ACTIVE) { queue.setStage(QueueStage.NONE); queue.runTasks(); } } catch (Throwable e) { - pool.awaitQuiescence(Settings.QUEUE.DISCARD_AFTER_MS, TimeUnit.MILLISECONDS); + pool.awaitQuiescence(Settings.IMP.QUEUE.DISCARD_AFTER_MS, TimeUnit.MILLISECONDS); completer = new ExecutorCompletionService(pool); e.printStackTrace(); } @@ -214,11 +214,11 @@ public class SetQueue { } public void flush(FaweQueue queue) { - queue.startSet(Settings.QUEUE.PARALLEL_THREADS > 1); + queue.startSet(Settings.IMP.QUEUE.PARALLEL_THREADS > 1); try { - queue.next(Settings.QUEUE.PARALLEL_THREADS, getCompleterService(), Long.MAX_VALUE); + queue.next(Settings.IMP.QUEUE.PARALLEL_THREADS, getCompleterService(), Long.MAX_VALUE); } catch (Throwable e) { - pool.awaitQuiescence(Settings.QUEUE.DISCARD_AFTER_MS, TimeUnit.MILLISECONDS); + pool.awaitQuiescence(Settings.IMP.QUEUE.DISCARD_AFTER_MS, TimeUnit.MILLISECONDS); completer = new ExecutorCompletionService(pool); MainUtil.handleError(e); } finally { @@ -251,7 +251,7 @@ public class SetQueue { long age = now - queue.getModified(); total += queue.size(); if (queue.size() == 0) { - if (age > Settings.QUEUE.DISCARD_AFTER_MS) { + if (age > Settings.IMP.QUEUE.DISCARD_AFTER_MS) { queue.setStage(QueueStage.NONE); queue.runTasks(); iter.remove(); @@ -261,11 +261,11 @@ public class SetQueue { if (firstNonEmpty == null) { firstNonEmpty = queue; } - if (total > Settings.QUEUE.TARGET_SIZE) { + if (total > Settings.IMP.QUEUE.TARGET_SIZE) { firstNonEmpty.setModified(now); return firstNonEmpty; } - if (age > Settings.QUEUE.MAX_WAIT_MS) { + if (age > Settings.IMP.QUEUE.MAX_WAIT_MS) { queue.setModified(now); return queue; } @@ -293,20 +293,20 @@ public class SetQueue { } if (inactiveQueues.size() > 0) { ArrayList tmp = new ArrayList<>(inactiveQueues); - if (Settings.QUEUE.MAX_WAIT_MS != -1) { + if (Settings.IMP.QUEUE.MAX_WAIT_MS != -1) { long now = System.currentTimeMillis(); if (lastSuccess == 0) { lastSuccess = now; } long diff = now - lastSuccess; - if (diff > Settings.QUEUE.MAX_WAIT_MS) { + if (diff > Settings.IMP.QUEUE.MAX_WAIT_MS) { for (FaweQueue queue : tmp) { boolean result = queue.next(); if (result) { return result; } } - if (diff > Settings.QUEUE.DISCARD_AFTER_MS) { + if (diff > Settings.IMP.QUEUE.DISCARD_AFTER_MS) { // These edits never finished for (FaweQueue queue : tmp) { queue.setStage(QueueStage.NONE); @@ -317,12 +317,12 @@ public class SetQueue { return false; } } - if (Settings.QUEUE.TARGET_SIZE != -1) { + if (Settings.IMP.QUEUE.TARGET_SIZE != -1) { int total = 0; for (FaweQueue queue : tmp) { total += queue.size(); } - if (total > Settings.QUEUE.TARGET_SIZE) { + if (total > Settings.IMP.QUEUE.TARGET_SIZE) { for (FaweQueue queue : tmp) { boolean result = queue.next(); if (result) { diff --git a/core/src/main/java/com/boydti/fawe/util/TaskManager.java b/core/src/main/java/com/boydti/fawe/util/TaskManager.java index 4e6c0574..56a88541 100644 --- a/core/src/main/java/com/boydti/fawe/util/TaskManager.java +++ b/core/src/main/java/com/boydti/fawe/util/TaskManager.java @@ -92,7 +92,7 @@ public abstract class TaskManager { return; } if (numThreads == null) { - numThreads = Settings.QUEUE.PARALLEL_THREADS; + numThreads = Settings.IMP.QUEUE.PARALLEL_THREADS; } if (numThreads <= 1) { for (Runnable run : runnables) { @@ -274,7 +274,7 @@ public abstract class TaskManager { synchronized (running) { while (running.get()) { running.wait(timout); - if (running.get() && System.currentTimeMillis() - start > Settings.QUEUE.DISCARD_AFTER_MS) { + if (running.get() && System.currentTimeMillis() - start > Settings.IMP.QUEUE.DISCARD_AFTER_MS) { new RuntimeException("FAWE is taking a long time to execute a task (might just be a symptom): ").printStackTrace(); Fawe.debug("For full debug information use: /fawe threads"); } diff --git a/core/src/main/java/com/boydti/fawe/util/WEManager.java b/core/src/main/java/com/boydti/fawe/util/WEManager.java index 5435bd28..ef68436c 100644 --- a/core/src/main/java/com/boydti/fawe/util/WEManager.java +++ b/core/src/main/java/com/boydti/fawe/util/WEManager.java @@ -72,7 +72,7 @@ public class WEManager { * @return */ public RegionWrapper[] getMask(final FawePlayer player, FaweMaskManager.MaskType type) { - if (player.hasPermission("fawe.bypass") || !Settings.REGION_RESTRICTIONS) { + if (player.hasPermission("fawe.bypass") || !Settings.IMP.REGION_RESTRICTIONS) { return new RegionWrapper[] {new RegionWrapper(Integer.MIN_VALUE, Integer.MAX_VALUE, Integer.MIN_VALUE, Integer.MAX_VALUE)}; } HashSet mask = new HashSet<>(); diff --git a/core/src/main/java/com/sk89q/worldedit/EditSession.java b/core/src/main/java/com/sk89q/worldedit/EditSession.java index 57fa7f0b..a5531a1c 100644 --- a/core/src/main/java/com/sk89q/worldedit/EditSession.java +++ b/core/src/main/java/com/sk89q/worldedit/EditSession.java @@ -218,14 +218,14 @@ public class EditSession extends AbstractWorld implements HasFaweQueue, Lighting } this.player = player; if (changeSet == null) { - if (Settings.HISTORY.USE_DISK) { + if (Settings.IMP.HISTORY.USE_DISK) { UUID uuid = player == null ? CONSOLE : player.getUUID(); - if (Settings.HISTORY.USE_DATABASE) { + if (Settings.IMP.HISTORY.USE_DATABASE) { changeSet = new RollbackOptimizedHistory(world, uuid); } else { changeSet = new DiskStorageHistory(world, uuid); } - } else if (Settings.HISTORY.COMBINE_STAGES && Settings.HISTORY.COMPRESSION_LEVEL == 0 && !(queue instanceof MCAQueue)) { + } else if (Settings.IMP.HISTORY.COMBINE_STAGES && Settings.IMP.HISTORY.COMPRESSION_LEVEL == 0 && !(queue instanceof MCAQueue)) { changeSet = new CPUOptimizedChangeSet(world); } else { changeSet = new MemoryOptimizedHistory(world); @@ -248,7 +248,7 @@ public class EditSession extends AbstractWorld implements HasFaweQueue, Lighting } if (fastmode == null) { if (player == null) { - fastmode = Settings.HISTORY.ENABLE_FOR_CONSOLE; + fastmode = Settings.IMP.HISTORY.ENABLE_FOR_CONSOLE; } else { fastmode = player.getSession().hasFastMode(); } @@ -257,7 +257,7 @@ public class EditSession extends AbstractWorld implements HasFaweQueue, Lighting checkMemory = player != null && !fastmode; } if (combineStages == null) { - combineStages = Settings.HISTORY.COMBINE_STAGES && !(queue instanceof MCAQueue); + combineStages = Settings.IMP.HISTORY.COMBINE_STAGES && !(queue instanceof MCAQueue); } if (checkMemory) { if (MemUtil.isMemoryLimitedSlow()) { @@ -277,12 +277,12 @@ public class EditSession extends AbstractWorld implements HasFaweQueue, Lighting queue = SetQueue.IMP.getNewQueue(this, fastmode || limit.FAST_PLACEMENT, autoQueue); } } - if (Settings.EXPERIMENTAL.ANVIL_QUEUE_MODE && !(queue instanceof MCAQueue)) { + if (Settings.IMP.EXPERIMENTAL.ANVIL_QUEUE_MODE && !(queue instanceof MCAQueue)) { queue = new MCAQueue(queue); } this.queue = queue; this.queue.addEditSession(this); - if (Settings.QUEUE.PROGRESS.DISPLAY && player != null) { + if (Settings.IMP.QUEUE.PROGRESS.DISPLAY && player != null) { this.queue.setProgressTask(new DefaultProgressTracker(player)); } this.bypassAll = wrapExtent(new FastWorldEditExtent(world, queue), bus, event, Stage.BEFORE_CHANGE); @@ -482,13 +482,13 @@ public class EditSession extends AbstractWorld implements HasFaweQueue, Lighting } if (toReturn != extent) { String className = toReturn.getClass().getName().toLowerCase(); - for (String allowed : Settings.EXTENT.ALLOWED_PLUGINS) { + for (String allowed : Settings.IMP.EXTENT.ALLOWED_PLUGINS) { if (className.contains(allowed.toLowerCase())) { this.wrapped = true; return (AbstractDelegateExtent) toReturn; } } - if (Settings.EXTENT.DEBUG) { + if (Settings.IMP.EXTENT.DEBUG) { Fawe.debug("&cPotentially unsafe extent blocked: " + toReturn.getClass().getName()); Fawe.debug("&8 - &7For area restrictions, it is recommended to use the FaweAPI"); Fawe.debug("&8 - &7For block logging, it is recommended to use use BlocksHub"); @@ -1316,7 +1316,7 @@ public class EditSession extends AbstractWorld implements HasFaweQueue, Lighting queue.flush(); } if (getChangeSet() != null) { - if (Settings.HISTORY.COMBINE_STAGES) { + if (Settings.IMP.HISTORY.COMBINE_STAGES) { ((FaweChangeSet) getChangeSet()).flushAsync(); } else { ((FaweChangeSet) getChangeSet()).flush(); diff --git a/core/src/main/java/com/sk89q/worldedit/LocalSession.java b/core/src/main/java/com/sk89q/worldedit/LocalSession.java index 4f2de6fc..13038979 100644 --- a/core/src/main/java/com/sk89q/worldedit/LocalSession.java +++ b/core/src/main/java/com/sk89q/worldedit/LocalSession.java @@ -198,7 +198,7 @@ public class LocalSession { if (world == null || uuid == null) { return false; } - if (Settings.HISTORY.USE_DISK) { + if (Settings.IMP.HISTORY.USE_DISK) { MAX_HISTORY_SIZE = Integer.MAX_VALUE; } if (!world.equals(currentWorld)) { @@ -219,7 +219,7 @@ public class LocalSession { private boolean loadHistoryChangeSets(UUID uuid, World world) { final List editIds = new ArrayList<>(); - final File folder = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.PATHS.HISTORY + File.separator + Fawe.imp().getWorldName(world) + File.separator + uuid); + final File folder = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.IMP.PATHS.HISTORY + File.separator + Fawe.imp().getWorldName(world) + File.separator + uuid); if (folder.isDirectory()) { final FileNameExtensionFilter filter = new FileNameExtensionFilter("BlockData files","bd"); folder.listFiles(new FileFilter() { @@ -249,7 +249,7 @@ public class LocalSession { @Deprecated private void deleteOldFiles(UUID uuid, World world, long maxBytes) throws IOException { - final File folder = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.PATHS.HISTORY + File.separator + Fawe.imp().getWorldName(world) + File.separator + uuid); + final File folder = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.IMP.PATHS.HISTORY + File.separator + Fawe.imp().getWorldName(world) + File.separator + uuid); final ArrayList ids = new ArrayList(); final HashMap> paths = new HashMap<>(); @@ -298,10 +298,10 @@ public class LocalSession { } private void loadHistoryNegativeIndex(UUID uuid, World world) { - if (!Settings.HISTORY.USE_DISK) { + if (!Settings.IMP.HISTORY.USE_DISK) { return; } - File file = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.PATHS.HISTORY + File.separator + Fawe.imp().getWorldName(world) + File.separator + uuid + File.separator + "index"); + File file = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.IMP.PATHS.HISTORY + File.separator + Fawe.imp().getWorldName(world) + File.separator + uuid + File.separator + "index"); if (file.exists()) { try { FaweInputStream is = new FaweInputStream(new FileInputStream(file)); @@ -316,10 +316,10 @@ public class LocalSession { } private void saveHistoryNegativeIndex(UUID uuid, World world) { - if (world == null || !Settings.HISTORY.USE_DISK) { + if (world == null || !Settings.IMP.HISTORY.USE_DISK) { return; } - File file = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.PATHS.HISTORY + File.separator + Fawe.imp().getWorldName(world) + File.separator + uuid + File.separator + "index"); + File file = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.IMP.PATHS.HISTORY + File.separator + Fawe.imp().getWorldName(world) + File.separator + uuid + File.separator + "index"); if (getHistoryNegativeIndex() != 0) { try { if (!file.exists()) { @@ -487,7 +487,7 @@ public class LocalSession { } else { history.add(0, changeSet); } - while (((!Settings.HISTORY.USE_DISK && history.size() > MAX_HISTORY_SIZE) || (historySize >> 20) > limitMb) && history.size() > 1) { + while (((!Settings.IMP.HISTORY.USE_DISK && history.size() > MAX_HISTORY_SIZE) || (historySize >> 20) > limitMb) && history.size() > 1) { FaweChangeSet item = (FaweChangeSet) history.remove(0); item.delete(); long size = MainUtil.getSize(item); @@ -517,7 +517,7 @@ public class LocalSession { checkNotNull(player); loadSessionHistoryFromDisk(player.getUniqueId(), player.getWorld()); if (getHistoryNegativeIndex() < history.size()) { - FaweChangeSet changeSet = (FaweChangeSet) history.get(getHistoryIndex()); + FaweChangeSet changeSet = getChangeSet(history.get(getHistoryIndex())); final FawePlayer fp = FawePlayer.wrap(player); EditSession newEditSession = new EditSessionBuilder(changeSet.getWorld()) .allowedRegionsEverywhere() @@ -566,7 +566,7 @@ public class LocalSession { if (getHistoryNegativeIndex() > 0) { setDirty(); historyNegativeIndex--; - FaweChangeSet changeSet = (FaweChangeSet) history.get(getHistoryIndex()); + FaweChangeSet changeSet = getChangeSet(history.get(getHistoryIndex())); final FawePlayer fp = FawePlayer.wrap(player); EditSession newEditSession = new EditSessionBuilder(changeSet.getWorld()) .allowedRegionsEverywhere() diff --git a/core/src/main/java/com/sk89q/worldedit/command/BrushCommands.java b/core/src/main/java/com/sk89q/worldedit/command/BrushCommands.java index 0f8de610..55d5ecdd 100644 --- a/core/src/main/java/com/sk89q/worldedit/command/BrushCommands.java +++ b/core/src/main/java/com/sk89q/worldedit/command/BrushCommands.java @@ -294,7 +294,7 @@ public class BrushCommands { worldEdit.checkMaxBrushRadius(radius); FawePlayer fp = FawePlayer.wrap(player); - FaweLimit limit = Settings.getLimit(fp); + FaweLimit limit = Settings.IMP.getLimit(fp); iterations = Math.min(limit.MAX_ITERATIONS, iterations); BrushTool tool = session.getBrushTool(player.getItemInHand()); tool.setSize(radius); diff --git a/core/src/main/java/com/sk89q/worldedit/command/HistoryCommands.java b/core/src/main/java/com/sk89q/worldedit/command/HistoryCommands.java index 56f9b573..c55471cb 100644 --- a/core/src/main/java/com/sk89q/worldedit/command/HistoryCommands.java +++ b/core/src/main/java/com/sk89q/worldedit/command/HistoryCommands.java @@ -81,7 +81,7 @@ public class HistoryCommands { ) @CommandPermissions("worldedit.history.rollback") public void faweRollback(final Player player, LocalSession session, final String user, @Optional("0") int radius, @Optional("0") String time) throws WorldEditException { - if (!Settings.HISTORY.USE_DATABASE) { + if (!Settings.IMP.HISTORY.USE_DATABASE) { BBC.SETTING_DISABLE.send(player, "history.use-database"); return; } @@ -92,7 +92,7 @@ public class HistoryCommands { BBC.NO_PERM.send(player, "fawe.rollback.import"); return; } - File folder = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.PATHS.HISTORY); + File folder = MainUtil.getFile(Fawe.imp().getDirectory(), Settings.IMP.PATHS.HISTORY); if (!folder.exists()) { return; } diff --git a/core/src/main/java/com/sk89q/worldedit/command/SchematicCommands.java b/core/src/main/java/com/sk89q/worldedit/command/SchematicCommands.java index 9705ee09..7f779c06 100644 --- a/core/src/main/java/com/sk89q/worldedit/command/SchematicCommands.java +++ b/core/src/main/java/com/sk89q/worldedit/command/SchematicCommands.java @@ -105,7 +105,7 @@ public class SchematicCommands { return; } UUID uuid = UUID.fromString(filename.substring(4)); - URL base = new URL(Settings.WEB.URL); + URL base = new URL(Settings.IMP.WEB.URL); URL url = new URL(base, "uploads/" + uuid + ".schematic"); ReadableByteChannel rbc = Channels.newChannel(url.openStream()); in = Channels.newInputStream(rbc); diff --git a/core/src/main/java/com/sk89q/worldedit/extent/clipboard/BlockArrayClipboard.java b/core/src/main/java/com/sk89q/worldedit/extent/clipboard/BlockArrayClipboard.java index 394182b7..ca6071c2 100644 --- a/core/src/main/java/com/sk89q/worldedit/extent/clipboard/BlockArrayClipboard.java +++ b/core/src/main/java/com/sk89q/worldedit/extent/clipboard/BlockArrayClipboard.java @@ -67,7 +67,7 @@ public class BlockArrayClipboard implements Clipboard, LightingExtent { checkNotNull(region); this.region = region.clone(); this.size = getDimensions(); - this.IMP = Settings.CLIPBOARD.USE_DISK ? new DiskOptimizedClipboard(size.getBlockX(), size.getBlockY(), size.getBlockZ()) : new MemoryOptimizedClipboard(size.getBlockX(), size.getBlockY(), size.getBlockZ()); + this.IMP = Settings.IMP.CLIPBOARD.USE_DISK ? new DiskOptimizedClipboard(size.getBlockX(), size.getBlockY(), size.getBlockZ()) : new MemoryOptimizedClipboard(size.getBlockX(), size.getBlockY(), size.getBlockZ()); this.origin = region.getMinimumPoint(); this.mx = origin.getBlockX(); this.my = origin.getBlockY(); @@ -85,7 +85,7 @@ public class BlockArrayClipboard implements Clipboard, LightingExtent { checkNotNull(region); this.region = region.clone(); this.size = getDimensions(); - this.IMP = Settings.CLIPBOARD.USE_DISK ? new DiskOptimizedClipboard(size.getBlockX(), size.getBlockY(), size.getBlockZ(), clipboardId) : new MemoryOptimizedClipboard(size.getBlockX(), size.getBlockY(), size.getBlockZ()); + this.IMP = Settings.IMP.CLIPBOARD.USE_DISK ? new DiskOptimizedClipboard(size.getBlockX(), size.getBlockY(), size.getBlockZ(), clipboardId) : new MemoryOptimizedClipboard(size.getBlockX(), size.getBlockY(), size.getBlockZ()); this.origin = region.getMinimumPoint(); this.mx = origin.getBlockX(); this.my = origin.getBlockY(); diff --git a/core/src/main/java/com/sk89q/worldedit/regions/CuboidRegion.java b/core/src/main/java/com/sk89q/worldedit/regions/CuboidRegion.java index 0eb307b2..a58c6033 100644 --- a/core/src/main/java/com/sk89q/worldedit/regions/CuboidRegion.java +++ b/core/src/main/java/com/sk89q/worldedit/regions/CuboidRegion.java @@ -357,7 +357,7 @@ public class CuboidRegion extends AbstractRegion implements FlatRegion { @Override public Iterator iterator() { - if (Settings.HISTORY.COMPRESSION_LEVEL >= 9) { + if (Settings.IMP.HISTORY.COMPRESSION_LEVEL >= 9) { return iterator_old(); } final MutableBlockVector mutable = new MutableBlockVector(0,0,0); diff --git a/forge110/src/main/java/com/boydti/fawe/forge/ForgePlayer.java b/forge110/src/main/java/com/boydti/fawe/forge/ForgePlayer.java index 7d49cfcd..a330f86a 100644 --- a/forge110/src/main/java/com/boydti/fawe/forge/ForgePlayer.java +++ b/forge110/src/main/java/com/boydti/fawe/forge/ForgePlayer.java @@ -21,12 +21,12 @@ public class ForgePlayer extends FawePlayer { @Override public void sendTitle(String head, String sub) { // Not supported - Settings.QUEUE.PROGRESS.DISPLAY = false; + Settings.IMP.QUEUE.PROGRESS.DISPLAY = false; } @Override public void resetTitle() { // Not supported - Settings.QUEUE.PROGRESS.DISPLAY = false; + Settings.IMP.QUEUE.PROGRESS.DISPLAY = false; } @Override diff --git a/forge111/src/main/java/com/boydti/fawe/forge/ForgePlayer.java b/forge111/src/main/java/com/boydti/fawe/forge/ForgePlayer.java index 2105b6b1..e3bb80a5 100644 --- a/forge111/src/main/java/com/boydti/fawe/forge/ForgePlayer.java +++ b/forge111/src/main/java/com/boydti/fawe/forge/ForgePlayer.java @@ -21,12 +21,12 @@ public class ForgePlayer extends FawePlayer { @Override public void sendTitle(String head, String sub) { // Not supported - Settings.QUEUE.PROGRESS.DISPLAY = false; + Settings.IMP.QUEUE.PROGRESS.DISPLAY = false; } @Override public void resetTitle() { // Not supported - Settings.QUEUE.PROGRESS.DISPLAY = false; + Settings.IMP.QUEUE.PROGRESS.DISPLAY = false; } @Override diff --git a/forge1710/src/main/java/com/boydti/fawe/forge/ForgePlayer.java b/forge1710/src/main/java/com/boydti/fawe/forge/ForgePlayer.java index e5c4e4ad..d951a8db 100644 --- a/forge1710/src/main/java/com/boydti/fawe/forge/ForgePlayer.java +++ b/forge1710/src/main/java/com/boydti/fawe/forge/ForgePlayer.java @@ -21,12 +21,12 @@ public class ForgePlayer extends FawePlayer { @Override public void sendTitle(String head, String sub) { // Not supported - Settings.QUEUE.PROGRESS.DISPLAY = false; + Settings.IMP.QUEUE.PROGRESS.DISPLAY = false; } @Override public void resetTitle() { // Not supported - Settings.QUEUE.PROGRESS.DISPLAY = false; + Settings.IMP.QUEUE.PROGRESS.DISPLAY = false; } @Override diff --git a/forge189/src/main/java/com/boydti/fawe/forge/ForgePlayer.java b/forge189/src/main/java/com/boydti/fawe/forge/ForgePlayer.java index 56af1a9e..3c4ab184 100644 --- a/forge189/src/main/java/com/boydti/fawe/forge/ForgePlayer.java +++ b/forge189/src/main/java/com/boydti/fawe/forge/ForgePlayer.java @@ -22,12 +22,12 @@ public class ForgePlayer extends FawePlayer { @Override public void sendTitle(String head, String sub) { // Not supported - Settings.QUEUE.PROGRESS.DISPLAY = false; + Settings.IMP.QUEUE.PROGRESS.DISPLAY = false; } @Override public void resetTitle() { // Not supported - Settings.QUEUE.PROGRESS.DISPLAY = false; + Settings.IMP.QUEUE.PROGRESS.DISPLAY = false; } @Override diff --git a/forge194/src/main/java/com/boydti/fawe/forge/ForgePlayer.java b/forge194/src/main/java/com/boydti/fawe/forge/ForgePlayer.java index 4c6ee94f..726927fe 100644 --- a/forge194/src/main/java/com/boydti/fawe/forge/ForgePlayer.java +++ b/forge194/src/main/java/com/boydti/fawe/forge/ForgePlayer.java @@ -22,12 +22,12 @@ public class ForgePlayer extends FawePlayer { @Override public void sendTitle(String head, String sub) { // Not supported - Settings.QUEUE.PROGRESS.DISPLAY = false; + Settings.IMP.QUEUE.PROGRESS.DISPLAY = false; } @Override public void resetTitle() { // Not supported - Settings.QUEUE.PROGRESS.DISPLAY = false; + Settings.IMP.QUEUE.PROGRESS.DISPLAY = false; } @Override diff --git a/nukkit/src/main/java/com/boydti/fawe/nukkit/core/NukkitWorldEdit.java b/nukkit/src/main/java/com/boydti/fawe/nukkit/core/NukkitWorldEdit.java index b282de5d..97742a25 100644 --- a/nukkit/src/main/java/com/boydti/fawe/nukkit/core/NukkitWorldEdit.java +++ b/nukkit/src/main/java/com/boydti/fawe/nukkit/core/NukkitWorldEdit.java @@ -76,7 +76,7 @@ public class NukkitWorldEdit extends PluginBase { try { Fawe.set(new FaweNukkit(this)); Fawe.setupInjector(); - Settings.HISTORY.COMBINE_STAGES = false; + Settings.IMP.HISTORY.COMBINE_STAGES = false; logger = Logger.getLogger(NukkitWorldEdit.class.getCanonicalName()); createDefaultConfiguration("config-basic.yml"); config = new NukkitConfiguration(new YAMLProcessor(new File(getDataFolder(), "config-basic.yml"), true), this); diff --git a/nukkit/src/main/java/com/boydti/fawe/nukkit/optimization/FaweNukkit.java b/nukkit/src/main/java/com/boydti/fawe/nukkit/optimization/FaweNukkit.java index f861178a..95afdabc 100644 --- a/nukkit/src/main/java/com/boydti/fawe/nukkit/optimization/FaweNukkit.java +++ b/nukkit/src/main/java/com/boydti/fawe/nukkit/optimization/FaweNukkit.java @@ -28,9 +28,9 @@ public class FaweNukkit implements IFawe, Listener { private final NukkitWorldEdit plugin; public FaweNukkit(NukkitWorldEdit mod) { - Settings.HISTORY.USE_DISK = true; - Settings.CLIPBOARD.USE_DISK = true; - Settings.HISTORY.COMPRESSION_LEVEL = 9; + Settings.IMP.HISTORY.USE_DISK = true; + Settings.IMP.CLIPBOARD.USE_DISK = true; + Settings.IMP.HISTORY.COMPRESSION_LEVEL = 9; this.plugin = mod; FaweChunk.HEIGHT = 128; plugin.getServer().getPluginManager().registerEvents(this, plugin); @@ -97,13 +97,13 @@ public class FaweNukkit implements IFawe, Listener { @Override public FaweQueue getNewQueue(World world, boolean fast) { - Settings.HISTORY.COMBINE_STAGES = false; + Settings.IMP.HISTORY.COMBINE_STAGES = false; return new NukkitQueue(this, world); } @Override public FaweQueue getNewQueue(String world, boolean fast) { - Settings.HISTORY.COMBINE_STAGES = false; + Settings.IMP.HISTORY.COMBINE_STAGES = false; return new NukkitQueue(this, world); } diff --git a/nukkit/src/main/java/com/boydti/fawe/nukkit/optimization/queue/NukkitQueue.java b/nukkit/src/main/java/com/boydti/fawe/nukkit/optimization/queue/NukkitQueue.java index 51d33053..fbd4dc4f 100644 --- a/nukkit/src/main/java/com/boydti/fawe/nukkit/optimization/queue/NukkitQueue.java +++ b/nukkit/src/main/java/com/boydti/fawe/nukkit/optimization/queue/NukkitQueue.java @@ -50,9 +50,9 @@ public class NukkitQueue extends NMSMappedFaweQueue changeTask) { if (changeTask != null) { - Settings.HISTORY.COMBINE_STAGES = false; + Settings.IMP.HISTORY.COMBINE_STAGES = false; throw new UnsupportedOperationException("Combine stages not supported"); } SpongeChunk_1_8 fs = (SpongeChunk_1_8) fc; @@ -298,7 +298,7 @@ public class SpongeQueue_ALL extends NMSMappedFaweQueue tilesGeneric, Collection[] entitiesGeneric, Set createdEntities, boolean all) throws Exception { - Settings.HISTORY.COMBINE_STAGES = false; + Settings.IMP.HISTORY.COMBINE_STAGES = false; throw new UnsupportedOperationException("Combine stages not supported"); }