mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-11-04 11:13:45 +01:00 
			
		
		
		
	Bug Fix and Cleanup
This commit is contained in:
		@@ -54,8 +54,7 @@ public class PlotAPI {
 | 
			
		||||
     * @deprecated Not needed
 | 
			
		||||
     */
 | 
			
		||||
    @Deprecated
 | 
			
		||||
    public PlotAPI(JavaPlugin plugin) {
 | 
			
		||||
    }
 | 
			
		||||
    public PlotAPI(JavaPlugin plugin) {}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get all plots.
 | 
			
		||||
 
 | 
			
		||||
@@ -141,9 +141,7 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
 | 
			
		||||
            }
 | 
			
		||||
            this.getServer().getConsoleSender().sendMessage(message);
 | 
			
		||||
            return;
 | 
			
		||||
        } catch (Throwable ignored) {
 | 
			
		||||
            //ignored
 | 
			
		||||
        }
 | 
			
		||||
        } catch (Throwable ignored) {}
 | 
			
		||||
        System.out.println(ConsoleColors.fromString(message));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -401,14 +399,14 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
 | 
			
		||||
        try {
 | 
			
		||||
            new SendChunk();
 | 
			
		||||
            MainUtil.canSendChunk = true;
 | 
			
		||||
        } catch (Throwable e) {
 | 
			
		||||
        } catch (ClassNotFoundException | NoSuchFieldException | NoSuchMethodException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
            MainUtil.canSendChunk = false;
 | 
			
		||||
        }
 | 
			
		||||
        if (PS.get().checkVersion(getServerVersion(), 1, 9, 0)) {
 | 
			
		||||
            try {
 | 
			
		||||
                return new FastQueue_1_9();
 | 
			
		||||
            } catch (Throwable e) {
 | 
			
		||||
            } catch (ClassNotFoundException | NoSuchFieldException | NoSuchMethodException e) {
 | 
			
		||||
                e.printStackTrace();
 | 
			
		||||
                return new SlowQueue();
 | 
			
		||||
            }
 | 
			
		||||
@@ -416,11 +414,11 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
 | 
			
		||||
        if (PS.get().checkVersion(getServerVersion(), 1, 8, 0)) {
 | 
			
		||||
            try {
 | 
			
		||||
                return new FastQueue_1_8_3();
 | 
			
		||||
            } catch (Throwable e) {
 | 
			
		||||
            } catch (NoSuchMethodException | ClassNotFoundException | NoSuchFieldException e) {
 | 
			
		||||
                e.printStackTrace();
 | 
			
		||||
                try {
 | 
			
		||||
                    return new FastQueue_1_8();
 | 
			
		||||
                } catch (Throwable e2) {
 | 
			
		||||
                } catch (NoSuchMethodException | NoSuchFieldException | ClassNotFoundException e2) {
 | 
			
		||||
                    e2.printStackTrace();
 | 
			
		||||
                    return new SlowQueue();
 | 
			
		||||
                }
 | 
			
		||||
@@ -428,7 +426,7 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
 | 
			
		||||
        }
 | 
			
		||||
        try {
 | 
			
		||||
            return new FastQueue_1_7();
 | 
			
		||||
        } catch (Throwable e) {
 | 
			
		||||
        } catch (ClassNotFoundException | NoSuchFieldException | NoSuchMethodException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
            return new SlowQueue();
 | 
			
		||||
        }
 | 
			
		||||
@@ -657,7 +655,7 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
 | 
			
		||||
    public List<String> getPluginIds() {
 | 
			
		||||
        ArrayList<String> names = new ArrayList<>();
 | 
			
		||||
        for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
 | 
			
		||||
            names.add(plugin.getName() + ";" + plugin.getDescription().getVersion() + ":" + plugin.isEnabled());
 | 
			
		||||
            names.add(plugin.getName() + ';' + plugin.getDescription().getVersion() + ':' + plugin.isEnabled());
 | 
			
		||||
        }
 | 
			
		||||
        return names;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -285,7 +285,7 @@ public class DebugUUID extends SubCommand {
 | 
			
		||||
                }
 | 
			
		||||
                try {
 | 
			
		||||
                    PS.get().config.save(PS.get().configFile);
 | 
			
		||||
                } catch (IOException e) {
 | 
			
		||||
                } catch (IOException ignored) {
 | 
			
		||||
                    MainUtil.sendMessage(player, "Could not save configuration. It will need to be manual set!");
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -42,9 +42,8 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
 | 
			
		||||
            } else {
 | 
			
		||||
                return new SQLite(dataFolder + File.separator + "plots.db").openConnection();
 | 
			
		||||
            }
 | 
			
		||||
        } catch (SQLException | ClassNotFoundException ignored) {
 | 
			
		||||
            //ignored
 | 
			
		||||
            ignored.printStackTrace();
 | 
			
		||||
        } catch (SQLException | ClassNotFoundException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
        }
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
@@ -229,9 +228,7 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
 | 
			
		||||
            resultSet.close();
 | 
			
		||||
            statement.close();
 | 
			
		||||
 | 
			
		||||
        } catch (SQLException ignored) {
 | 
			
		||||
            //ignored
 | 
			
		||||
        }
 | 
			
		||||
        } catch (SQLException ignored) {}
 | 
			
		||||
        return plots;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -200,9 +200,7 @@ public class LikePlotMeConverter {
 | 
			
		||||
                        PS.get().config.set("worlds." + actualWorldName + ".wall.height", height);
 | 
			
		||||
                        PS.get().config.save(PS.get().configFile);
 | 
			
		||||
                    }
 | 
			
		||||
                } catch (IOException ignored) {
 | 
			
		||||
                    //ignored
 | 
			
		||||
                }
 | 
			
		||||
                } catch (IOException ignored) {}
 | 
			
		||||
            }
 | 
			
		||||
            for (Entry<String, HashMap<PlotId, Plot>> entry : plots.entrySet()) {
 | 
			
		||||
                String world = entry.getKey();
 | 
			
		||||
 
 | 
			
		||||
@@ -233,7 +233,7 @@ public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrap
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
        }
 | 
			
		||||
        ArrayList<BlockPopulator> toAdd = new ArrayList<BlockPopulator>();
 | 
			
		||||
        ArrayList<BlockPopulator> toAdd = new ArrayList<>();
 | 
			
		||||
        List<BlockPopulator> existing = world.getPopulators();
 | 
			
		||||
        for (BlockPopulator populator : this.populators) {
 | 
			
		||||
            if (!existing.contains(populator)) {
 | 
			
		||||
 
 | 
			
		||||
@@ -31,22 +31,21 @@ import java.util.Set;
 | 
			
		||||
 | 
			
		||||
public class WEListener implements Listener {
 | 
			
		||||
 | 
			
		||||
    public final HashSet<String> rad1 = new HashSet<>(
 | 
			
		||||
    public final Set<String> other = new HashSet<>(Arrays.asList("undo", "redo"));
 | 
			
		||||
    private final Set<String> rad1 = new HashSet<>(
 | 
			
		||||
            Arrays.asList("forestgen", "pumpkins", "drain", "fixwater", "fixlava", "replacenear", "snow", "thaw", "ex", "butcher", "size"));
 | 
			
		||||
    public final HashSet<String> rad2 = new HashSet<>(Arrays.asList("fill", "fillr", "removenear", "remove"));
 | 
			
		||||
    public final HashSet<String> rad2_1 = new HashSet<>(Arrays.asList("hcyl", "cyl"));
 | 
			
		||||
    public final HashSet<String> rad2_2 = new HashSet<>(Arrays.asList("sphere", "pyramid"));
 | 
			
		||||
    public final Set<String> rad2_3 = Collections.singleton("brush smooth");
 | 
			
		||||
    public final Set<String> rad3_1 = Collections.singleton("brush gravity");
 | 
			
		||||
    public final HashSet<String> rad3_2 = new HashSet<>(Arrays.asList("brush sphere", "brush cylinder"));
 | 
			
		||||
 | 
			
		||||
    public final HashSet<String> region = new HashSet<>(
 | 
			
		||||
    private final Set<String> rad2 = new HashSet<>(Arrays.asList("fill", "fillr", "removenear", "remove"));
 | 
			
		||||
    private final Set<String> rad2_1 = new HashSet<>(Arrays.asList("hcyl", "cyl"));
 | 
			
		||||
    private final Set<String> rad2_2 = new HashSet<>(Arrays.asList("sphere", "pyramid"));
 | 
			
		||||
    private final Set<String> rad2_3 = Collections.singleton("brush smooth");
 | 
			
		||||
    private final Set<String> rad3_1 = Collections.singleton("brush gravity");
 | 
			
		||||
    private final Set<String> rad3_2 = new HashSet<>(Arrays.asList("brush sphere", "brush cylinder"));
 | 
			
		||||
    private final Set<String> region = new HashSet<>(
 | 
			
		||||
            Arrays.asList("move", "set", "replace", "overlay", "walls", "outline", "deform", "hollow", "smooth", "naturalize", "paste", "count",
 | 
			
		||||
                    "distr",
 | 
			
		||||
                    "regen", "copy", "cut", "green", "setbiome"));
 | 
			
		||||
    public final Set<String> regionExtend = Collections.singleton("stack");
 | 
			
		||||
    public final Set<String> restricted = Collections.singleton("up");
 | 
			
		||||
    public final HashSet<String> other = new HashSet<>(Arrays.asList("undo", "redo"));
 | 
			
		||||
    private final Set<String> regionExtend = Collections.singleton("stack");
 | 
			
		||||
    private final Set<String> restricted = Collections.singleton("up");
 | 
			
		||||
 | 
			
		||||
    public String reduceCmd(String cmd, boolean single) {
 | 
			
		||||
        if (cmd.startsWith("/worldedit:/")) {
 | 
			
		||||
@@ -75,14 +74,14 @@ public class WEListener implements Listener {
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            return max;
 | 
			
		||||
        } catch (NumberFormatException e) {
 | 
			
		||||
        } catch (NumberFormatException ignored) {
 | 
			
		||||
            return 0;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean checkVolume(PlotPlayer player, long volume, long max, Cancellable e) {
 | 
			
		||||
        if (volume > max) {
 | 
			
		||||
            MainUtil.sendMessage(player, C.WORLDEDIT_VOLUME.s().replaceAll("%current%", volume + "").replaceAll("%max%", max + ""));
 | 
			
		||||
            MainUtil.sendMessage(player, C.WORLDEDIT_VOLUME.s().replaceAll("%current%", String.valueOf(volume)).replaceAll("%max%", String.valueOf(max)));
 | 
			
		||||
            e.setCancelled(true);
 | 
			
		||||
        }
 | 
			
		||||
        if (Permissions.hasPermission(player, "plots.worldedit.bypass")) {
 | 
			
		||||
@@ -181,7 +180,7 @@ public class WEListener implements Listener {
 | 
			
		||||
        boolean single = true;
 | 
			
		||||
        if (split.length >= 2) {
 | 
			
		||||
            String reduced = reduceCmd(split[0], single);
 | 
			
		||||
            String reduced2 = reduceCmd(split[0] + " " + split[1], single);
 | 
			
		||||
            String reduced2 = reduceCmd(split[0] + ' ' + split[1], single);
 | 
			
		||||
            if (this.rad1.contains(reduced)) {
 | 
			
		||||
                if (delay(p, message, false)) {
 | 
			
		||||
                    e.setCancelled(true);
 | 
			
		||||
@@ -234,7 +233,8 @@ public class WEListener implements Listener {
 | 
			
		||||
                        int iterations = getInt(split[3]);
 | 
			
		||||
                        if (iterations > maxIterations) {
 | 
			
		||||
                            MainUtil.sendMessage(pp,
 | 
			
		||||
                                    C.WORLDEDIT_ITERATIONS.s().replaceAll("%current%", iterations + "").replaceAll("%max%", maxIterations + ""));
 | 
			
		||||
                                    C.WORLDEDIT_ITERATIONS.s().replaceAll("%current%", String.valueOf(iterations)).replaceAll("%max%",
 | 
			
		||||
                                            String.valueOf(maxIterations)));
 | 
			
		||||
                            e.setCancelled(true);
 | 
			
		||||
                            if (Permissions.hasPermission(pp, "plots.worldedit.bypass")) {
 | 
			
		||||
                                MainUtil.sendMessage(pp, C.WORLDEDIT_BYPASS);
 | 
			
		||||
 
 | 
			
		||||
@@ -465,8 +465,7 @@ public class EntityWrapper {
 | 
			
		||||
        if (this.base.passenger != null) {
 | 
			
		||||
            try {
 | 
			
		||||
                entity.setPassenger(this.base.passenger.spawn(world, x_offset, z_offset));
 | 
			
		||||
            } catch (Exception ignored) {
 | 
			
		||||
            }
 | 
			
		||||
            } catch (Exception ignored) {}
 | 
			
		||||
        }
 | 
			
		||||
        if (this.base.fall != 0) {
 | 
			
		||||
            entity.setFallDistance(this.base.fall);
 | 
			
		||||
 
 | 
			
		||||
@@ -143,8 +143,7 @@ public class HackTitleManager extends TitleManager {
 | 
			
		||||
    private Class<?> getClass(String namespace) {
 | 
			
		||||
        try {
 | 
			
		||||
            return Class.forName(namespace);
 | 
			
		||||
        } catch (ClassNotFoundException ignored) {
 | 
			
		||||
        }
 | 
			
		||||
        } catch (ClassNotFoundException ignored) {}
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -58,6 +58,7 @@ import java.util.Collections;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Map.Entry;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
@@ -616,25 +617,25 @@ public class BukkitChunkManager extends ChunkManager {
 | 
			
		||||
 | 
			
		||||
    public static class ContentMap {
 | 
			
		||||
 | 
			
		||||
        public final HashMap<BlockLoc, ItemStack[]> chestContents;
 | 
			
		||||
        public final HashMap<BlockLoc, ItemStack[]> furnaceContents;
 | 
			
		||||
        public final HashMap<BlockLoc, ItemStack[]> dispenserContents;
 | 
			
		||||
        public final HashMap<BlockLoc, ItemStack[]> dropperContents;
 | 
			
		||||
        public final HashMap<BlockLoc, ItemStack[]> brewingStandContents;
 | 
			
		||||
        public final HashMap<BlockLoc, ItemStack[]> beaconContents;
 | 
			
		||||
        public final HashMap<BlockLoc, ItemStack[]> hopperContents;
 | 
			
		||||
        public final HashMap<BlockLoc, Short[]> furnaceTime;
 | 
			
		||||
        public final HashMap<BlockLoc, Object[]> skullData;
 | 
			
		||||
        public final HashMap<BlockLoc, Material> jukeboxDisc;
 | 
			
		||||
        public final HashMap<BlockLoc, Short> brewTime;
 | 
			
		||||
        public final HashMap<BlockLoc, EntityType> spawnerData;
 | 
			
		||||
        public final HashMap<BlockLoc, String> cmdData;
 | 
			
		||||
        public final HashMap<BlockLoc, String[]> signContents;
 | 
			
		||||
        public final HashMap<BlockLoc, Note> noteBlockContents;
 | 
			
		||||
        public final HashMap<BlockLoc, List<Pattern>> bannerPatterns;
 | 
			
		||||
        public final HashMap<BlockLoc, DyeColor> bannerBase;
 | 
			
		||||
        public final HashSet<EntityWrapper> entities;
 | 
			
		||||
        public final HashMap<PlotLoc, PlotBlock[]> allBlocks;
 | 
			
		||||
        public final Map<BlockLoc, ItemStack[]> chestContents;
 | 
			
		||||
        public final Map<BlockLoc, ItemStack[]> furnaceContents;
 | 
			
		||||
        public final Map<BlockLoc, ItemStack[]> dispenserContents;
 | 
			
		||||
        public final Map<BlockLoc, ItemStack[]> dropperContents;
 | 
			
		||||
        public final Map<BlockLoc, ItemStack[]> brewingStandContents;
 | 
			
		||||
        public final Map<BlockLoc, ItemStack[]> beaconContents;
 | 
			
		||||
        public final Map<BlockLoc, ItemStack[]> hopperContents;
 | 
			
		||||
        public final Map<BlockLoc, Short[]> furnaceTime;
 | 
			
		||||
        public final Map<BlockLoc, Object[]> skullData;
 | 
			
		||||
        public final Map<BlockLoc, Material> jukeboxDisc;
 | 
			
		||||
        public final Map<BlockLoc, Short> brewTime;
 | 
			
		||||
        public final Map<BlockLoc, EntityType> spawnerData;
 | 
			
		||||
        public final Map<BlockLoc, String> cmdData;
 | 
			
		||||
        public final Map<BlockLoc, String[]> signContents;
 | 
			
		||||
        public final Map<BlockLoc, Note> noteBlockContents;
 | 
			
		||||
        public final Map<BlockLoc, List<Pattern>> bannerPatterns;
 | 
			
		||||
        public final Map<BlockLoc, DyeColor> bannerBase;
 | 
			
		||||
        public final Set<EntityWrapper> entities;
 | 
			
		||||
        public final Map<PlotLoc, PlotBlock[]> allBlocks;
 | 
			
		||||
 | 
			
		||||
        public ContentMap() {
 | 
			
		||||
            this.chestContents = new HashMap<>();
 | 
			
		||||
 
 | 
			
		||||
@@ -49,8 +49,7 @@ public class BukkitHybridUtils extends HybridUtils {
 | 
			
		||||
                }
 | 
			
		||||
                final BiomeGrid nullBiomeGrid = new BiomeGrid() {
 | 
			
		||||
                    @Override
 | 
			
		||||
                    public void setBiome(int a, int b, Biome c) {
 | 
			
		||||
                    }
 | 
			
		||||
                    public void setBiome(int a, int b, Biome c) {}
 | 
			
		||||
 | 
			
		||||
                    @Override
 | 
			
		||||
                    public Biome getBiome(int a, int b) {
 | 
			
		||||
 
 | 
			
		||||
@@ -22,12 +22,10 @@ public class BukkitPlainChatManager extends ChatManager<List<StringBuilder>> {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void tooltip(PlotMessage message, PlotMessage... tooltips) {
 | 
			
		||||
    }
 | 
			
		||||
    public void tooltip(PlotMessage message, PlotMessage... tooltips) {}
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void command(PlotMessage message, String command) {
 | 
			
		||||
    }
 | 
			
		||||
    public void command(PlotMessage message, String command) {}
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void text(PlotMessage message, String text) {
 | 
			
		||||
@@ -44,7 +42,6 @@ public class BukkitPlainChatManager extends ChatManager<List<StringBuilder>> {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void suggest(PlotMessage plotMessage, String command) {
 | 
			
		||||
    }
 | 
			
		||||
    public void suggest(PlotMessage plotMessage, String command) {}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -271,8 +271,7 @@ public class BukkitUtil extends WorldUtil {
 | 
			
		||||
        try {
 | 
			
		||||
            Material material = Material.valueOf(name.toUpperCase());
 | 
			
		||||
            return new StringComparison<PlotBlock>().new ComparisonResult(0, new PlotBlock((short) material.getId(), (byte) 0));
 | 
			
		||||
        } catch (IllegalArgumentException ignored) {
 | 
			
		||||
        }
 | 
			
		||||
        } catch (IllegalArgumentException ignored) {}
 | 
			
		||||
        try {
 | 
			
		||||
            byte data;
 | 
			
		||||
            String[] split = name.split(":");
 | 
			
		||||
@@ -296,8 +295,7 @@ public class BukkitUtil extends WorldUtil {
 | 
			
		||||
            StringComparison<PlotBlock> outer = new StringComparison<>();
 | 
			
		||||
            return outer.new ComparisonResult(match, block);
 | 
			
		||||
 | 
			
		||||
        } catch (NumberFormatException ignored) {
 | 
			
		||||
        }
 | 
			
		||||
        } catch (NumberFormatException ignored) {}
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -95,8 +95,7 @@ public class Metrics {
 | 
			
		||||
            if (gzos != null) {
 | 
			
		||||
                try {
 | 
			
		||||
                    gzos.close();
 | 
			
		||||
                } catch (IOException ignore) {
 | 
			
		||||
                }
 | 
			
		||||
                } catch (IOException ignore) {}
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return baos.toByteArray();
 | 
			
		||||
@@ -117,7 +116,7 @@ public class Metrics {
 | 
			
		||||
                Double.parseDouble(value);
 | 
			
		||||
                isValueNumeric = true;
 | 
			
		||||
            }
 | 
			
		||||
        } catch (NumberFormatException e) {
 | 
			
		||||
        } catch (NumberFormatException ignored) {
 | 
			
		||||
            isValueNumeric = false;
 | 
			
		||||
        }
 | 
			
		||||
        if (json.charAt(json.length() - 1) != '{') {
 | 
			
		||||
@@ -446,7 +445,7 @@ public class Metrics {
 | 
			
		||||
        try {
 | 
			
		||||
            Class.forName("mineshafter.MineServer");
 | 
			
		||||
            return true;
 | 
			
		||||
        } catch (ClassNotFoundException e) {
 | 
			
		||||
        } catch (ClassNotFoundException ignored) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -569,8 +568,7 @@ public class Metrics {
 | 
			
		||||
        /**
 | 
			
		||||
         * Called after the website graphs have been updated
 | 
			
		||||
         */
 | 
			
		||||
        public void reset() {
 | 
			
		||||
        }
 | 
			
		||||
        public void reset() {}
 | 
			
		||||
 | 
			
		||||
        @Override
 | 
			
		||||
        public int hashCode() {
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@ public class SendChunk {
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructor
 | 
			
		||||
     */
 | 
			
		||||
    public SendChunk() {
 | 
			
		||||
    public SendChunk() throws ClassNotFoundException, NoSuchMethodException, NoSuchFieldException {
 | 
			
		||||
        RefClass classCraftPlayer = getRefClass("{cb}.entity.CraftPlayer");
 | 
			
		||||
        this.methodGetHandlePlayer = classCraftPlayer.getMethod("getHandle");
 | 
			
		||||
        RefClass classCraftChunk = getRefClass("{cb}.CraftChunk");
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ public class FastQueue_1_7 extends SlowQueue {
 | 
			
		||||
 | 
			
		||||
    private final HashMap<ChunkWrapper, Chunk> toUpdate = new HashMap<>();
 | 
			
		||||
 | 
			
		||||
    public FastQueue_1_7() throws RuntimeException {
 | 
			
		||||
    public FastQueue_1_7() throws NoSuchMethodException, ClassNotFoundException, NoSuchFieldException {
 | 
			
		||||
        this.methodGetHandle = this.classCraftWorld.getMethod("getHandle");
 | 
			
		||||
        this.methodGetChunkAt = this.classWorld.getMethod("getChunkAt", int.class, int.class);
 | 
			
		||||
        this.methodA = this.classChunk.getMethod("a", int.class, int.class, int.class, this.classBlock, int.class);
 | 
			
		||||
 
 | 
			
		||||
@@ -41,7 +41,7 @@ public class FastQueue_1_8 extends SlowQueue {
 | 
			
		||||
    private final RefConstructor constructorBlockPosition;
 | 
			
		||||
    private final SendChunk sendChunk;
 | 
			
		||||
 | 
			
		||||
    public FastQueue_1_8() throws RuntimeException {
 | 
			
		||||
    public FastQueue_1_8() throws NoSuchMethodException, ClassNotFoundException, NoSuchFieldException {
 | 
			
		||||
        this.methodInitLighting = this.classChunk.getMethod("initLighting");
 | 
			
		||||
        this.constructorBlockPosition = this.classBlockPosition.getConstructor(int.class, int.class, int.class);
 | 
			
		||||
        this.methodGetByCombinedId = this.classBlock.getMethod("getByCombinedId", int.class);
 | 
			
		||||
@@ -56,7 +56,7 @@ public class FastQueue_1_8 extends SlowQueue {
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                int count = 0;
 | 
			
		||||
                ArrayList<Chunk> chunks = new ArrayList<Chunk>();
 | 
			
		||||
                ArrayList<Chunk> chunks = new ArrayList<>();
 | 
			
		||||
                Iterator<Entry<ChunkWrapper, Chunk>> i = FastQueue_1_8.this.toUpdate.entrySet().iterator();
 | 
			
		||||
                while (i.hasNext() && count < 128) {
 | 
			
		||||
                    chunks.add(i.next().getValue());
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,7 @@ public class FastQueue_1_8_3 extends SlowQueue {
 | 
			
		||||
    private final RefMethod methodGetWorld;
 | 
			
		||||
    private final RefField tileEntityListTick;
 | 
			
		||||
 | 
			
		||||
    public FastQueue_1_8_3() throws RuntimeException {
 | 
			
		||||
    public FastQueue_1_8_3() throws NoSuchMethodException, ClassNotFoundException, NoSuchFieldException {
 | 
			
		||||
        RefClass classCraftChunk = getRefClass("{cb}.CraftChunk");
 | 
			
		||||
        RefClass classCraftWorld = getRefClass("{cb}.CraftWorld");
 | 
			
		||||
        this.methodGetHandleChunk = classCraftChunk.getMethod("getHandle");
 | 
			
		||||
 
 | 
			
		||||
@@ -53,7 +53,7 @@ public class FastQueue_1_9 extends SlowQueue {
 | 
			
		||||
    private final RefField tileEntityListTick;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public FastQueue_1_9() throws RuntimeException {
 | 
			
		||||
    public FastQueue_1_9() throws NoSuchFieldException, NoSuchMethodException, ClassNotFoundException {
 | 
			
		||||
        RefClass classCraftChunk = getRefClass("{cb}.CraftChunk");
 | 
			
		||||
        this.methodGetHandleChunk = classCraftChunk.getMethod("getHandle");
 | 
			
		||||
        RefClass classChunk = getRefClass("{nms}.Chunk");
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,7 @@ import org.bukkit.OfflinePlayer;
 | 
			
		||||
import org.bukkit.Server;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
 | 
			
		||||
import java.lang.reflect.InvocationTargetException;
 | 
			
		||||
import java.lang.reflect.Method;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
@@ -48,11 +49,9 @@ public class OfflineUUIDWrapper extends UUIDWrapper {
 | 
			
		||||
    @Override
 | 
			
		||||
    public OfflinePlotPlayer getOfflinePlayer(UUID uuid) {
 | 
			
		||||
        BiMap<UUID, StringWrapper> map = UUIDHandler.getUuidMap().inverse();
 | 
			
		||||
        String name;
 | 
			
		||||
        try {
 | 
			
		||||
        String name = null;
 | 
			
		||||
        if (map.containsKey(uuid)) {
 | 
			
		||||
            name = map.get(uuid).value;
 | 
			
		||||
        } catch (NullPointerException e) {
 | 
			
		||||
            name = null;
 | 
			
		||||
        }
 | 
			
		||||
        if (name != null) {
 | 
			
		||||
            OfflinePlayer op = Bukkit.getOfflinePlayer(name);
 | 
			
		||||
@@ -81,7 +80,7 @@ public class OfflineUUIDWrapper extends UUIDWrapper {
 | 
			
		||||
                @SuppressWarnings("unchecked") Collection<? extends Player> p = (Collection<? extends Player>) players;
 | 
			
		||||
                return p.toArray(new Player[p.size()]);
 | 
			
		||||
            }
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
        } catch (IllegalAccessException | InvocationTargetException | IllegalArgumentException ignored) {
 | 
			
		||||
            PS.debug("Failed to resolve online players");
 | 
			
		||||
            this.getOnline = null;
 | 
			
		||||
            Collection<? extends Player> onlinePlayers = Bukkit.getOnlinePlayers();
 | 
			
		||||
 
 | 
			
		||||
@@ -4,10 +4,10 @@ package com.intellectualcrafters.configuration;
 | 
			
		||||
 * Various settings for controlling the input and output of a {@link
 | 
			
		||||
 * Configuration}
 | 
			
		||||
 */
 | 
			
		||||
public class ConfigurationOptions {
 | 
			
		||||
class ConfigurationOptions {
 | 
			
		||||
    private final Configuration configuration;
 | 
			
		||||
    private char pathSeparator = '.';
 | 
			
		||||
    private boolean copyDefaults = false;
 | 
			
		||||
    private final Configuration configuration;
 | 
			
		||||
    
 | 
			
		||||
    protected ConfigurationOptions(final Configuration configuration) {
 | 
			
		||||
        this.configuration = configuration;
 | 
			
		||||
 
 | 
			
		||||
@@ -76,8 +76,7 @@ public class MemorySection implements ConfigurationSection {
 | 
			
		||||
        if (obj instanceof String) {
 | 
			
		||||
            try {
 | 
			
		||||
                return Double.parseDouble((String) obj);
 | 
			
		||||
            } catch (NumberFormatException ignored) {
 | 
			
		||||
            }
 | 
			
		||||
            } catch (NumberFormatException ignored) {}
 | 
			
		||||
        } else if (obj instanceof List) {
 | 
			
		||||
            List<?> val = (List<?>) obj;
 | 
			
		||||
            if (!val.isEmpty()) {
 | 
			
		||||
@@ -94,8 +93,7 @@ public class MemorySection implements ConfigurationSection {
 | 
			
		||||
        if (obj instanceof String) {
 | 
			
		||||
            try {
 | 
			
		||||
                return Integer.parseInt((String) obj);
 | 
			
		||||
            } catch (NumberFormatException ignored) {
 | 
			
		||||
            }
 | 
			
		||||
            } catch (NumberFormatException ignored) {}
 | 
			
		||||
        } else if (obj instanceof List) {
 | 
			
		||||
            List<?> val = (List<?>) obj;
 | 
			
		||||
            if (!val.isEmpty()) {
 | 
			
		||||
@@ -112,8 +110,7 @@ public class MemorySection implements ConfigurationSection {
 | 
			
		||||
        if (obj instanceof String) {
 | 
			
		||||
            try {
 | 
			
		||||
                return Long.parseLong((String) obj);
 | 
			
		||||
            } catch (NumberFormatException ignored) {
 | 
			
		||||
            }
 | 
			
		||||
            } catch (NumberFormatException ignored) {}
 | 
			
		||||
        } else if (obj instanceof List) {
 | 
			
		||||
            List<?> val = (List<?>) obj;
 | 
			
		||||
            if (!val.isEmpty()) {
 | 
			
		||||
@@ -569,8 +566,7 @@ public class MemorySection implements ConfigurationSection {
 | 
			
		||||
            } else if (object instanceof String) {
 | 
			
		||||
                try {
 | 
			
		||||
                    result.add(Integer.valueOf((String) object));
 | 
			
		||||
                } catch (NumberFormatException ignored) {
 | 
			
		||||
                }
 | 
			
		||||
                } catch (NumberFormatException ignored) {}
 | 
			
		||||
            } else if (object instanceof Character) {
 | 
			
		||||
                result.add((int) (Character) object);
 | 
			
		||||
            } else if (object instanceof Number) {
 | 
			
		||||
@@ -614,8 +610,7 @@ public class MemorySection implements ConfigurationSection {
 | 
			
		||||
            } else if (object instanceof String) {
 | 
			
		||||
                try {
 | 
			
		||||
                    result.add(Double.valueOf((String) object));
 | 
			
		||||
                } catch (NumberFormatException ignored) {
 | 
			
		||||
                }
 | 
			
		||||
                } catch (NumberFormatException ignored) {}
 | 
			
		||||
            } else if (object instanceof Character) {
 | 
			
		||||
                result.add((double) (Character) object);
 | 
			
		||||
            } else if (object instanceof Number) {
 | 
			
		||||
@@ -638,8 +633,7 @@ public class MemorySection implements ConfigurationSection {
 | 
			
		||||
            } else if (object instanceof String) {
 | 
			
		||||
                try {
 | 
			
		||||
                    result.add(Float.valueOf((String) object));
 | 
			
		||||
                } catch (NumberFormatException ignored) {
 | 
			
		||||
                }
 | 
			
		||||
                } catch (NumberFormatException ignored) {}
 | 
			
		||||
            } else if (object instanceof Character) {
 | 
			
		||||
                result.add((float) (Character) object);
 | 
			
		||||
            } else if (object instanceof Number) {
 | 
			
		||||
@@ -662,8 +656,7 @@ public class MemorySection implements ConfigurationSection {
 | 
			
		||||
            } else if (object instanceof String) {
 | 
			
		||||
                try {
 | 
			
		||||
                    result.add(Long.valueOf((String) object));
 | 
			
		||||
                } catch (NumberFormatException ignored) {
 | 
			
		||||
                }
 | 
			
		||||
                } catch (NumberFormatException ignored) {}
 | 
			
		||||
            } else if (object instanceof Character) {
 | 
			
		||||
                result.add((long) (Character) object);
 | 
			
		||||
            } else if (object instanceof Number) {
 | 
			
		||||
@@ -686,8 +679,7 @@ public class MemorySection implements ConfigurationSection {
 | 
			
		||||
            } else if (object instanceof String) {
 | 
			
		||||
                try {
 | 
			
		||||
                    result.add(Byte.valueOf((String) object));
 | 
			
		||||
                } catch (NumberFormatException ignored) {
 | 
			
		||||
                }
 | 
			
		||||
                } catch (NumberFormatException ignored) {}
 | 
			
		||||
            } else if (object instanceof Character) {
 | 
			
		||||
                result.add((byte) ((Character) object).charValue());
 | 
			
		||||
            } else if (object instanceof Number) {
 | 
			
		||||
@@ -733,8 +725,7 @@ public class MemorySection implements ConfigurationSection {
 | 
			
		||||
            } else if (object instanceof String) {
 | 
			
		||||
                try {
 | 
			
		||||
                    result.add(Short.valueOf((String) object));
 | 
			
		||||
                } catch (NumberFormatException ignored) {
 | 
			
		||||
                }
 | 
			
		||||
                } catch (NumberFormatException ignored) {}
 | 
			
		||||
            } else if (object instanceof Character) {
 | 
			
		||||
                result.add((short) ((Character) object).charValue());
 | 
			
		||||
            } else if (object instanceof Number) {
 | 
			
		||||
 
 | 
			
		||||
@@ -25,8 +25,7 @@ public abstract class FileConfiguration extends MemoryConfiguration {
 | 
			
		||||
    /**
 | 
			
		||||
     * Creates an empty {@link FileConfiguration} with no default values.
 | 
			
		||||
     */
 | 
			
		||||
    public FileConfiguration() {
 | 
			
		||||
    }
 | 
			
		||||
    FileConfiguration() {}
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Creates an empty {@link FileConfiguration} using the specified {@link
 | 
			
		||||
@@ -54,9 +53,6 @@ public abstract class FileConfiguration extends MemoryConfiguration {
 | 
			
		||||
     * @throws IllegalArgumentException Thrown when file is null.
 | 
			
		||||
     */
 | 
			
		||||
    public void save(File file) throws IOException {
 | 
			
		||||
        if (file == null) {
 | 
			
		||||
            throw new NullPointerException("File cannot be null");
 | 
			
		||||
        }
 | 
			
		||||
        file.getParentFile().mkdirs();
 | 
			
		||||
 | 
			
		||||
        String data = saveToString();
 | 
			
		||||
@@ -66,29 +62,6 @@ public abstract class FileConfiguration extends MemoryConfiguration {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Saves this {@link FileConfiguration} to the specified location.
 | 
			
		||||
     * <p>
 | 
			
		||||
     * If the file does not exist, it will be created. If already exists, it
 | 
			
		||||
     * will be overwritten. If it cannot be overwritten or created, an
 | 
			
		||||
     * exception will be thrown.
 | 
			
		||||
     * <p>
 | 
			
		||||
     * This method will save using the system default encoding, or possibly
 | 
			
		||||
     * using UTF8.
 | 
			
		||||
     *
 | 
			
		||||
     * @param file File to save to.
 | 
			
		||||
     * @throws IOException Thrown when the given file cannot be written to for
 | 
			
		||||
     *     any reason.
 | 
			
		||||
     * @throws IllegalArgumentException Thrown when file is null.
 | 
			
		||||
     */
 | 
			
		||||
    public void save(String file) throws IOException {
 | 
			
		||||
        if (file == null) {
 | 
			
		||||
            throw new NullPointerException("File cannot be null");
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        save(new File(file));
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Saves this {@link FileConfiguration} to a string, and returns it.
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -21,8 +21,8 @@ import java.util.Map;
 | 
			
		||||
 * Note that this implementation is not synchronized.
 | 
			
		||||
 */
 | 
			
		||||
public class YamlConfiguration extends FileConfiguration {
 | 
			
		||||
    protected static final String COMMENT_PREFIX = "# ";
 | 
			
		||||
    protected static final String BLANK_CONFIG = "{}\n";
 | 
			
		||||
    private static final String COMMENT_PREFIX = "# ";
 | 
			
		||||
    private static final String BLANK_CONFIG = "{}\n";
 | 
			
		||||
    private final DumperOptions yamlOptions = new DumperOptions();
 | 
			
		||||
    private final Representer yamlRepresenter = new YamlRepresenter();
 | 
			
		||||
    private final Yaml yaml = new Yaml(new YamlConstructor(), yamlRepresenter, yamlOptions);
 | 
			
		||||
@@ -40,7 +40,7 @@ public class YamlConfiguration extends FileConfiguration {
 | 
			
		||||
     * @return Resulting configuration
 | 
			
		||||
     * @throws IllegalArgumentException Thrown if file is null
 | 
			
		||||
     */
 | 
			
		||||
    public static YamlConfiguration loadConfiguration(final File file) {
 | 
			
		||||
    public static YamlConfiguration loadConfiguration(File file) {
 | 
			
		||||
        if (file == null) {
 | 
			
		||||
            throw new NullPointerException("File cannot be null");
 | 
			
		||||
        }
 | 
			
		||||
@@ -163,7 +163,7 @@ public class YamlConfiguration extends FileConfiguration {
 | 
			
		||||
 | 
			
		||||
            if (line.startsWith(COMMENT_PREFIX)) {
 | 
			
		||||
                if (i > 0) {
 | 
			
		||||
                    result.append("\n");
 | 
			
		||||
                    result.append('\n');
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (line.length() > COMMENT_PREFIX.length()) {
 | 
			
		||||
@@ -172,7 +172,7 @@ public class YamlConfiguration extends FileConfiguration {
 | 
			
		||||
 | 
			
		||||
                foundHeader = true;
 | 
			
		||||
            } else if (foundHeader && line.isEmpty()) {
 | 
			
		||||
                result.append("\n");
 | 
			
		||||
                result.append('\n');
 | 
			
		||||
            } else if (foundHeader) {
 | 
			
		||||
                readingHeader = false;
 | 
			
		||||
            }
 | 
			
		||||
@@ -189,8 +189,8 @@ public class YamlConfiguration extends FileConfiguration {
 | 
			
		||||
            final Configuration def = getDefaults();
 | 
			
		||||
 | 
			
		||||
            if (def instanceof FileConfiguration) {
 | 
			
		||||
                final FileConfiguration filedefaults = (FileConfiguration) def;
 | 
			
		||||
                final String defaultsHeader = filedefaults.buildHeader();
 | 
			
		||||
                final FileConfiguration fileDefaults = (FileConfiguration) def;
 | 
			
		||||
                final String defaultsHeader = fileDefaults.buildHeader();
 | 
			
		||||
 | 
			
		||||
                if ((defaultsHeader != null) && !defaultsHeader.isEmpty()) {
 | 
			
		||||
                    return defaultsHeader;
 | 
			
		||||
@@ -207,7 +207,7 @@ public class YamlConfiguration extends FileConfiguration {
 | 
			
		||||
        boolean startedHeader = false;
 | 
			
		||||
 | 
			
		||||
        for (int i = lines.length - 1; i >= 0; i--) {
 | 
			
		||||
            builder.insert(0, "\n");
 | 
			
		||||
            builder.insert(0, '\n');
 | 
			
		||||
 | 
			
		||||
            if (startedHeader || !lines[i].isEmpty()) {
 | 
			
		||||
                builder.insert(0, lines[i]);
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ package com.intellectualcrafters.configuration.file;
 | 
			
		||||
public class YamlConfigurationOptions extends FileConfigurationOptions {
 | 
			
		||||
    private int indent = 2;
 | 
			
		||||
    
 | 
			
		||||
    protected YamlConfigurationOptions(final YamlConfiguration configuration) {
 | 
			
		||||
    YamlConfigurationOptions(final YamlConfiguration configuration) {
 | 
			
		||||
        super(configuration);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ import java.util.Map;
 | 
			
		||||
 | 
			
		||||
public class YamlConstructor extends SafeConstructor {
 | 
			
		||||
    
 | 
			
		||||
    public YamlConstructor() {
 | 
			
		||||
    YamlConstructor() {
 | 
			
		||||
        yamlConstructors.put(Tag.MAP, new ConstructCustomObject());
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ import org.yaml.snakeyaml.representer.Representer;
 | 
			
		||||
import java.util.LinkedHashMap;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
public class YamlRepresenter extends Representer {
 | 
			
		||||
class YamlRepresenter extends Representer {
 | 
			
		||||
 | 
			
		||||
    public YamlRepresenter() {
 | 
			
		||||
        this.multiRepresenters.put(ConfigurationSection.class, new RepresentConfigurationSection());
 | 
			
		||||
 
 | 
			
		||||
@@ -17,8 +17,7 @@ import java.util.logging.Logger;
 | 
			
		||||
public class ConfigurationSerialization {
 | 
			
		||||
 | 
			
		||||
    public static final String SERIALIZED_TYPE_KEY = "==";
 | 
			
		||||
    private static final Map<String, Class<? extends ConfigurationSerializable>> aliases =
 | 
			
		||||
            new HashMap<String, Class<? extends ConfigurationSerializable>>();
 | 
			
		||||
    private static final Map<String, Class<? extends ConfigurationSerializable>> aliases = new HashMap<>();
 | 
			
		||||
    private final Class<? extends ConfigurationSerializable> clazz;
 | 
			
		||||
 | 
			
		||||
    protected ConfigurationSerialization(Class<? extends ConfigurationSerializable> clazz) {
 | 
			
		||||
@@ -128,8 +127,7 @@ public class ConfigurationSerialization {
 | 
			
		||||
     * @param clazz Class to unregister
 | 
			
		||||
     */
 | 
			
		||||
    public static void unregisterClass(Class<? extends ConfigurationSerializable> clazz) {
 | 
			
		||||
        while (aliases.values().remove(clazz)) {
 | 
			
		||||
        }
 | 
			
		||||
        while (aliases.values().remove(clazz)) {}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -154,7 +152,7 @@ public class ConfigurationSerialization {
 | 
			
		||||
        DelegateDeserialization delegate = clazz.getAnnotation(DelegateDeserialization.class);
 | 
			
		||||
 | 
			
		||||
        if (delegate != null) {
 | 
			
		||||
            if ((delegate.value() == null) || (delegate.value() == clazz)) {
 | 
			
		||||
            if (delegate.value() == clazz) {
 | 
			
		||||
                delegate = null;
 | 
			
		||||
            } else {
 | 
			
		||||
                return getAlias(delegate.value());
 | 
			
		||||
@@ -182,9 +180,7 @@ public class ConfigurationSerialization {
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return method;
 | 
			
		||||
        } catch (NoSuchMethodException ex) {
 | 
			
		||||
            return null;
 | 
			
		||||
        } catch (SecurityException ex) {
 | 
			
		||||
        } catch (NoSuchMethodException | SecurityException ignored) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -192,9 +188,7 @@ public class ConfigurationSerialization {
 | 
			
		||||
    protected Constructor<? extends ConfigurationSerializable> getConstructor() {
 | 
			
		||||
        try {
 | 
			
		||||
            return this.clazz.getConstructor(Map.class);
 | 
			
		||||
        } catch (NoSuchMethodException ex) {
 | 
			
		||||
            return null;
 | 
			
		||||
        } catch (SecurityException ex) {
 | 
			
		||||
        } catch (NoSuchMethodException | SecurityException ignored) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -8,8 +8,7 @@ public final class EndTag extends Tag {
 | 
			
		||||
    /**
 | 
			
		||||
     * Creates the tag.
 | 
			
		||||
     */
 | 
			
		||||
    public EndTag() {
 | 
			
		||||
    }
 | 
			
		||||
    public EndTag() {}
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Object getValue() {
 | 
			
		||||
 
 | 
			
		||||
@@ -16,8 +16,7 @@ public final class NBTConstants {
 | 
			
		||||
    /**
 | 
			
		||||
     * Default private constructor.
 | 
			
		||||
     */
 | 
			
		||||
    private NBTConstants() {
 | 
			
		||||
    }
 | 
			
		||||
    private NBTConstants() {}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Convert a type ID to its corresponding {@link Tag} class.
 | 
			
		||||
 
 | 
			
		||||
@@ -10,8 +10,7 @@ public final class NBTUtils {
 | 
			
		||||
    /**
 | 
			
		||||
     * Default private constructor.
 | 
			
		||||
     */
 | 
			
		||||
    private NBTUtils() {
 | 
			
		||||
    }
 | 
			
		||||
    private NBTUtils() {}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the type name of a tag.
 | 
			
		||||
 
 | 
			
		||||
@@ -88,8 +88,7 @@ public class JSONObject {
 | 
			
		||||
        for (String name : names) {
 | 
			
		||||
            try {
 | 
			
		||||
                putOnce(name, jo.opt(name));
 | 
			
		||||
            } catch (JSONException ignore) {
 | 
			
		||||
            }
 | 
			
		||||
            } catch (JSONException ignore) {}
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
@@ -194,8 +193,7 @@ public class JSONObject {
 | 
			
		||||
        for (String name : names) {
 | 
			
		||||
            try {
 | 
			
		||||
                putOpt(name, c.getField(name).get(object));
 | 
			
		||||
            } catch (JSONException | SecurityException | NoSuchFieldException | IllegalArgumentException | IllegalAccessException ignore) {
 | 
			
		||||
            }
 | 
			
		||||
            } catch (JSONException | SecurityException | NoSuchFieldException | IllegalArgumentException | IllegalAccessException ignore) {}
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
@@ -461,8 +459,7 @@ public class JSONObject {
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            } catch (NumberFormatException ignore) {
 | 
			
		||||
            }
 | 
			
		||||
            } catch (NumberFormatException ignore) {}
 | 
			
		||||
        }
 | 
			
		||||
        return string;
 | 
			
		||||
    }
 | 
			
		||||
@@ -586,7 +583,7 @@ public class JSONObject {
 | 
			
		||||
                return object.toString();
 | 
			
		||||
            }
 | 
			
		||||
            return new JSONObject(object);
 | 
			
		||||
        } catch (JSONException exception) {
 | 
			
		||||
        } catch (JSONException ignored) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -734,7 +731,7 @@ public class JSONObject {
 | 
			
		||||
        Object object = get(key);
 | 
			
		||||
        try {
 | 
			
		||||
            return object instanceof Number ? ((Number) object).doubleValue() : Double.parseDouble((String) object);
 | 
			
		||||
        } catch (NumberFormatException e) {
 | 
			
		||||
        } catch (NumberFormatException ignored) {
 | 
			
		||||
            throw new JSONException("JSONObject[" + quote(key) + "] is not a number.");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -752,7 +749,7 @@ public class JSONObject {
 | 
			
		||||
        Object object = get(key);
 | 
			
		||||
        try {
 | 
			
		||||
            return object instanceof Number ? ((Number) object).intValue() : Integer.parseInt((String) object);
 | 
			
		||||
        } catch (NumberFormatException e) {
 | 
			
		||||
        } catch (NumberFormatException ignored) {
 | 
			
		||||
            throw new JSONException("JSONObject[" + quote(key) + "] is not an int.");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -804,7 +801,7 @@ public class JSONObject {
 | 
			
		||||
        Object object = get(key);
 | 
			
		||||
        try {
 | 
			
		||||
            return object instanceof Number ? ((Number) object).longValue() : Long.parseLong((String) object);
 | 
			
		||||
        } catch (NumberFormatException e) {
 | 
			
		||||
        } catch (NumberFormatException ignored) {
 | 
			
		||||
            throw new JSONException("JSONObject[" + quote(key) + "] is not a long.");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -953,7 +950,7 @@ public class JSONObject {
 | 
			
		||||
    public boolean optBoolean(String key, boolean defaultValue) {
 | 
			
		||||
        try {
 | 
			
		||||
            return getBoolean(key);
 | 
			
		||||
        } catch (JSONException e) {
 | 
			
		||||
        } catch (JSONException ignored) {
 | 
			
		||||
            return defaultValue;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -982,7 +979,7 @@ public class JSONObject {
 | 
			
		||||
    public double optDouble(String key, double defaultValue) {
 | 
			
		||||
        try {
 | 
			
		||||
            return getDouble(key);
 | 
			
		||||
        } catch (JSONException e) {
 | 
			
		||||
        } catch (JSONException ignored) {
 | 
			
		||||
            return defaultValue;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -1011,7 +1008,7 @@ public class JSONObject {
 | 
			
		||||
    public int optInt(String key, int defaultValue) {
 | 
			
		||||
        try {
 | 
			
		||||
            return getInt(key);
 | 
			
		||||
        } catch (JSONException e) {
 | 
			
		||||
        } catch (JSONException ignored) {
 | 
			
		||||
            return defaultValue;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -1066,7 +1063,7 @@ public class JSONObject {
 | 
			
		||||
    public long optLong(String key, long defaultValue) {
 | 
			
		||||
        try {
 | 
			
		||||
            return getLong(key);
 | 
			
		||||
        } catch (JSONException e) {
 | 
			
		||||
        } catch (JSONException ignored) {
 | 
			
		||||
            return defaultValue;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -1127,8 +1124,7 @@ public class JSONObject {
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ignore) {
 | 
			
		||||
            }
 | 
			
		||||
            } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ignore) {}
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
@@ -1330,7 +1326,7 @@ public class JSONObject {
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            return true;
 | 
			
		||||
        } catch (JSONException exception) {
 | 
			
		||||
        } catch (JSONException ignored) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -1370,7 +1366,7 @@ public class JSONObject {
 | 
			
		||||
    public String toString() {
 | 
			
		||||
        try {
 | 
			
		||||
            return this.toString(0);
 | 
			
		||||
        } catch (JSONException e) {
 | 
			
		||||
        } catch (JSONException ignored) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -1476,7 +1472,7 @@ public class JSONObject {
 | 
			
		||||
        protected final Object clone() {
 | 
			
		||||
            try {
 | 
			
		||||
                return super.clone();
 | 
			
		||||
            } catch (CloneNotSupportedException e) {
 | 
			
		||||
            } catch (CloneNotSupportedException ignored) {
 | 
			
		||||
                return this;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -245,8 +245,7 @@ class XML {
 | 
			
		||||
                if (value.toString().equals(string)) {
 | 
			
		||||
                    return value;
 | 
			
		||||
                }
 | 
			
		||||
            } catch (NumberFormatException ignored) {
 | 
			
		||||
            }
 | 
			
		||||
            } catch (NumberFormatException ignored) {}
 | 
			
		||||
        }
 | 
			
		||||
        return string;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -829,7 +829,7 @@ public class PS {
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ArrayList<Plot> sortPlotsByTemp(Collection<Plot> plots) {
 | 
			
		||||
    public List<Plot> sortPlotsByTemp(Collection<Plot> plots) {
 | 
			
		||||
        int max = 0;
 | 
			
		||||
        int overflowCount = 0;
 | 
			
		||||
        for (Plot plot : plots) {
 | 
			
		||||
@@ -1761,7 +1761,7 @@ public class PS {
 | 
			
		||||
            // Close the connection
 | 
			
		||||
            DBFunc.close();
 | 
			
		||||
            UUIDHandler.handleShutdown();
 | 
			
		||||
        } catch (NullPointerException e) {
 | 
			
		||||
        } catch (NullPointerException ignored) {
 | 
			
		||||
            PS.log("&cCould not close database connection!");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -2099,7 +2099,7 @@ public class PS {
 | 
			
		||||
            }
 | 
			
		||||
            this.config = YamlConfiguration.loadConfiguration(this.configFile);
 | 
			
		||||
            setupConfig();
 | 
			
		||||
        } catch (IOException err_trans) {
 | 
			
		||||
        } catch (IOException ignored) {
 | 
			
		||||
            PS.log("Failed to save settings.yml");
 | 
			
		||||
        }
 | 
			
		||||
        try {
 | 
			
		||||
@@ -2111,7 +2111,7 @@ public class PS {
 | 
			
		||||
            }
 | 
			
		||||
            this.storage = YamlConfiguration.loadConfiguration(this.storageFile);
 | 
			
		||||
            setupStorage();
 | 
			
		||||
        } catch (IOException err_trans) {
 | 
			
		||||
        } catch (IOException ignored) {
 | 
			
		||||
            PS.log("Failed to save storage.yml");
 | 
			
		||||
        }
 | 
			
		||||
        try {
 | 
			
		||||
@@ -2123,7 +2123,7 @@ public class PS {
 | 
			
		||||
            }
 | 
			
		||||
            this.commands = YamlConfiguration.loadConfiguration(this.commandsFile);
 | 
			
		||||
            setupStorage();
 | 
			
		||||
        } catch (IOException err_trans) {
 | 
			
		||||
        } catch (IOException ignored) {
 | 
			
		||||
            PS.log("Failed to save commands.yml");
 | 
			
		||||
        }
 | 
			
		||||
        try {
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,7 @@ public class Buy extends SubCommand {
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
                plots = plot.getConnectedPlots();
 | 
			
		||||
            } catch (Exception e) {
 | 
			
		||||
            } catch (Exception ignored) {
 | 
			
		||||
                return sendMessage(plr, C.NOT_VALID_PLOT_ID);
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,7 @@ public class Continue extends SubCommand {
 | 
			
		||||
            MainUtil.sendMessage(plr, C.NO_PLOT_PERMS);
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        if (!plot.getFlags().containsKey("done")) {
 | 
			
		||||
        if (!plot.hasFlag(Flags.DONE)) {
 | 
			
		||||
            MainUtil.sendMessage(plr, C.DONE_NOT_DONE);
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -80,8 +80,7 @@ public class DebugExec extends SubCommand {
 | 
			
		||||
                    this.engine.eval(script, this.scope);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        } catch (IOException | ScriptException ignored) {
 | 
			
		||||
        }
 | 
			
		||||
        } catch (IOException | ScriptException ignored) {}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ScriptEngine getEngine() {
 | 
			
		||||
@@ -360,12 +359,7 @@ public class DebugExec extends SubCommand {
 | 
			
		||||
                        @Override
 | 
			
		||||
                        public void run(Integer i, File file, PlotMessage message) {
 | 
			
		||||
                            String name = file.getName();
 | 
			
		||||
 | 
			
		||||
                            message.text("[").color("$3")
 | 
			
		||||
                                    .text(i + "").color("$1")
 | 
			
		||||
                                    .text("]").color("$3")
 | 
			
		||||
                                    .text(" " + name).color("$1");
 | 
			
		||||
 | 
			
		||||
                            message.text("[").color("$3").text(String.valueOf(i)).color("$1").text("]").color("$3").text(' ' + name).color("$1");
 | 
			
		||||
                        }
 | 
			
		||||
                    }, "/plot debugexec list-scripts", "List of scripts");
 | 
			
		||||
                    return true;
 | 
			
		||||
 
 | 
			
		||||
@@ -12,8 +12,6 @@ import com.intellectualcrafters.plot.util.Permissions;
 | 
			
		||||
import com.intellectualcrafters.plot.util.TaskManager;
 | 
			
		||||
import com.plotsquared.general.commands.CommandDeclaration;
 | 
			
		||||
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
 | 
			
		||||
@CommandDeclaration(
 | 
			
		||||
        command = "delete",
 | 
			
		||||
        permission = "plots.delete",
 | 
			
		||||
@@ -40,7 +38,7 @@ public class Delete extends SubCommand {
 | 
			
		||||
            return !sendMessage(plr, C.NO_PLOT_PERMS);
 | 
			
		||||
        }
 | 
			
		||||
        final PlotArea plotworld = plot.getArea();
 | 
			
		||||
        final HashSet<Plot> plots = plot.getConnectedPlots();
 | 
			
		||||
        final java.util.Set<Plot> plots = plot.getConnectedPlots();
 | 
			
		||||
        Runnable run = new Runnable() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void run() {
 | 
			
		||||
@@ -57,7 +55,7 @@ public class Delete extends SubCommand {
 | 
			
		||||
                            double value = plotworld.PRICES.get("sell") * plots.size();
 | 
			
		||||
                            if (value > 0d) {
 | 
			
		||||
                                EconHandler.manager.depositMoney(plr, value);
 | 
			
		||||
                                sendMessage(plr, C.ADDED_BALANCE, value + "");
 | 
			
		||||
                                sendMessage(plr, C.ADDED_BALANCE, String.valueOf(value));
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                        MainUtil.sendMessage(plr, C.CLEARING_DONE, System.currentTimeMillis() - start);
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,6 @@ package com.intellectualcrafters.plot.commands;
 | 
			
		||||
 | 
			
		||||
import com.intellectualcrafters.plot.config.C;
 | 
			
		||||
import com.intellectualcrafters.plot.config.Settings;
 | 
			
		||||
import com.intellectualcrafters.plot.flag.Flag;
 | 
			
		||||
import com.intellectualcrafters.plot.flag.FlagManager;
 | 
			
		||||
import com.intellectualcrafters.plot.flag.Flags;
 | 
			
		||||
import com.intellectualcrafters.plot.generator.HybridUtils;
 | 
			
		||||
import com.intellectualcrafters.plot.object.Location;
 | 
			
		||||
@@ -34,7 +32,7 @@ public class Done extends SubCommand {
 | 
			
		||||
            MainUtil.sendMessage(plr, C.NO_PLOT_PERMS);
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        if (plot.getFlags().containsKey("done")) {
 | 
			
		||||
        if (plot.hasFlag(Flags.DONE)) {
 | 
			
		||||
            MainUtil.sendMessage(plr, C.DONE_ALREADY_DONE);
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
@@ -50,8 +48,7 @@ public class Done extends SubCommand {
 | 
			
		||||
                plot.removeRunning();
 | 
			
		||||
                if ((value == null) || (value.getComplexity() >= Settings.CLEAR_THRESHOLD)) {
 | 
			
		||||
                    long flagValue = System.currentTimeMillis() / 1000;
 | 
			
		||||
                    Flag flag = Flags.DONE;
 | 
			
		||||
                    FlagManager.addPlotFlag(plot, flag, flagValue);
 | 
			
		||||
                    plot.setFlag(Flags.DONE,flagValue);
 | 
			
		||||
                    MainUtil.sendMessage(plr, C.DONE_SUCCESS);
 | 
			
		||||
                } else {
 | 
			
		||||
                    MainUtil.sendMessage(plr, C.DONE_INSUFFICIENT_COMPLEXITY);
 | 
			
		||||
 
 | 
			
		||||
@@ -101,7 +101,7 @@ public class ListCmd extends SubCommand {
 | 
			
		||||
                if (page < 0) {
 | 
			
		||||
                    page = 0;
 | 
			
		||||
                }
 | 
			
		||||
            } catch (Exception e) {
 | 
			
		||||
            } catch (NumberFormatException ignored) {
 | 
			
		||||
                page = -1;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -313,8 +313,7 @@ public class ListCmd extends SubCommand {
 | 
			
		||||
                if (uuid == null) {
 | 
			
		||||
                    try {
 | 
			
		||||
                        uuid = UUID.fromString(args[0]);
 | 
			
		||||
                    } catch (Exception ignored) {
 | 
			
		||||
                    }
 | 
			
		||||
                    } catch (Exception ignored) {}
 | 
			
		||||
                }
 | 
			
		||||
                if (uuid != null) {
 | 
			
		||||
                    if (!Permissions.hasPermission(plr, "plots.list.player")) {
 | 
			
		||||
 
 | 
			
		||||
@@ -68,14 +68,14 @@ public class Load extends SubCommand {
 | 
			
		||||
                String schematic;
 | 
			
		||||
                try {
 | 
			
		||||
                    schematic = schematics.get(Integer.parseInt(args[0]) - 1);
 | 
			
		||||
                } catch (NumberFormatException e) {
 | 
			
		||||
                } catch (NumberFormatException ignored) {
 | 
			
		||||
                    // use /plot load <index>
 | 
			
		||||
                    MainUtil.sendMessage(plr, C.NOT_VALID_NUMBER, "(1, " + schematics.size() + ")");
 | 
			
		||||
                    MainUtil.sendMessage(plr, C.NOT_VALID_NUMBER, "(1, " + schematics.size() + ')');
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
                final URL url;
 | 
			
		||||
                try {
 | 
			
		||||
                    url = new URL(Settings.WEB_URL + "saves/" + plr.getUUID() + "/" + schematic + ".schematic");
 | 
			
		||||
                    url = new URL(Settings.WEB_URL + "saves/" + plr.getUUID() + '/' + schematic + ".schematic");
 | 
			
		||||
                } catch (MalformedURLException e) {
 | 
			
		||||
                    e.printStackTrace();
 | 
			
		||||
                    MainUtil.sendMessage(plr, C.LOAD_FAILED);
 | 
			
		||||
@@ -147,7 +147,7 @@ public class Load extends SubCommand {
 | 
			
		||||
                }
 | 
			
		||||
                String time = secToTime((System.currentTimeMillis() / 1000) - Long.parseLong(split[0]));
 | 
			
		||||
                String world = split[1];
 | 
			
		||||
                PlotId id = PlotId.fromString(split[2] + ";" + split[3]);
 | 
			
		||||
                PlotId id = PlotId.fromString(split[2] + ';' + split[3]);
 | 
			
		||||
                String size = split[4];
 | 
			
		||||
                String server = split[5].replaceAll(".schematic", "");
 | 
			
		||||
                String color;
 | 
			
		||||
@@ -157,7 +157,7 @@ public class Load extends SubCommand {
 | 
			
		||||
                    color = "$1";
 | 
			
		||||
                }
 | 
			
		||||
                MainUtil.sendMessage(player,
 | 
			
		||||
                        "$3[$2" + (i + 1) + "$3] " + color + time + "$3 | " + color + world + ";" + id + "$3 | " + color + size + "x" + size);
 | 
			
		||||
                        "$3[$2" + (i + 1) + "$3] " + color + time + "$3 | " + color + world + ';' + id + "$3 | " + color + size + 'x' + size);
 | 
			
		||||
            } catch (Exception e) {
 | 
			
		||||
                e.printStackTrace();
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ import com.intellectualcrafters.plot.util.TaskManager;
 | 
			
		||||
import com.intellectualcrafters.plot.util.UUIDHandler;
 | 
			
		||||
import com.plotsquared.general.commands.CommandDeclaration;
 | 
			
		||||
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
@CommandDeclaration(
 | 
			
		||||
@@ -27,15 +27,14 @@ public class Owner extends SetCommand {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean set(final PlotPlayer plr, final Plot plot, String value) {
 | 
			
		||||
        HashSet<Plot> plots = plot.getConnectedPlots();
 | 
			
		||||
        Set<Plot> plots = plot.getConnectedPlots();
 | 
			
		||||
        UUID uuid = null;
 | 
			
		||||
        String name = null;
 | 
			
		||||
        if (value.length() == 36) {
 | 
			
		||||
            try {
 | 
			
		||||
                uuid = UUID.fromString(value);
 | 
			
		||||
                name = MainUtil.getName(uuid);
 | 
			
		||||
            } catch (Exception ignored) {
 | 
			
		||||
            }
 | 
			
		||||
            } catch (Exception ignored) {}
 | 
			
		||||
        } else {
 | 
			
		||||
            uuid = UUIDHandler.getUUID(value, null);
 | 
			
		||||
            name = UUIDHandler.getName(uuid);
 | 
			
		||||
@@ -43,7 +42,7 @@ public class Owner extends SetCommand {
 | 
			
		||||
        }
 | 
			
		||||
        if (uuid == null) {
 | 
			
		||||
            if (value.equalsIgnoreCase("none")) {
 | 
			
		||||
                HashSet<Plot> connected = plot.getConnectedPlots();
 | 
			
		||||
                Set<Plot> connected = plot.getConnectedPlots();
 | 
			
		||||
                plot.unlinkPlot(false, false);
 | 
			
		||||
                for (Plot current : connected) {
 | 
			
		||||
                    current.unclaim();
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@ import com.intellectualcrafters.plot.PS;
 | 
			
		||||
import com.intellectualcrafters.plot.config.C;
 | 
			
		||||
import com.intellectualcrafters.plot.config.Settings;
 | 
			
		||||
import com.intellectualcrafters.plot.database.DBFunc;
 | 
			
		||||
import com.intellectualcrafters.plot.flag.Flags;
 | 
			
		||||
import com.intellectualcrafters.plot.object.Plot;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotInventory;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotItemStack;
 | 
			
		||||
@@ -61,7 +62,7 @@ public class Rate extends SubCommand {
 | 
			
		||||
                });
 | 
			
		||||
                UUID uuid = player.getUUID();
 | 
			
		||||
                for (Plot p : plots) {
 | 
			
		||||
                    if ((!Settings.REQUIRE_DONE || p.getFlags().containsKey("done")) && p.isBasePlot() && (p.hasRatings() || !p.getRatings()
 | 
			
		||||
                    if ((!Settings.REQUIRE_DONE || p.hasFlag(Flags.DONE)) && p.isBasePlot() && (p.hasRatings() || !p.getRatings()
 | 
			
		||||
                            .containsKey(uuid)) && !p.isAdded(uuid)) {
 | 
			
		||||
                        p.teleportPlayer(player);
 | 
			
		||||
                        MainUtil.sendMessage(player, C.RATE_THIS);
 | 
			
		||||
@@ -84,7 +85,7 @@ public class Rate extends SubCommand {
 | 
			
		||||
            sendMessage(player, C.RATING_NOT_YOUR_OWN);
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        if (Settings.REQUIRE_DONE && !plot.getFlags().containsKey("done")) {
 | 
			
		||||
        if (Settings.REQUIRE_DONE && !plot.hasFlag(Flags.DONE)) {
 | 
			
		||||
            sendMessage(player, C.RATING_NOT_DONE);
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
package com.intellectualcrafters.plot.commands;
 | 
			
		||||
 | 
			
		||||
import com.intellectualcrafters.configuration.ConfigurationSection;
 | 
			
		||||
import com.intellectualcrafters.configuration.InvalidConfigurationException;
 | 
			
		||||
import com.intellectualcrafters.configuration.MemorySection;
 | 
			
		||||
import com.intellectualcrafters.configuration.file.YamlConfiguration;
 | 
			
		||||
import com.intellectualcrafters.plot.PS;
 | 
			
		||||
@@ -11,6 +12,7 @@ import com.intellectualcrafters.plot.object.RunnableVal;
 | 
			
		||||
import com.intellectualcrafters.plot.util.MainUtil;
 | 
			
		||||
import com.plotsquared.general.commands.CommandDeclaration;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.Objects;
 | 
			
		||||
 | 
			
		||||
@CommandDeclaration(command = "reload",
 | 
			
		||||
@@ -77,7 +79,7 @@ public class Reload extends SubCommand {
 | 
			
		||||
            });
 | 
			
		||||
            PS.get().config.save(PS.get().configFile);
 | 
			
		||||
            MainUtil.sendMessage(plr, C.RELOADED_CONFIGS);
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
        } catch (InvalidConfigurationException | IOException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
            MainUtil.sendMessage(plr, C.RELOAD_FAILED);
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -52,15 +52,7 @@ public class Trim extends SubCommand {
 | 
			
		||||
                    String name = file.getName();
 | 
			
		||||
                    if (name.endsWith("mca")) {
 | 
			
		||||
                        if (file.getTotalSpace() <= 8192) {
 | 
			
		||||
                            try {
 | 
			
		||||
                                String[] split = name.split("\\.");
 | 
			
		||||
                                int x = Integer.parseInt(split[1]);
 | 
			
		||||
                                int z = Integer.parseInt(split[2]);
 | 
			
		||||
                                ChunkLoc loc = new ChunkLoc(x, z);
 | 
			
		||||
                                empty.add(loc);
 | 
			
		||||
                            } catch (NumberFormatException e) {
 | 
			
		||||
                                PS.debug("INVALID MCA: " + name);
 | 
			
		||||
                            }
 | 
			
		||||
                            checkMca(name);
 | 
			
		||||
                        } else {
 | 
			
		||||
                            Path path = Paths.get(file.getPath());
 | 
			
		||||
                            try {
 | 
			
		||||
@@ -69,24 +61,26 @@ public class Trim extends SubCommand {
 | 
			
		||||
                                long modification = file.lastModified();
 | 
			
		||||
                                long diff = Math.abs(creation - modification);
 | 
			
		||||
                                if (diff < 10000) {
 | 
			
		||||
                                    checkMca(name);
 | 
			
		||||
                                }
 | 
			
		||||
                            } catch (IOException ignored) {}
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                Trim.TASK = false;
 | 
			
		||||
                TaskManager.runTaskAsync(whenDone);
 | 
			
		||||
            }
 | 
			
		||||
            private void checkMca(String name) {
 | 
			
		||||
                try {
 | 
			
		||||
                    String[] split = name.split("\\.");
 | 
			
		||||
                    int x = Integer.parseInt(split[1]);
 | 
			
		||||
                    int z = Integer.parseInt(split[2]);
 | 
			
		||||
                    ChunkLoc loc = new ChunkLoc(x, z);
 | 
			
		||||
                    empty.add(loc);
 | 
			
		||||
                                    } catch (Exception e) {
 | 
			
		||||
                } catch (NumberFormatException ignored) {
 | 
			
		||||
                    PS.debug("INVALID MCA: " + name);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
                            } catch (IOException ignored) {
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                Trim.TASK = false;
 | 
			
		||||
                TaskManager.runTaskAsync(whenDone);
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        Trim.TASK = true;
 | 
			
		||||
        return true;
 | 
			
		||||
 
 | 
			
		||||
@@ -162,8 +162,7 @@ public class Configuration {
 | 
			
		||||
                    if (result != null && result.match < 2) {
 | 
			
		||||
                        values[i] = result.best;
 | 
			
		||||
                    }
 | 
			
		||||
                } catch (NumberFormatException ignored) {
 | 
			
		||||
                }
 | 
			
		||||
                } catch (NumberFormatException ignored) {}
 | 
			
		||||
            }
 | 
			
		||||
            int gcd = gcd(counts);
 | 
			
		||||
            for (int i = 0; i < counts.length; i++) {
 | 
			
		||||
 
 | 
			
		||||
@@ -182,16 +182,13 @@ public class SQLManager implements AbstractDB {
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                @Override
 | 
			
		||||
                public void set(PreparedStatement stmt) {
 | 
			
		||||
                }
 | 
			
		||||
                public void set(PreparedStatement stmt) {}
 | 
			
		||||
 | 
			
		||||
                @Override
 | 
			
		||||
                public void addBatch(PreparedStatement statement) {
 | 
			
		||||
                }
 | 
			
		||||
                public void addBatch(PreparedStatement statement) {}
 | 
			
		||||
 | 
			
		||||
                @Override
 | 
			
		||||
                public void execute(PreparedStatement statement) {
 | 
			
		||||
                }
 | 
			
		||||
                public void execute(PreparedStatement statement) {}
 | 
			
		||||
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
@@ -216,16 +213,13 @@ public class SQLManager implements AbstractDB {
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                @Override
 | 
			
		||||
                public void set(PreparedStatement stmt) {
 | 
			
		||||
                }
 | 
			
		||||
                public void set(PreparedStatement stmt) {}
 | 
			
		||||
 | 
			
		||||
                @Override
 | 
			
		||||
                public void addBatch(PreparedStatement statement) {
 | 
			
		||||
                }
 | 
			
		||||
                public void addBatch(PreparedStatement statement) {}
 | 
			
		||||
 | 
			
		||||
                @Override
 | 
			
		||||
                public void execute(PreparedStatement statement) {
 | 
			
		||||
                }
 | 
			
		||||
                public void execute(PreparedStatement statement) {}
 | 
			
		||||
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
@@ -247,16 +241,13 @@ public class SQLManager implements AbstractDB {
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                @Override
 | 
			
		||||
                public void set(PreparedStatement stmt) {
 | 
			
		||||
                }
 | 
			
		||||
                public void set(PreparedStatement stmt) {}
 | 
			
		||||
 | 
			
		||||
                @Override
 | 
			
		||||
                public void addBatch(PreparedStatement statement) {
 | 
			
		||||
                }
 | 
			
		||||
                public void addBatch(PreparedStatement statement) {}
 | 
			
		||||
 | 
			
		||||
                @Override
 | 
			
		||||
                public void execute(PreparedStatement statement) {
 | 
			
		||||
                }
 | 
			
		||||
                public void execute(PreparedStatement statement) {}
 | 
			
		||||
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
@@ -990,8 +981,7 @@ public class SQLManager implements AbstractDB {
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            @Override
 | 
			
		||||
            public void execute(PreparedStatement statement) {
 | 
			
		||||
            }
 | 
			
		||||
            public void execute(PreparedStatement statement) {}
 | 
			
		||||
 | 
			
		||||
            @Override
 | 
			
		||||
            public void addBatch(PreparedStatement statement) throws SQLException {
 | 
			
		||||
@@ -1808,8 +1798,7 @@ public class SQLManager implements AbstractDB {
 | 
			
		||||
                                default:
 | 
			
		||||
                                    try {
 | 
			
		||||
                                        plot.getSettings().setPosition(BlockLoc.fromString(pos));
 | 
			
		||||
                                    } catch (Exception ignored) {
 | 
			
		||||
                                    }
 | 
			
		||||
                                    } catch (Exception ignored) {}
 | 
			
		||||
                            }
 | 
			
		||||
                            Integer m = resultSet.getInt("merged");
 | 
			
		||||
                            boolean[] merged = new boolean[4];
 | 
			
		||||
@@ -1963,7 +1952,7 @@ public class SQLManager implements AbstractDB {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setFlags(final Plot plot, HashMap<Flag<?>, Object> flags) {
 | 
			
		||||
        final String flag_string = FlagManager.toString(flags); //todo MattBDev: Fix this for flags to work.
 | 
			
		||||
        final String flag_string = FlagManager.toString(flags);
 | 
			
		||||
        addPlotTask(plot, new UniqueStatement("setFlags") {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void set(PreparedStatement stmt) throws SQLException {
 | 
			
		||||
@@ -2178,8 +2167,7 @@ public class SQLManager implements AbstractDB {
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            @Override
 | 
			
		||||
            public void execute(PreparedStatement statement) {
 | 
			
		||||
            }
 | 
			
		||||
            public void execute(PreparedStatement statement) {}
 | 
			
		||||
 | 
			
		||||
            @Override
 | 
			
		||||
            public void addBatch(PreparedStatement statement) throws SQLException {
 | 
			
		||||
@@ -2480,8 +2468,7 @@ public class SQLManager implements AbstractDB {
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            @Override
 | 
			
		||||
            public void execute(PreparedStatement statement) {
 | 
			
		||||
            }
 | 
			
		||||
            public void execute(PreparedStatement statement) {}
 | 
			
		||||
 | 
			
		||||
            @Override
 | 
			
		||||
            public void addBatch(PreparedStatement statement) throws SQLException {
 | 
			
		||||
@@ -2621,8 +2608,7 @@ public class SQLManager implements AbstractDB {
 | 
			
		||||
                                try {
 | 
			
		||||
                                    BlockLoc loc = BlockLoc.fromString(pos);
 | 
			
		||||
                                    cluster.settings.setPosition(loc);
 | 
			
		||||
                                } catch (Exception ignored) {
 | 
			
		||||
                                }
 | 
			
		||||
                                } catch (Exception ignored) {}
 | 
			
		||||
                        }
 | 
			
		||||
                        Integer m = resultSet.getInt("merged");
 | 
			
		||||
                        boolean[] merged = new boolean[4];
 | 
			
		||||
@@ -2690,9 +2676,8 @@ public class SQLManager implements AbstractDB {
 | 
			
		||||
            if (i != 0) {
 | 
			
		||||
                flag_string.append(',');
 | 
			
		||||
            }
 | 
			
		||||
            flag_string.append(flag.getKey().getName()).append(":")
 | 
			
		||||
                    .append(flag.getKey().valueToString(flag.getValue()).replaceAll(":", "¯").replaceAll(",",
 | 
			
		||||
                            "´"));
 | 
			
		||||
            flag_string.append(flag.getKey().getName()).append(':')
 | 
			
		||||
                    .append(flag.getKey().valueToString(flag.getValue()).replaceAll(":", "¯").replaceAll(",", "´"));
 | 
			
		||||
            i++;
 | 
			
		||||
        }
 | 
			
		||||
        addClusterTask(cluster, new UniqueStatement("setFlags") {
 | 
			
		||||
@@ -2781,8 +2766,7 @@ public class SQLManager implements AbstractDB {
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            @Override
 | 
			
		||||
            public void execute(PreparedStatement statement) {
 | 
			
		||||
            }
 | 
			
		||||
            public void execute(PreparedStatement statement) {}
 | 
			
		||||
 | 
			
		||||
            @Override
 | 
			
		||||
            public void addBatch(PreparedStatement statement) throws SQLException {
 | 
			
		||||
 
 | 
			
		||||
@@ -63,9 +63,8 @@ public class FlagManager {
 | 
			
		||||
    public static String toString(HashMap<Flag<?>, Object> flags) {
 | 
			
		||||
        StringBuilder flag_string = new StringBuilder();
 | 
			
		||||
        int i = 0;
 | 
			
		||||
        Flag<?> flag;
 | 
			
		||||
        for (Map.Entry<Flag<?>, Object> entry : flags.entrySet()) {
 | 
			
		||||
            flag = entry.getKey();
 | 
			
		||||
            Flag<?> flag = entry.getKey();
 | 
			
		||||
            if (i != 0) {
 | 
			
		||||
                flag_string.append(",");
 | 
			
		||||
            }
 | 
			
		||||
@@ -132,7 +131,7 @@ public class FlagManager {
 | 
			
		||||
     * @param plot
 | 
			
		||||
     * @return set of flags
 | 
			
		||||
     */
 | 
			
		||||
    public static HashMap<Flag<?>, Object> getPlotFlags(Plot plot) {
 | 
			
		||||
    public static Map<Flag<?>, Object> getPlotFlags(Plot plot) {
 | 
			
		||||
        if (!plot.hasOwner()) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
@@ -158,7 +157,7 @@ public class FlagManager {
 | 
			
		||||
        return flags;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static HashMap<Flag<?>, Object> getSettingFlags(PlotArea area, PlotSettings settings) {
 | 
			
		||||
    public static Map<Flag<?>, Object> getSettingFlags(PlotArea area, PlotSettings settings) {
 | 
			
		||||
        return getPlotFlags(area, settings, false);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -227,7 +226,7 @@ public class FlagManager {
 | 
			
		||||
     *
 | 
			
		||||
     * @param player with permissions
 | 
			
		||||
     *
 | 
			
		||||
     * @return List (AbstractFlag)
 | 
			
		||||
     * @return List (Flag)
 | 
			
		||||
     */
 | 
			
		||||
    public static List<Flag> getFlags(PlotPlayer player) {
 | 
			
		||||
        List<Flag> returnFlags = new ArrayList<>();
 | 
			
		||||
@@ -240,11 +239,11 @@ public class FlagManager {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get an AbstractFlag by a string Returns null if flag does not exist
 | 
			
		||||
     * Get an Flag by a String
 | 
			
		||||
     *
 | 
			
		||||
     * @param string Flag Key
 | 
			
		||||
     * @param string the flag name
 | 
			
		||||
     *
 | 
			
		||||
     * @return AbstractFlag
 | 
			
		||||
     * @return the flag or null if the flag the provided name does not exist
 | 
			
		||||
     */
 | 
			
		||||
    public static Flag<?> getFlag(String string) {
 | 
			
		||||
        for (Flag flag : Flags.getFlags()) {
 | 
			
		||||
@@ -258,7 +257,7 @@ public class FlagManager {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static HashMap<Flag<?>, Object> parseFlags(List<String> flagstrings) {
 | 
			
		||||
    public static Map<Flag<?>, Object> parseFlags(List<String> flagstrings) {
 | 
			
		||||
        HashMap<Flag<?>, Object> map = new HashMap<>();
 | 
			
		||||
 | 
			
		||||
        for (String key : flagstrings) {
 | 
			
		||||
 
 | 
			
		||||
@@ -143,8 +143,7 @@ public class AugmentedUtils {
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    @Override
 | 
			
		||||
                    public void setBiome(int x, int z, int biome) {
 | 
			
		||||
                    }
 | 
			
		||||
                    public void setBiome(int x, int z, int biome) {}
 | 
			
		||||
 | 
			
		||||
                    @Override
 | 
			
		||||
                    public PlotChunk clone() {
 | 
			
		||||
 
 | 
			
		||||
@@ -55,8 +55,7 @@ public abstract class IndependentPlotGenerator {
 | 
			
		||||
     *  - e.g. If setup doesn't support some standard options
 | 
			
		||||
     * @param setup
 | 
			
		||||
     */
 | 
			
		||||
    public void processSetup(SetupObject setup) {
 | 
			
		||||
    }
 | 
			
		||||
    public void processSetup(SetupObject setup) {}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * It is preferred for the PlotArea object to do most of the initialization necessary.
 | 
			
		||||
 
 | 
			
		||||
@@ -176,7 +176,7 @@ public abstract class SquarePlotManager extends GridPlotManager {
 | 
			
		||||
                    return plot.getMerged(7) ? id : null;
 | 
			
		||||
            }
 | 
			
		||||
            PS.debug("invalid location: " + Arrays.toString(merged));
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
        } catch (Exception ignored) {
 | 
			
		||||
            PS.debug("Invalid plot / road width in settings.yml for world: " + plotworld.worldname);
 | 
			
		||||
        }
 | 
			
		||||
        return null;
 | 
			
		||||
 
 | 
			
		||||
@@ -87,12 +87,10 @@ public class ConsolePlayer extends PlotPlayer {
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setCompassTarget(Location location) {
 | 
			
		||||
    }
 | 
			
		||||
    public void setCompassTarget(Location location) {}
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setAttribute(String key) {
 | 
			
		||||
    }
 | 
			
		||||
    public void setAttribute(String key) {}
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean getAttribute(String key) {
 | 
			
		||||
@@ -100,8 +98,7 @@ public class ConsolePlayer extends PlotPlayer {
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public void removeAttribute(String key) {
 | 
			
		||||
    }
 | 
			
		||||
    public void removeAttribute(String key) {}
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setMeta(String key, Object value) {
 | 
			
		||||
@@ -124,8 +121,7 @@ public class ConsolePlayer extends PlotPlayer {
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setWeather(PlotWeather weather) {
 | 
			
		||||
    }
 | 
			
		||||
    public void setWeather(PlotWeather weather) {}
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public PlotGameMode getGameMode() {
 | 
			
		||||
@@ -133,24 +129,19 @@ public class ConsolePlayer extends PlotPlayer {
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setGameMode(PlotGameMode gameMode) {
 | 
			
		||||
    }
 | 
			
		||||
    public void setGameMode(PlotGameMode gameMode) {}
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setTime(long time) {
 | 
			
		||||
    }
 | 
			
		||||
    public void setTime(long time) {}
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setFlight(boolean fly) {
 | 
			
		||||
    }
 | 
			
		||||
    public void setFlight(boolean fly) {}
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public void playMusic(Location location, int id) {
 | 
			
		||||
    }
 | 
			
		||||
    public void playMusic(Location location, int id) {}
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public void kick(String message) {
 | 
			
		||||
    }
 | 
			
		||||
    public void kick(String message) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void stopSpectating() {}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -335,7 +335,7 @@ public class Plot {
 | 
			
		||||
        if (!isMerged()) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        HashSet<Plot> connected = getConnectedPlots();
 | 
			
		||||
        Set<Plot> connected = getConnectedPlots();
 | 
			
		||||
        for (Plot current : connected) {
 | 
			
		||||
            if (uuid.equals(current.owner)) {
 | 
			
		||||
                return true;
 | 
			
		||||
@@ -350,14 +350,14 @@ public class Plot {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get a immutable set of owner UUIDs for a plot (supports multi-owner mega-plots).
 | 
			
		||||
     * @return
 | 
			
		||||
     * @return the Plot owners
 | 
			
		||||
     */
 | 
			
		||||
    public Set<UUID> getOwners() {
 | 
			
		||||
        if (this.owner == null) {
 | 
			
		||||
            return new HashSet<>();
 | 
			
		||||
            return Collections.emptySet();
 | 
			
		||||
        }
 | 
			
		||||
        if (isMerged()) {
 | 
			
		||||
            HashSet<Plot> plots = getConnectedPlots();
 | 
			
		||||
            Set<Plot> plots = getConnectedPlots();
 | 
			
		||||
            Plot[] array = plots.toArray(new Plot[plots.size()]);
 | 
			
		||||
            ImmutableSet.Builder<UUID> owners = ImmutableSet.builder();
 | 
			
		||||
            UUID last = this.owner;
 | 
			
		||||
@@ -747,14 +747,11 @@ public class Plot {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean clear(boolean checkRunning, final boolean isDelete, final Runnable whenDone) {
 | 
			
		||||
        if (checkRunning && this.getRunning() != 0) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        if (!EventUtil.manager.callClear(this)) {
 | 
			
		||||
        if (checkRunning && this.getRunning() != 0 || !EventUtil.manager.callClear(this)) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        final HashSet<RegionWrapper> regions = this.getRegions();
 | 
			
		||||
        final HashSet<Plot> plots = this.getConnectedPlots();
 | 
			
		||||
        final Set<Plot> plots = this.getConnectedPlots();
 | 
			
		||||
        final ArrayDeque<Plot> queue = new ArrayDeque<>(plots);
 | 
			
		||||
        if (isDelete) {
 | 
			
		||||
            this.removeSign();
 | 
			
		||||
@@ -841,7 +838,7 @@ public class Plot {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Unlink the plot and all connected plots
 | 
			
		||||
     * Unlink the plot and all connected plots.
 | 
			
		||||
     * @param createSign
 | 
			
		||||
     * @param createRoad
 | 
			
		||||
     * @return
 | 
			
		||||
@@ -850,7 +847,7 @@ public class Plot {
 | 
			
		||||
        if (!this.isMerged()) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        HashSet<Plot> plots = this.getConnectedPlots();
 | 
			
		||||
        Set<Plot> plots = this.getConnectedPlots();
 | 
			
		||||
        ArrayList<PlotId> ids = new ArrayList<>(plots.size());
 | 
			
		||||
        for (Plot current : plots) {
 | 
			
		||||
            current.setHome(null);
 | 
			
		||||
@@ -982,7 +979,7 @@ public class Plot {
 | 
			
		||||
        if (!this.hasOwner()) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        final HashSet<Plot> plots = this.getConnectedPlots();
 | 
			
		||||
        final Set<Plot> plots = this.getConnectedPlots();
 | 
			
		||||
        this.clear(false, true, new Runnable() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void run() {
 | 
			
		||||
@@ -1062,9 +1059,8 @@ public class Plot {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Unclaim the plot (does not modify terrain)<br>
 | 
			
		||||
     *      - Changes made to this plot will not be reflected in unclaimed plot objects<br>
 | 
			
		||||
     * @return
 | 
			
		||||
     * Unclaim the plot (does not modify terrain). Changes made to this plot will not be reflected in unclaimed plot objects.
 | 
			
		||||
     * @return false if the Plot has no owner, otherwise true.
 | 
			
		||||
     */
 | 
			
		||||
    public boolean unclaim() {
 | 
			
		||||
        if (this.owner == null) {
 | 
			
		||||
@@ -1264,9 +1260,7 @@ public class Plot {
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Remove the plot sign if it is set
 | 
			
		||||
     */
 | 
			
		||||
    /** Remove the plot sign if it is set. */
 | 
			
		||||
    public void removeSign() {
 | 
			
		||||
        PlotManager manager = this.area.getPlotManager();
 | 
			
		||||
        if (!this.area.ALLOW_SIGNS) {
 | 
			
		||||
@@ -1276,9 +1270,7 @@ public class Plot {
 | 
			
		||||
        SetQueue.IMP.setBlock(this.area.worldname, loc.getX(), loc.getY(), loc.getZ(), 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Set the plot sign if plot signs are enabled.
 | 
			
		||||
     */
 | 
			
		||||
    /** Set the plot sign if plot signs are enabled. */
 | 
			
		||||
    public void setSign() {
 | 
			
		||||
        if (this.owner == null) {
 | 
			
		||||
            this.setSign("unknown");
 | 
			
		||||
@@ -2076,7 +2068,7 @@ public class Plot {
 | 
			
		||||
        }
 | 
			
		||||
        HashSet<Plot> visited = new HashSet<>();
 | 
			
		||||
        HashSet<PlotId> merged = new HashSet<>();
 | 
			
		||||
        HashSet<Plot> connected = this.getConnectedPlots();
 | 
			
		||||
        Set<Plot> connected = this.getConnectedPlots();
 | 
			
		||||
        for (Plot current : connected) {
 | 
			
		||||
            merged.add(current.getId());
 | 
			
		||||
        }
 | 
			
		||||
@@ -2091,8 +2083,7 @@ public class Plot {
 | 
			
		||||
            Set<Plot> plots;
 | 
			
		||||
            if ((dir == -1 || dir == 0) && !current.getMerged(0)) {
 | 
			
		||||
                Plot other = current.getRelative(0);
 | 
			
		||||
                if (other != null
 | 
			
		||||
                        && other.isOwner(uuid)
 | 
			
		||||
                if (other != null && other.isOwner(uuid)
 | 
			
		||||
                        && (other.getBasePlot(false).equals(current.getBasePlot(false))
 | 
			
		||||
                        || (plots = other.getConnectedPlots()).size() <= max && frontier.addAll(plots) && (max -= plots.size()) != -1)) {
 | 
			
		||||
                    current.mergePlot(other, removeRoads);
 | 
			
		||||
@@ -2103,12 +2094,9 @@ public class Plot {
 | 
			
		||||
            }
 | 
			
		||||
            if (max >= 0 && (dir == -1 || dir == 1) && !current.getMerged(1)) {
 | 
			
		||||
                Plot other = current.getRelative(1);
 | 
			
		||||
                if (other != null
 | 
			
		||||
                        && other.isOwner(uuid)
 | 
			
		||||
                if (other != null && other.isOwner(uuid)
 | 
			
		||||
                        && (other.getBasePlot(false).equals(current.getBasePlot(false))
 | 
			
		||||
                        || (plots = other.getConnectedPlots()).size() <= max && frontier.addAll(plots) &&
 | 
			
		||||
 | 
			
		||||
                        (max -= plots.size()) != -1)) {
 | 
			
		||||
                        || (plots = other.getConnectedPlots()).size() <= max && frontier.addAll(plots) && (max -= plots.size()) != -1)) {
 | 
			
		||||
                    current.mergePlot(other, removeRoads);
 | 
			
		||||
                    merged.add(current.getId());
 | 
			
		||||
                    merged.add(other.getId());
 | 
			
		||||
@@ -2243,14 +2231,14 @@ public class Plot {
 | 
			
		||||
     *  - This result is cached globally
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    public HashSet<Plot> getConnectedPlots() {
 | 
			
		||||
    public Set<Plot> getConnectedPlots() {
 | 
			
		||||
        if (this.settings == null) {
 | 
			
		||||
            return new HashSet<>(Collections.singletonList(this));
 | 
			
		||||
            return Collections.singleton(this);
 | 
			
		||||
        }
 | 
			
		||||
        boolean[] merged = this.getMerged();
 | 
			
		||||
        int hash = MainUtil.hash(merged);
 | 
			
		||||
        if (hash == 0) {
 | 
			
		||||
            return new HashSet<>(Collections.singletonList(this));
 | 
			
		||||
            return Collections.singleton(this);
 | 
			
		||||
        }
 | 
			
		||||
        if (connected_cache != null && connected_cache.contains(this)) {
 | 
			
		||||
            return connected_cache;
 | 
			
		||||
@@ -2386,7 +2374,7 @@ public class Plot {
 | 
			
		||||
            regions_cache.add(new RegionWrapper(pos1.getX(), pos2.getX(), pos1.getY(), pos2.getY(), pos1.getZ(), pos2.getZ()));
 | 
			
		||||
            return regions_cache;
 | 
			
		||||
        }
 | 
			
		||||
        HashSet<Plot> plots = this.getConnectedPlots();
 | 
			
		||||
        Set<Plot> plots = this.getConnectedPlots();
 | 
			
		||||
        HashSet<RegionWrapper> regions = regions_cache = new HashSet<>();
 | 
			
		||||
        HashSet<PlotId> visited = new HashSet<>();
 | 
			
		||||
        for (Plot current : plots) {
 | 
			
		||||
@@ -2712,7 +2700,7 @@ public class Plot {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        boolean occupied = false;
 | 
			
		||||
        HashSet<Plot> plots = this.getConnectedPlots();
 | 
			
		||||
        Set<Plot> plots = this.getConnectedPlots();
 | 
			
		||||
        for (Plot plot : plots) {
 | 
			
		||||
            Plot other = plot.getRelative(destination.getArea(), offset.x, offset.y);
 | 
			
		||||
            if (other.hasOwner()) {
 | 
			
		||||
@@ -2806,7 +2794,7 @@ public class Plot {
 | 
			
		||||
            TaskManager.runTaskLater(whenDone, 1);
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        HashSet<Plot> plots = this.getConnectedPlots();
 | 
			
		||||
        Set<Plot> plots = this.getConnectedPlots();
 | 
			
		||||
        for (Plot plot : plots) {
 | 
			
		||||
            Plot other = plot.getRelative(destination.getArea(), offset.x, offset.y);
 | 
			
		||||
            if (other.hasOwner()) {
 | 
			
		||||
@@ -2873,7 +2861,6 @@ public class Plot {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean hasFlag(Flag<?> flag) {
 | 
			
		||||
        //todo
 | 
			
		||||
        return false;
 | 
			
		||||
        return getFlags().containsKey(flag);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@ import com.intellectualcrafters.plot.config.ConfigurationNode;
 | 
			
		||||
import com.intellectualcrafters.plot.config.Settings;
 | 
			
		||||
import com.intellectualcrafters.plot.flag.Flag;
 | 
			
		||||
import com.intellectualcrafters.plot.flag.FlagManager;
 | 
			
		||||
import com.intellectualcrafters.plot.flag.Flags;
 | 
			
		||||
import com.intellectualcrafters.plot.generator.GridPlotWorld;
 | 
			
		||||
import com.intellectualcrafters.plot.generator.IndependentPlotGenerator;
 | 
			
		||||
import com.intellectualcrafters.plot.util.EconHandler;
 | 
			
		||||
@@ -53,9 +54,9 @@ public abstract class PlotArea {
 | 
			
		||||
    public boolean SCHEMATIC_ON_CLAIM = false;
 | 
			
		||||
    public String SCHEMATIC_FILE = "null";
 | 
			
		||||
    public List<String> SCHEMATICS = null;
 | 
			
		||||
    public HashMap<Flag<?>, Object> DEFAULT_FLAGS;
 | 
			
		||||
    public Map<Flag<?>, Object> DEFAULT_FLAGS;
 | 
			
		||||
    public boolean USE_ECONOMY = false;
 | 
			
		||||
    public HashMap<String, Double> PRICES = new HashMap<>();
 | 
			
		||||
    public Map<String, Double> PRICES = new HashMap<>();
 | 
			
		||||
    public boolean SPAWN_EGGS = false;
 | 
			
		||||
    public boolean SPAWN_CUSTOM = true;
 | 
			
		||||
    public boolean SPAWN_BREEDING = false;
 | 
			
		||||
@@ -165,10 +166,7 @@ public abstract class PlotArea {
 | 
			
		||||
        if (this == obj) {
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
        if (obj == null) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        if (getClass() != obj.getClass()) {
 | 
			
		||||
        if (obj == null || getClass() != obj.getClass()) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        PlotArea plotarea = (PlotArea) obj;
 | 
			
		||||
@@ -187,11 +185,8 @@ public abstract class PlotArea {
 | 
			
		||||
    public boolean isCompatible(PlotArea plotArea) {
 | 
			
		||||
        ConfigurationSection section = PS.get().config.getConfigurationSection("worlds");
 | 
			
		||||
        for (ConfigurationNode setting : plotArea.getSettingNodes()) {
 | 
			
		||||
            Object constant = section.get(plotArea.worldname + "." + setting.getConstant());
 | 
			
		||||
            if (constant == null) {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            if (!constant.equals(section.get(this.worldname + "." + setting.getConstant()))) {
 | 
			
		||||
            Object constant = section.get(plotArea.worldname + '.' + setting.getConstant());
 | 
			
		||||
            if (constant == null || !constant.equals(section.get(this.worldname + '.' + setting.getConstant()))) {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -269,7 +264,7 @@ public abstract class PlotArea {
 | 
			
		||||
            try {
 | 
			
		||||
                String[] split = homeDefault.split(",");
 | 
			
		||||
                this.DEFAULT_HOME = new PlotLoc(Integer.parseInt(split[0]), Integer.parseInt(split[1]));
 | 
			
		||||
            } catch (NumberFormatException e) {
 | 
			
		||||
            } catch (NumberFormatException ignored) {
 | 
			
		||||
                this.DEFAULT_HOME = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -283,7 +278,7 @@ public abstract class PlotArea {
 | 
			
		||||
                Set<String> keys = section.getKeys(false);
 | 
			
		||||
                for (String key : keys) {
 | 
			
		||||
                    if (!"default".equals(key)) {
 | 
			
		||||
                        flags.add(key + ";" + section.get(key));
 | 
			
		||||
                        flags.add(key + ';' + section.get(key));
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
@@ -475,8 +470,8 @@ public abstract class PlotArea {
 | 
			
		||||
        return myPlots;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public Set<Plot> getPlots(UUID uuid) {
 | 
			
		||||
        HashSet<Plot> myplots = new HashSet<>();
 | 
			
		||||
    public Set<Plot> getPlots(final UUID uuid) {
 | 
			
		||||
        final HashSet<Plot> myplots = new HashSet<>();
 | 
			
		||||
        for (Plot plot : getPlots()) {
 | 
			
		||||
            if (plot.isBasePlot()) {
 | 
			
		||||
                if (plot.isOwner(uuid)) {
 | 
			
		||||
@@ -488,7 +483,7 @@ public abstract class PlotArea {
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public Set<Plot> getPlots(PlotPlayer player) {
 | 
			
		||||
        return player != null ? getPlots(player.getUUID()) : new HashSet<Plot>();
 | 
			
		||||
        return getPlots(player.getUUID());
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public Set<Plot> getPlotsAbs(PlotPlayer player) {
 | 
			
		||||
@@ -499,7 +494,7 @@ public abstract class PlotArea {
 | 
			
		||||
        int count = 0;
 | 
			
		||||
        if (!Settings.DONE_COUNTS_TOWARDS_LIMIT) {
 | 
			
		||||
            for (Plot plot : getPlotsAbs(uuid)) {
 | 
			
		||||
                if (!plot.getFlags().containsKey("done")) {
 | 
			
		||||
                if (!plot.hasFlag(Flags.DONE)) {
 | 
			
		||||
                    count++;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@ public class PlotId {
 | 
			
		||||
        try {
 | 
			
		||||
            x = Integer.parseInt(parts[0]);
 | 
			
		||||
            y = Integer.parseInt(parts[1]);
 | 
			
		||||
        } catch (NumberFormatException e) {
 | 
			
		||||
        } catch (NumberFormatException ignored) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
        return new PlotId(x, y);
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@ import com.intellectualcrafters.plot.PS;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.RequiredType;
 | 
			
		||||
import com.intellectualcrafters.plot.config.Settings;
 | 
			
		||||
import com.intellectualcrafters.plot.database.DBFunc;
 | 
			
		||||
import com.intellectualcrafters.plot.flag.Flags;
 | 
			
		||||
import com.intellectualcrafters.plot.util.EventUtil;
 | 
			
		||||
import com.intellectualcrafters.plot.util.ExpireManager;
 | 
			
		||||
import com.intellectualcrafters.plot.util.Permissions;
 | 
			
		||||
@@ -145,7 +146,7 @@ public abstract class PlotPlayer implements CommandCaller {
 | 
			
		||||
            public void run(PlotArea value) {
 | 
			
		||||
                if (!Settings.DONE_COUNTS_TOWARDS_LIMIT) {
 | 
			
		||||
                    for (Plot plot : value.getPlotsAbs(uuid)) {
 | 
			
		||||
                        if (!plot.getFlags().containsKey("done")) {
 | 
			
		||||
                        if (!plot.hasFlag(Flags.DONE)) {
 | 
			
		||||
                            count.incrementAndGet();
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 
 | 
			
		||||
@@ -222,8 +222,7 @@ public abstract class ChunkManager {
 | 
			
		||||
                    int z = Integer.parseInt(split[2]);
 | 
			
		||||
                    ChunkLoc loc = new ChunkLoc(x, z);
 | 
			
		||||
                    chunks.add(loc);
 | 
			
		||||
                } catch (NumberFormatException ignored) {
 | 
			
		||||
                }
 | 
			
		||||
                } catch (NumberFormatException ignored) {}
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return chunks;
 | 
			
		||||
 
 | 
			
		||||
@@ -431,7 +431,7 @@ public class MainUtil {
 | 
			
		||||
        if (arg == null) {
 | 
			
		||||
            if (player == null) {
 | 
			
		||||
                if (message) {
 | 
			
		||||
                    MainUtil.sendMessage(player, C.NOT_VALID_PLOT_WORLD);
 | 
			
		||||
                    PS.log(C.NOT_VALID_PLOT_WORLD);
 | 
			
		||||
                }
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -70,8 +70,7 @@ public class ReflectionUtils {
 | 
			
		||||
                Object value = field.get(null);
 | 
			
		||||
                try {
 | 
			
		||||
                    list.add((T) value);
 | 
			
		||||
                } catch (ClassCastException ignored) {
 | 
			
		||||
                }
 | 
			
		||||
                } catch (ClassCastException ignored) {}
 | 
			
		||||
            }
 | 
			
		||||
        } catch (IllegalAccessException | IllegalArgumentException | SecurityException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
@@ -92,14 +91,13 @@ public class ReflectionUtils {
 | 
			
		||||
    public static Class<?> getUtilClass(String name) {
 | 
			
		||||
        try {
 | 
			
		||||
            return Class.forName(name); //Try before 1.8 first
 | 
			
		||||
        } catch (ClassNotFoundException ignored) {
 | 
			
		||||
        } catch (ClassNotFoundException ignored) {}
 | 
			
		||||
        try {
 | 
			
		||||
            return Class.forName("net.minecraft.util." + name); //Not 1.8
 | 
			
		||||
            } catch (ClassNotFoundException ignored2) {
 | 
			
		||||
        } catch (ClassNotFoundException ignored) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static Object getHandle(Object wrapper) {
 | 
			
		||||
        Method getHandle = makeMethod(wrapper.getClass(), "getHandle");
 | 
			
		||||
@@ -112,8 +110,6 @@ public class ReflectionUtils {
 | 
			
		||||
            return clazz.getDeclaredMethod(methodName, paramaters);
 | 
			
		||||
        } catch (NoSuchMethodException ignored) {
 | 
			
		||||
            return null;
 | 
			
		||||
        } catch (SecurityException ex) {
 | 
			
		||||
            throw new RuntimeException(ex);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -138,8 +134,6 @@ public class ReflectionUtils {
 | 
			
		||||
            return (Constructor<T>) clazz.getConstructor(paramaterTypes);
 | 
			
		||||
        } catch (NoSuchMethodException ignored) {
 | 
			
		||||
            return null;
 | 
			
		||||
        } catch (SecurityException ex) {
 | 
			
		||||
            throw new RuntimeException(ex);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -162,8 +156,6 @@ public class ReflectionUtils {
 | 
			
		||||
            return clazz.getDeclaredField(name);
 | 
			
		||||
        } catch (NoSuchFieldException ignored) {
 | 
			
		||||
            return null;
 | 
			
		||||
        } catch (SecurityException ex) {
 | 
			
		||||
            throw new RuntimeException(ex);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -187,7 +179,7 @@ public class ReflectionUtils {
 | 
			
		||||
        field.setAccessible(true);
 | 
			
		||||
        try {
 | 
			
		||||
            field.set(instance, value);
 | 
			
		||||
        } catch (Exception ex) {
 | 
			
		||||
        } catch (IllegalAccessException | IllegalArgumentException ex) {
 | 
			
		||||
            throw new RuntimeException(ex);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -195,7 +187,7 @@ public class ReflectionUtils {
 | 
			
		||||
    public static Class<?> getClass(String name) {
 | 
			
		||||
        try {
 | 
			
		||||
            return Class.forName(name);
 | 
			
		||||
        } catch (ClassNotFoundException ex) {
 | 
			
		||||
        } catch (ClassNotFoundException ignored) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -203,7 +195,7 @@ public class ReflectionUtils {
 | 
			
		||||
    public static <T> Class<? extends T> getClass(String name, Class<T> superClass) {
 | 
			
		||||
        try {
 | 
			
		||||
            return Class.forName(name).asSubclass(superClass);
 | 
			
		||||
        } catch (ClassCastException | ClassNotFoundException ex) {
 | 
			
		||||
        } catch (ClassCastException | ClassNotFoundException ignored) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -212,21 +204,15 @@ public class ReflectionUtils {
 | 
			
		||||
     * Get class for name. Replace {nms} to net.minecraft.server.V*. Replace {cb} to org.bukkit.craftbukkit.V*. Replace
 | 
			
		||||
     * {nm} to net.minecraft
 | 
			
		||||
     *
 | 
			
		||||
     * @param classes possible class paths
 | 
			
		||||
     * @param className possible class paths
 | 
			
		||||
     *
 | 
			
		||||
     * @return RefClass object
 | 
			
		||||
     *
 | 
			
		||||
     * @throws RuntimeException if no class found
 | 
			
		||||
     * @throws ClassNotFoundException if no class found
 | 
			
		||||
     */
 | 
			
		||||
    public static RefClass getRefClass(String... classes) throws RuntimeException {
 | 
			
		||||
        for (String className : classes) {
 | 
			
		||||
            try {
 | 
			
		||||
    public static RefClass getRefClass(String className) throws ClassNotFoundException {
 | 
			
		||||
        className = className.replace("{cb}", preClassB).replace("{nms}", preClassM).replace("{nm}", "net.minecraft");
 | 
			
		||||
        return getRefClass(Class.forName(className));
 | 
			
		||||
            } catch (ClassNotFoundException ignored) {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        throw new RuntimeException("no class found");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -281,8 +267,7 @@ public class ReflectionUtils {
 | 
			
		||||
         *
 | 
			
		||||
         * @throws RuntimeException if method not found
 | 
			
		||||
         */
 | 
			
		||||
        public RefMethod getMethod(String name, Object... types) {
 | 
			
		||||
            try {
 | 
			
		||||
        public RefMethod getMethod(String name, Object... types) throws NoSuchMethodException {
 | 
			
		||||
            Class[] classes = new Class[types.length];
 | 
			
		||||
            int i = 0;
 | 
			
		||||
            for (Object e : types) {
 | 
			
		||||
@@ -299,9 +284,6 @@ public class ReflectionUtils {
 | 
			
		||||
            } catch (NoSuchMethodException ignored) {
 | 
			
		||||
                return new RefMethod(this.clazz.getDeclaredMethod(name, classes));
 | 
			
		||||
            }
 | 
			
		||||
            } catch (NoSuchMethodException | SecurityException e) {
 | 
			
		||||
                throw new RuntimeException(e);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
@@ -313,8 +295,7 @@ public class ReflectionUtils {
 | 
			
		||||
         *
 | 
			
		||||
         * @throws RuntimeException if constructor not found
 | 
			
		||||
         */
 | 
			
		||||
        public RefConstructor getConstructor(Object... types) {
 | 
			
		||||
            try {
 | 
			
		||||
        public RefConstructor getConstructor(Object... types) throws NoSuchMethodException {
 | 
			
		||||
            Class[] classes = new Class[types.length];
 | 
			
		||||
            int i = 0;
 | 
			
		||||
            for (Object e : types) {
 | 
			
		||||
@@ -331,9 +312,6 @@ public class ReflectionUtils {
 | 
			
		||||
            } catch (NoSuchMethodException ignored) {
 | 
			
		||||
                return new RefConstructor(this.clazz.getDeclaredConstructor(classes));
 | 
			
		||||
            }
 | 
			
		||||
            } catch (NoSuchMethodException | SecurityException e) {
 | 
			
		||||
                throw new RuntimeException(e);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
@@ -466,16 +444,12 @@ public class ReflectionUtils {
 | 
			
		||||
         *
 | 
			
		||||
         * @throws RuntimeException if field not found
 | 
			
		||||
         */
 | 
			
		||||
        public RefField getField(String name) {
 | 
			
		||||
            try {
 | 
			
		||||
        public RefField getField(String name) throws NoSuchFieldException {
 | 
			
		||||
            try {
 | 
			
		||||
                return new RefField(this.clazz.getField(name));
 | 
			
		||||
            } catch (NoSuchFieldException ignored) {
 | 
			
		||||
                return new RefField(this.clazz.getDeclaredField(name));
 | 
			
		||||
            }
 | 
			
		||||
            } catch (Exception e) {
 | 
			
		||||
                throw new RuntimeException(e);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
@@ -570,7 +544,7 @@ public class ReflectionUtils {
 | 
			
		||||
        public Object call(Object... params) {
 | 
			
		||||
            try {
 | 
			
		||||
                return this.method.invoke(null, params);
 | 
			
		||||
            } catch (Exception e) {
 | 
			
		||||
            } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
 | 
			
		||||
                throw new RuntimeException(e);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -152,7 +152,7 @@ public abstract class UUIDHandlerImplementation {
 | 
			
		||||
                }
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
        } catch (Exception ignored) {
 | 
			
		||||
            BiMap<UUID, StringWrapper> inverse = this.uuidMap.inverse();
 | 
			
		||||
            if (inverse.containsKey(uuid)) {
 | 
			
		||||
                if (this.uuidMap.containsKey(name)) {
 | 
			
		||||
 
 | 
			
		||||
@@ -10,8 +10,7 @@ public abstract class Argument<T> {
 | 
			
		||||
            Integer value = null;
 | 
			
		||||
            try {
 | 
			
		||||
                value = java.lang.Integer.parseInt(in);
 | 
			
		||||
            } catch (Exception ignored) {
 | 
			
		||||
            }
 | 
			
		||||
            } catch (Exception ignored) {}
 | 
			
		||||
            return value;
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 
 | 
			
		||||
@@ -298,8 +298,7 @@ public abstract class Command {
 | 
			
		||||
                    MainCommand.getInstance().help.execute(player, args, null, null);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            } catch (IllegalArgumentException ignored) {
 | 
			
		||||
            }
 | 
			
		||||
            } catch (IllegalArgumentException ignored) {}
 | 
			
		||||
            // Command recommendation
 | 
			
		||||
            MainUtil.sendMessage(player, C.NOT_VALID_SUBCOMMAND);
 | 
			
		||||
            List<Command> commands = getCommands(player);
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,7 @@ public class PlotListener {
 | 
			
		||||
        pp.setMeta("lastplot", plot);
 | 
			
		||||
        EventUtil.manager.callEntry(pp, plot);
 | 
			
		||||
        if (plot.hasOwner()) {
 | 
			
		||||
            HashMap<Flag<?>, Object> flags = FlagManager.getPlotFlags(plot);
 | 
			
		||||
            Map<Flag<?>, Object> flags = FlagManager.getPlotFlags(plot);
 | 
			
		||||
            int size = flags.size();
 | 
			
		||||
            boolean titles = Settings.TITLES;
 | 
			
		||||
            final String greeting;
 | 
			
		||||
@@ -122,8 +122,7 @@ public class PlotListener {
 | 
			
		||||
                            try {
 | 
			
		||||
                                pp.setMeta("music", loc);
 | 
			
		||||
                                pp.playMusic(loc, id);
 | 
			
		||||
                            } catch (Exception ignored) {
 | 
			
		||||
                            }
 | 
			
		||||
                            } catch (Exception ignored) {}
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                } else {
 | 
			
		||||
 
 | 
			
		||||
@@ -84,8 +84,7 @@ public class WESubscriber {
 | 
			
		||||
                                if (tool instanceof BrushTool) {
 | 
			
		||||
                                    hasMask = ((BrushTool) tool).getMask() != null;
 | 
			
		||||
                                }
 | 
			
		||||
                            } catch (Exception ignored) {
 | 
			
		||||
                            }
 | 
			
		||||
                            } catch (Exception ignored) {}
 | 
			
		||||
                        }
 | 
			
		||||
                        AbstractDelegateExtent extent = (AbstractDelegateExtent) event.getExtent();
 | 
			
		||||
                        ChangeSetExtent history = null;
 | 
			
		||||
 
 | 
			
		||||
@@ -17,53 +17,37 @@ import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
public class AbstractDBTest implements AbstractDB {
 | 
			
		||||
 | 
			
		||||
    @Override public void setOwner(Plot plot, UUID uuid) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void setOwner(Plot plot, UUID uuid) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void createPlotsAndData(ArrayList<Plot> plots, Runnable whenDone) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void createPlotsAndData(ArrayList<Plot> plots, Runnable whenDone) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void createPlot(Plot plot) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void createPlot(Plot plot) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void createTables() {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void createTables() {}
 | 
			
		||||
 | 
			
		||||
    @Override public void delete(Plot plot) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void delete(Plot plot) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void deleteSettings(Plot plot) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void deleteSettings(Plot plot) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void deleteHelpers(Plot plot) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void deleteHelpers(Plot plot) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void deleteTrusted(Plot plot) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void deleteTrusted(Plot plot) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void deleteDenied(Plot plot) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void deleteDenied(Plot plot) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void deleteComments(Plot plot) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void deleteComments(Plot plot) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void deleteRatings(Plot plot) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void deleteRatings(Plot plot) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void delete(PlotCluster cluster) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void delete(PlotCluster cluster) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void addPersistentMeta(UUID uuid, String key, byte[] meta, boolean delete) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void addPersistentMeta(UUID uuid, String key, byte[] meta, boolean delete) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void removePersistentMeta(UUID uuid, String key) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void removePersistentMeta(UUID uuid, String key) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void getPersistentMeta(UUID uuid, RunnableVal<Map<String, byte[]>> result) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void getPersistentMeta(UUID uuid, RunnableVal<Map<String, byte[]>> result) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void createPlotSettings(int id, Plot plot) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void createPlotSettings(int id, Plot plot) {}
 | 
			
		||||
 | 
			
		||||
    @Override public int getId(Plot plot) {
 | 
			
		||||
        return 0;
 | 
			
		||||
@@ -77,117 +61,83 @@ public class AbstractDBTest implements AbstractDB {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override public void validateAllPlots(Set<Plot> toValidate) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void validateAllPlots(Set<Plot> toValidate) {}
 | 
			
		||||
 | 
			
		||||
    @Override public HashMap<String, Set<PlotCluster>> getClusters() {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override public void setMerged(Plot plot, boolean[] merged) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void setMerged(Plot plot, boolean[] merged) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void swapPlots(Plot plot1, Plot plot2) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void swapPlots(Plot plot1, Plot plot2) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void setFlags(Plot plot, HashMap<Flag<?>, Object> flags) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void setFlags(Plot plot, HashMap<Flag<?>, Object> flags) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void setFlags(PlotCluster cluster, HashMap<Flag<?>, Object> flags) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void setFlags(PlotCluster cluster, HashMap<Flag<?>, Object> flags) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void setClusterName(PlotCluster cluster, String name) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void setClusterName(PlotCluster cluster, String name) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void setAlias(Plot plot, String alias) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void setAlias(Plot plot, String alias) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void purgeIds(Set<Integer> uniqueIds) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void purgeIds(Set<Integer> uniqueIds) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void purge(PlotArea area, Set<PlotId> plotIds) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void purge(PlotArea area, Set<PlotId> plotIds) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void setPosition(Plot plot, String position) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void setPosition(Plot plot, String position) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void setPosition(PlotCluster cluster, String position) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void setPosition(PlotCluster cluster, String position) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void removeTrusted(Plot plot, UUID uuid) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void removeTrusted(Plot plot, UUID uuid) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void removeHelper(PlotCluster cluster, UUID uuid) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void removeHelper(PlotCluster cluster, UUID uuid) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void removeMember(Plot plot, UUID uuid) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void removeMember(Plot plot, UUID uuid) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void removeInvited(PlotCluster cluster, UUID uuid) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void removeInvited(PlotCluster cluster, UUID uuid) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void setTrusted(Plot plot, UUID uuid) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void setTrusted(Plot plot, UUID uuid) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void setHelper(PlotCluster cluster, UUID uuid) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void setHelper(PlotCluster cluster, UUID uuid) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void setMember(Plot plot, UUID uuid) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void setMember(Plot plot, UUID uuid) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void setInvited(PlotCluster cluster, UUID uuid) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void setInvited(PlotCluster cluster, UUID uuid) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void removeDenied(Plot plot, UUID uuid) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void removeDenied(Plot plot, UUID uuid) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void setDenied(Plot plot, UUID uuid) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void setDenied(Plot plot, UUID uuid) {}
 | 
			
		||||
 | 
			
		||||
    @Override public HashMap<UUID, Integer> getRatings(Plot plot) {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override public void setRating(Plot plot, UUID rater, int value) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void setRating(Plot plot, UUID rater, int value) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void removeComment(Plot plot, PlotComment comment) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void removeComment(Plot plot, PlotComment comment) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void clearInbox(Plot plot, String inbox) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void clearInbox(Plot plot, String inbox) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void setComment(Plot plot, PlotComment comment) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void setComment(Plot plot, PlotComment comment) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void getComments(Plot plot, String inbox, RunnableVal<List<PlotComment>> whenDone) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void getComments(Plot plot, String inbox, RunnableVal<List<PlotComment>> whenDone) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void createPlotAndSettings(Plot plot, Runnable whenDone) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void createPlotAndSettings(Plot plot, Runnable whenDone) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void createCluster(PlotCluster cluster) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void createCluster(PlotCluster cluster) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void resizeCluster(PlotCluster current, PlotId min, PlotId max) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void resizeCluster(PlotCluster current, PlotId min, PlotId max) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void movePlot(Plot originalPlot, Plot newPlot) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void movePlot(Plot originalPlot, Plot newPlot) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void replaceUUID(UUID old, UUID now) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void replaceUUID(UUID old, UUID now) {}
 | 
			
		||||
 | 
			
		||||
    @Override public boolean deleteTables() {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override public void close() {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void close() {}
 | 
			
		||||
 | 
			
		||||
    @Override public void replaceWorld(String oldWorld, String newWorld, PlotId min, PlotId max) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void replaceWorld(String oldWorld, String newWorld, PlotId min, PlotId max) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void updateTables(int[] oldVersion) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void updateTables(int[] oldVersion) {}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -30,8 +30,7 @@ public class EventUtilTest extends EventUtil {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override public void callDelete(Plot plot) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void callDelete(Plot plot) {}
 | 
			
		||||
 | 
			
		||||
    @Override public boolean callFlagAdd(Flag flag, Plot plot) {
 | 
			
		||||
        return true;
 | 
			
		||||
@@ -53,18 +52,13 @@ public class EventUtilTest extends EventUtil {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override public void callEntry(PlotPlayer player, Plot plot) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void callEntry(PlotPlayer player, Plot plot) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void callLeave(PlotPlayer player, Plot plot) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void callLeave(PlotPlayer player, Plot plot) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void callDenied(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void callDenied(PlotPlayer initiator, Plot plot, UUID player, boolean added) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void callTrusted(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void callTrusted(PlotPlayer initiator, Plot plot, UUID player, boolean added) {}
 | 
			
		||||
 | 
			
		||||
    @Override public void callMember(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
 | 
			
		||||
    }
 | 
			
		||||
    @Override public void callMember(PlotPlayer initiator, Plot plot, UUID player, boolean added) {}
 | 
			
		||||
}
 | 
			
		||||
@@ -19,8 +19,7 @@ public class SpongeAugmentedGenerator implements GenerationPopulator {
 | 
			
		||||
    
 | 
			
		||||
    private static SpongeAugmentedGenerator generator;
 | 
			
		||||
 | 
			
		||||
    private SpongeAugmentedGenerator() {
 | 
			
		||||
    }
 | 
			
		||||
    private SpongeAugmentedGenerator() {}
 | 
			
		||||
 | 
			
		||||
    public static SpongeAugmentedGenerator get(World world) {
 | 
			
		||||
        WorldGenerator wg = world.getWorldGenerator();
 | 
			
		||||
 
 | 
			
		||||
@@ -145,7 +145,8 @@ public class SpongeUtil extends WorldUtil {
 | 
			
		||||
            PS.debug("Caching block id/data: Please wait...");
 | 
			
		||||
            stateArray = new BlockState[Character.MAX_VALUE];
 | 
			
		||||
            stateMap = new HashMap<>();
 | 
			
		||||
            Method methodGetByCombinedId = ReflectionUtils.findMethod(Class.forName("net.minecraft.block.Block"), true, Class.forName("net.minecraft.block.state.IBlockState"), int.class);
 | 
			
		||||
            Method methodGetByCombinedId = ReflectionUtils
 | 
			
		||||
                    .findMethod(Class.forName("net.minecraft.block.Block"), true, Class.forName("net.minecraft.block.state.IBlockState"), int.class);
 | 
			
		||||
            for (int i = 0; i < Character.MAX_VALUE; i++) {
 | 
			
		||||
                try {
 | 
			
		||||
                    BlockState state = (BlockState) methodGetByCombinedId.invoke(null, i);
 | 
			
		||||
@@ -159,7 +160,7 @@ public class SpongeUtil extends WorldUtil {
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            PS.debug("Done!");
 | 
			
		||||
        } catch (Throwable e) {
 | 
			
		||||
        } catch (ClassNotFoundException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -304,8 +305,7 @@ public class SpongeUtil extends WorldUtil {
 | 
			
		||||
            StringComparison<PlotBlock> outer = new StringComparison<PlotBlock>();
 | 
			
		||||
            return outer.new ComparisonResult(match, block);
 | 
			
		||||
 | 
			
		||||
        } catch (NumberFormatException ignored) {
 | 
			
		||||
        }
 | 
			
		||||
        } catch (NumberFormatException ignored) {}
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user