mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-11-04 03:03:43 +01:00 
			
		
		
		
	Nothing is implemented, but it can compile and "run" on sponge now.
This commit is contained in:
		@@ -5,8 +5,7 @@ import com.intellectualcrafters.plot.generator.HybridUtils;
 | 
			
		||||
import com.intellectualcrafters.plot.generator.PlotGenerator;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotPlayer;
 | 
			
		||||
import com.intellectualcrafters.plot.util.*;
 | 
			
		||||
import com.plotsquared.bukkit.listeners.APlotListener;
 | 
			
		||||
import com.plotsquared.bukkit.util.SetupUtils;
 | 
			
		||||
import com.plotsquared.listener.APlotListener;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 
 | 
			
		||||
@@ -12,9 +12,7 @@ import com.intellectualcrafters.plot.flag.FlagValue;
 | 
			
		||||
import com.intellectualcrafters.plot.generator.*;
 | 
			
		||||
import com.intellectualcrafters.plot.object.*;
 | 
			
		||||
import com.intellectualcrafters.plot.util.*;
 | 
			
		||||
import com.plotsquared.bukkit.listeners.APlotListener;
 | 
			
		||||
import com.plotsquared.bukkit.object.comment.CommentManager;
 | 
			
		||||
import com.plotsquared.bukkit.util.SetupUtils;
 | 
			
		||||
import com.plotsquared.listener.APlotListener;
 | 
			
		||||
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
 | 
			
		||||
 | 
			
		||||
import java.io.*;
 | 
			
		||||
@@ -73,136 +71,143 @@ public class PS {
 | 
			
		||||
     * @param imp_class
 | 
			
		||||
     */
 | 
			
		||||
    public PS(final IPlotMain imp_class) {
 | 
			
		||||
        instance = this;
 | 
			
		||||
        SetupUtils.generators = new HashMap<>();
 | 
			
		||||
        IMP = imp_class;
 | 
			
		||||
        try {
 | 
			
		||||
            FILE = new File(PS.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            log("Could not determine file path");
 | 
			
		||||
        }
 | 
			
		||||
        VERSION = IMP.getPluginVersion();
 | 
			
		||||
        EconHandler.manager = IMP.getEconomyHandler();
 | 
			
		||||
        if (getJavaVersion() < 1.7) {
 | 
			
		||||
            log(C.PREFIX.s() + "&cYour java version is outdated. Please update to at least 1.7.");
 | 
			
		||||
            // Didn't know of any other link :D
 | 
			
		||||
            log(C.PREFIX.s() + "&cURL: &6https://java.com/en/download/index.jsp");
 | 
			
		||||
            IMP.disable();
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        if (getJavaVersion() < 1.8) {
 | 
			
		||||
            log(C.PREFIX.s() + "&cIt's really recommended to run Java 1.8, as it increases performance");
 | 
			
		||||
        }
 | 
			
		||||
        this.TASK = IMP.getTaskManager();
 | 
			
		||||
        if (C.ENABLED.s().length() > 0) {
 | 
			
		||||
            log(C.ENABLED.s());
 | 
			
		||||
        }
 | 
			
		||||
        setupConfigs();
 | 
			
		||||
        this.translationFile = new File(IMP.getDirectory() + File.separator + "translations" + File.separator + "PlotSquared.use_THIS.yml");
 | 
			
		||||
        C.load(translationFile);
 | 
			
		||||
        setupDefaultFlags();
 | 
			
		||||
        setupDatabase();
 | 
			
		||||
        CommentManager.registerDefaultInboxes();
 | 
			
		||||
        // Tasks
 | 
			
		||||
        if (Settings.KILL_ROAD_MOBS) {
 | 
			
		||||
            IMP.runEntityTask();
 | 
			
		||||
        }
 | 
			
		||||
        // Events
 | 
			
		||||
        IMP.registerCommands();
 | 
			
		||||
        IMP.registerPlayerEvents();
 | 
			
		||||
        IMP.registerInventoryEvents();
 | 
			
		||||
        IMP.registerPlotPlusEvents();
 | 
			
		||||
        IMP.registerForceFieldEvents();
 | 
			
		||||
        IMP.registerWorldEditEvents();
 | 
			
		||||
        IMP.registerWorldEvents();
 | 
			
		||||
        if (Settings.METRICS) {
 | 
			
		||||
            IMP.startMetrics();
 | 
			
		||||
        } else {
 | 
			
		||||
            log("&dUsing metrics will allow us to improve the plugin, please consider it :)");
 | 
			
		||||
        }
 | 
			
		||||
        IMP.startMetrics();
 | 
			
		||||
        if (Settings.TNT_LISTENER) {
 | 
			
		||||
            IMP.registerTNTListener();
 | 
			
		||||
        }
 | 
			
		||||
        if (Settings.CHUNK_PROCESSOR) {
 | 
			
		||||
            IMP.registerChunkProcessor();
 | 
			
		||||
        }
 | 
			
		||||
        // create UUIDWrapper
 | 
			
		||||
        UUIDHandler.implementation = IMP.initUUIDHandler();
 | 
			
		||||
        UUIDHandler.implementation.startCaching(null); // TODO maybe a notification when this is done?
 | 
			
		||||
        // create event util class
 | 
			
		||||
        EventUtil.manager = IMP.initEventUtil();
 | 
			
		||||
        // create Hybrid utility class
 | 
			
		||||
        HybridUtils.manager = IMP.initHybridUtils();
 | 
			
		||||
        // Inventory utility class
 | 
			
		||||
        InventoryUtil.manager = IMP.initInventoryUtil();
 | 
			
		||||
        // create setup util class
 | 
			
		||||
        SetupUtils.manager = IMP.initSetupUtils();
 | 
			
		||||
        // Set block
 | 
			
		||||
        BlockManager.manager = IMP.initBlockManager();
 | 
			
		||||
        // Set chunk
 | 
			
		||||
        ChunkManager.manager = IMP.initChunkManager();
 | 
			
		||||
        // Plot listener
 | 
			
		||||
        APlotListener.manager = IMP.initPlotListener();
 | 
			
		||||
        // Player manager
 | 
			
		||||
        PlayerManager.manager = IMP.initPlayerManager();
 | 
			
		||||
 | 
			
		||||
        // Check for updates
 | 
			
		||||
        TaskManager.runTaskAsync(new Runnable() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void run() {
 | 
			
		||||
                URL url = getUpdate();
 | 
			
		||||
                if (url != null) {
 | 
			
		||||
                    update = url;
 | 
			
		||||
                    log("&6You are running an older version of PlotSquared...");
 | 
			
		||||
                    log("&8 - &3Use: &7/plot update");
 | 
			
		||||
                    log("&8 - &3Or: &7" + url);
 | 
			
		||||
                }
 | 
			
		||||
                else if (LAST_VERSION != null && !VERSION.equals(LAST_VERSION)) {
 | 
			
		||||
                    log("&aThanks for updating from: " + LAST_VERSION + " to " + StringMan.join(VERSION, "."));
 | 
			
		||||
                }
 | 
			
		||||
            instance = this;
 | 
			
		||||
            SetupUtils.generators = new HashMap<>();
 | 
			
		||||
            IMP = imp_class;
 | 
			
		||||
            try {
 | 
			
		||||
                FILE = new File(PS.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
 | 
			
		||||
            } catch (Exception e) {
 | 
			
		||||
                FILE = new File(IMP.getDirectory().getParentFile(), "PlotSquared.jar");
 | 
			
		||||
                e.printStackTrace();
 | 
			
		||||
                log("Could not determine file path");
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        
 | 
			
		||||
        // PlotMe
 | 
			
		||||
        if (Settings.CONVERT_PLOTME || Settings.CACHE_PLOTME) {
 | 
			
		||||
            TaskManager.runTaskLater(new Runnable() {
 | 
			
		||||
 | 
			
		||||
            VERSION = IMP.getPluginVersion();
 | 
			
		||||
            EconHandler.manager = IMP.getEconomyHandler();
 | 
			
		||||
            if (getJavaVersion() < 1.7) {
 | 
			
		||||
                log(C.PREFIX.s() + "&cYour java version is outdated. Please update to at least 1.7.");
 | 
			
		||||
                // Didn't know of any other link :D
 | 
			
		||||
                log(C.PREFIX.s() + "&cURL: &6https://java.com/en/download/index.jsp");
 | 
			
		||||
                IMP.disable();
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            if (getJavaVersion() < 1.8) {
 | 
			
		||||
                log(C.PREFIX.s() + "&cIt's really recommended to run Java 1.8, as it increases performance");
 | 
			
		||||
            }
 | 
			
		||||
            this.TASK = IMP.getTaskManager();
 | 
			
		||||
            if (C.ENABLED.s().length() > 0) {
 | 
			
		||||
                log(C.ENABLED.s());
 | 
			
		||||
            }
 | 
			
		||||
            setupConfigs();
 | 
			
		||||
            this.translationFile = new File(IMP.getDirectory() + File.separator + "translations" + File.separator + "PlotSquared.use_THIS.yml");
 | 
			
		||||
            C.load(translationFile);
 | 
			
		||||
            setupDefaultFlags();
 | 
			
		||||
            setupDatabase();
 | 
			
		||||
            CommentManager.registerDefaultInboxes();
 | 
			
		||||
            // Tasks
 | 
			
		||||
            if (Settings.KILL_ROAD_MOBS) {
 | 
			
		||||
                IMP.runEntityTask();
 | 
			
		||||
            }
 | 
			
		||||
            // Events
 | 
			
		||||
            IMP.registerCommands();
 | 
			
		||||
            IMP.registerPlayerEvents();
 | 
			
		||||
            IMP.registerInventoryEvents();
 | 
			
		||||
            IMP.registerPlotPlusEvents();
 | 
			
		||||
            IMP.registerForceFieldEvents();
 | 
			
		||||
            IMP.registerWorldEditEvents();
 | 
			
		||||
            IMP.registerWorldEvents();
 | 
			
		||||
            if (Settings.METRICS) {
 | 
			
		||||
                IMP.startMetrics();
 | 
			
		||||
            } else {
 | 
			
		||||
                log("&dUsing metrics will allow us to improve the plugin, please consider it :)");
 | 
			
		||||
            }
 | 
			
		||||
            IMP.startMetrics();
 | 
			
		||||
            if (Settings.TNT_LISTENER) {
 | 
			
		||||
                IMP.registerTNTListener();
 | 
			
		||||
            }
 | 
			
		||||
            if (Settings.CHUNK_PROCESSOR) {
 | 
			
		||||
                IMP.registerChunkProcessor();
 | 
			
		||||
            }
 | 
			
		||||
            // create UUIDWrapper
 | 
			
		||||
            UUIDHandler.implementation = IMP.initUUIDHandler();
 | 
			
		||||
            UUIDHandler.startCaching(null); // TODO maybe a notification when this is done?
 | 
			
		||||
            // create event util class
 | 
			
		||||
            EventUtil.manager = IMP.initEventUtil();
 | 
			
		||||
            // create Hybrid utility class
 | 
			
		||||
            HybridUtils.manager = IMP.initHybridUtils();
 | 
			
		||||
            // Inventory utility class
 | 
			
		||||
            InventoryUtil.manager = IMP.initInventoryUtil();
 | 
			
		||||
            // create setup util class
 | 
			
		||||
            SetupUtils.manager = IMP.initSetupUtils();
 | 
			
		||||
            // Set block
 | 
			
		||||
            BlockManager.manager = IMP.initBlockManager();
 | 
			
		||||
            // Set chunk
 | 
			
		||||
            ChunkManager.manager = IMP.initChunkManager();
 | 
			
		||||
            // Plot listener
 | 
			
		||||
            APlotListener.manager = IMP.initPlotListener();
 | 
			
		||||
            // Player manager
 | 
			
		||||
            PlayerManager.manager = IMP.initPlayerManager();
 | 
			
		||||
    
 | 
			
		||||
            // Check for updates
 | 
			
		||||
            TaskManager.runTaskAsync(new Runnable() {
 | 
			
		||||
                @Override
 | 
			
		||||
                public void run() {
 | 
			
		||||
                    if (IMP.initPlotMeConverter()) {
 | 
			
		||||
                        log("&c=== IMPORTANT ===");
 | 
			
		||||
                        log("&cTHIS MESSAGE MAY BE EXTREMELY HELPFUL IF YOU HAVE TROUBLE CONVERTING PLOTME!");
 | 
			
		||||
                        log("&c - Make sure 'UUID.read-from-disk' is disabled (false)!");
 | 
			
		||||
                        log("&c - Sometimes the database can be locked, deleting PlotMe.jar beforehand will fix the issue!");
 | 
			
		||||
                        log("&c - After the conversion is finished, please set 'plotme-convert.enabled' to false in the 'settings.yml'");
 | 
			
		||||
                    URL url = getUpdate();
 | 
			
		||||
                    if (url != null) {
 | 
			
		||||
                        update = url;
 | 
			
		||||
                        log("&6You are running an older version of PlotSquared...");
 | 
			
		||||
                        log("&8 - &3Use: &7/plot update");
 | 
			
		||||
                        log("&8 - &3Or: &7" + url);
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (LAST_VERSION != null && !StringMan.join(VERSION,".").equals(LAST_VERSION)) {
 | 
			
		||||
                        log("&aThanks for updating from: " + LAST_VERSION + " to " + StringMan.join(VERSION, "."));
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }, 200);
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        // Auto clearing
 | 
			
		||||
        if (Settings.AUTO_CLEAR) {
 | 
			
		||||
            ExpireManager.runTask();
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        // World generators:
 | 
			
		||||
        ConfigurationSection section = config.getConfigurationSection("worlds");
 | 
			
		||||
        if (section != null) {
 | 
			
		||||
            for (String world : section.getKeys(false)) {
 | 
			
		||||
                if (BlockManager.manager.isWorld(world)) {
 | 
			
		||||
                    break;
 | 
			
		||||
            });
 | 
			
		||||
            
 | 
			
		||||
            // PlotMe
 | 
			
		||||
            if (Settings.CONVERT_PLOTME || Settings.CACHE_PLOTME) {
 | 
			
		||||
                TaskManager.runTaskLater(new Runnable() {
 | 
			
		||||
    
 | 
			
		||||
                    public void run() {
 | 
			
		||||
                        if (IMP.initPlotMeConverter()) {
 | 
			
		||||
                            log("&c=== IMPORTANT ===");
 | 
			
		||||
                            log("&cTHIS MESSAGE MAY BE EXTREMELY HELPFUL IF YOU HAVE TROUBLE CONVERTING PLOTME!");
 | 
			
		||||
                            log("&c - Make sure 'UUID.read-from-disk' is disabled (false)!");
 | 
			
		||||
                            log("&c - Sometimes the database can be locked, deleting PlotMe.jar beforehand will fix the issue!");
 | 
			
		||||
                            log("&c - After the conversion is finished, please set 'plotme-convert.enabled' to false in the 'settings.yml'");
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }, 200);
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            // Auto clearing
 | 
			
		||||
            if (Settings.AUTO_CLEAR) {
 | 
			
		||||
                ExpireManager.runTask();
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            // World generators:
 | 
			
		||||
            ConfigurationSection section = config.getConfigurationSection("worlds");
 | 
			
		||||
            if (section != null) {
 | 
			
		||||
                for (String world : section.getKeys(false)) {
 | 
			
		||||
                    if (BlockManager.manager.isWorld(world)) {
 | 
			
		||||
                        break;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
    
 | 
			
		||||
            // Copy files
 | 
			
		||||
            copyFile("town.template", "templates");
 | 
			
		||||
            copyFile("skyblock.template", "templates");
 | 
			
		||||
            copyFile("german.yml", "translations");
 | 
			
		||||
            copyFile("s_chinese_unescaped.yml", "translations");
 | 
			
		||||
            copyFile("s_chinese.yml", "translations");
 | 
			
		||||
            copyFile("italian.yml", "translations");
 | 
			
		||||
            showDebug();
 | 
			
		||||
        }
 | 
			
		||||
        catch (Throwable e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Copy files
 | 
			
		||||
        copyFile("town.template", "templates");
 | 
			
		||||
        copyFile("skyblock.template", "templates");
 | 
			
		||||
        copyFile("german.yml", "translations");
 | 
			
		||||
        copyFile("s_chinese_unescaped.yml", "translations");
 | 
			
		||||
        copyFile("s_chinese.yml", "translations");
 | 
			
		||||
        copyFile("italian.yml", "translations");
 | 
			
		||||
        showDebug();
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public boolean checkVersion(int[] version, int major, int minor, int minor2) {
 | 
			
		||||
@@ -1260,7 +1265,7 @@ public class PS {
 | 
			
		||||
     */
 | 
			
		||||
    public void setupConfig() {
 | 
			
		||||
        LAST_VERSION = config.getString("version");
 | 
			
		||||
        config.set("version", VERSION);
 | 
			
		||||
        config.set("version", StringMan.join(VERSION,"."));
 | 
			
		||||
        
 | 
			
		||||
        final Map<String, Object> options = new HashMap<>();
 | 
			
		||||
        // Command confirmation
 | 
			
		||||
@@ -1553,7 +1558,7 @@ public class PS {
 | 
			
		||||
     * Setup the storage file (load + save missing nodes)
 | 
			
		||||
     */
 | 
			
		||||
    private void setupStorage() {
 | 
			
		||||
        storage.set("version", VERSION);
 | 
			
		||||
        storage.set("version", StringMan.join(VERSION,"."));
 | 
			
		||||
        final Map<String, Object> options = new HashMap<>();
 | 
			
		||||
        options.put("mysql.use", false);
 | 
			
		||||
        options.put("sqlite.use", true);
 | 
			
		||||
@@ -1611,7 +1616,7 @@ public class PS {
 | 
			
		||||
     * Setup the style.yml file
 | 
			
		||||
     */
 | 
			
		||||
    private void setupStyle() {
 | 
			
		||||
        style.set("version", VERSION);
 | 
			
		||||
        style.set("version", StringMan.join(VERSION,"."));
 | 
			
		||||
        final Map<String, Object> o = new HashMap<>();
 | 
			
		||||
        o.put("color.1", "6");
 | 
			
		||||
        o.put("color.2", "7");
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,8 @@ import com.intellectualcrafters.plot.util.*;
 | 
			
		||||
import com.plotsquared.bukkit.generator.AugmentedPopulator;
 | 
			
		||||
import com.plotsquared.bukkit.generator.BukkitPlotGenerator;
 | 
			
		||||
import com.plotsquared.bukkit.generator.HybridGen;
 | 
			
		||||
import com.plotsquared.bukkit.util.SetupUtils;
 | 
			
		||||
import com.plotsquared.general.commands.CommandDeclaration;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.generator.ChunkGenerator;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
 
 | 
			
		||||
@@ -27,9 +27,10 @@ import com.intellectualcrafters.plot.object.PlotId;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotPlayer;
 | 
			
		||||
import com.intellectualcrafters.plot.object.comment.CommentInbox;
 | 
			
		||||
import com.intellectualcrafters.plot.object.comment.PlotComment;
 | 
			
		||||
import com.intellectualcrafters.plot.util.CommentManager;
 | 
			
		||||
import com.intellectualcrafters.plot.util.MainUtil;
 | 
			
		||||
import com.plotsquared.bukkit.object.comment.CommentManager;
 | 
			
		||||
import com.plotsquared.general.commands.CommandDeclaration;
 | 
			
		||||
 | 
			
		||||
import org.apache.commons.lang.StringUtils;
 | 
			
		||||
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
 
 | 
			
		||||
@@ -51,7 +51,7 @@ public class Delete extends SubCommand {
 | 
			
		||||
        if (!MainUtil.getTopPlot(plot).equals(MainUtil.getBottomPlot(plot))) {
 | 
			
		||||
            return !sendMessage(plr, C.UNLINK_REQUIRED);
 | 
			
		||||
        }
 | 
			
		||||
        if (((!plot.hasOwner() || !plot.isOwner(UUIDHandler.getUUIDWrapper().getUUID(plr)))) && !Permissions.hasPermission(plr, "plots.admin.command.delete")) {
 | 
			
		||||
        if (((!plot.hasOwner() || !plot.isOwner(plr.getUUID()))) && !Permissions.hasPermission(plr, "plots.admin.command.delete")) {
 | 
			
		||||
            return !sendMessage(plr, C.NO_PLOT_PERMS);
 | 
			
		||||
        }
 | 
			
		||||
        final PlotWorld pWorld = PS.get().getPlotWorld(plot.world);
 | 
			
		||||
 
 | 
			
		||||
@@ -26,10 +26,11 @@ import com.intellectualcrafters.plot.object.PlotPlayer;
 | 
			
		||||
import com.intellectualcrafters.plot.object.RunnableVal;
 | 
			
		||||
import com.intellectualcrafters.plot.object.comment.CommentInbox;
 | 
			
		||||
import com.intellectualcrafters.plot.object.comment.PlotComment;
 | 
			
		||||
import com.intellectualcrafters.plot.util.CommentManager;
 | 
			
		||||
import com.intellectualcrafters.plot.util.MainUtil;
 | 
			
		||||
import com.intellectualcrafters.plot.util.StringMan;
 | 
			
		||||
import com.plotsquared.bukkit.object.comment.CommentManager;
 | 
			
		||||
import com.plotsquared.general.commands.CommandDeclaration;
 | 
			
		||||
 | 
			
		||||
import org.apache.commons.lang.StringUtils;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,9 @@ import com.intellectualcrafters.plot.flag.Flag;
 | 
			
		||||
import com.intellectualcrafters.plot.flag.FlagManager;
 | 
			
		||||
import com.intellectualcrafters.plot.object.*;
 | 
			
		||||
import com.intellectualcrafters.plot.util.*;
 | 
			
		||||
import com.plotsquared.bukkit.listeners.APlotListener;
 | 
			
		||||
import com.plotsquared.general.commands.CommandDeclaration;
 | 
			
		||||
import com.plotsquared.listener.APlotListener;
 | 
			
		||||
 | 
			
		||||
import org.apache.commons.lang.StringUtils;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
 
 | 
			
		||||
@@ -23,14 +23,16 @@ package com.intellectualcrafters.plot.commands;
 | 
			
		||||
import com.intellectualcrafters.plot.config.C;
 | 
			
		||||
import com.intellectualcrafters.plot.config.ConfigurationNode;
 | 
			
		||||
import com.intellectualcrafters.plot.config.Settings;
 | 
			
		||||
import com.intellectualcrafters.plot.generator.PlotGenerator;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotPlayer;
 | 
			
		||||
import com.intellectualcrafters.plot.object.SetupObject;
 | 
			
		||||
import com.intellectualcrafters.plot.util.BlockManager;
 | 
			
		||||
import com.intellectualcrafters.plot.util.MainUtil;
 | 
			
		||||
import com.intellectualcrafters.plot.util.SetupUtils;
 | 
			
		||||
import com.plotsquared.bukkit.generator.BukkitPlotGenerator;
 | 
			
		||||
import com.plotsquared.bukkit.generator.HybridGen;
 | 
			
		||||
import com.plotsquared.bukkit.util.SetupUtils;
 | 
			
		||||
import com.plotsquared.general.commands.CommandDeclaration;
 | 
			
		||||
 | 
			
		||||
import org.apache.commons.lang.StringUtils;
 | 
			
		||||
import org.bukkit.generator.ChunkGenerator;
 | 
			
		||||
 | 
			
		||||
@@ -52,14 +54,11 @@ public class Setup extends SubCommand {
 | 
			
		||||
    public void displayGenerators(PlotPlayer plr) {
 | 
			
		||||
        StringBuffer message = new StringBuffer();
 | 
			
		||||
        message.append("&6What generator do you want?");
 | 
			
		||||
        for (Entry<String, ChunkGenerator> entry : SetupUtils.generators.entrySet()) {
 | 
			
		||||
        for (Entry<String, PlotGenerator<?>> entry : SetupUtils.generators.entrySet()) {
 | 
			
		||||
            if (entry.getKey().equals("PlotSquared")) {
 | 
			
		||||
                message.append("\n&8 - &2" + entry.getKey() + " (Default Generator)");
 | 
			
		||||
            }
 | 
			
		||||
            else if (entry.getValue() instanceof HybridGen) {
 | 
			
		||||
                message.append("\n&8 - &7" + entry.getKey() + " (Hybrid Generator)");
 | 
			
		||||
            }
 | 
			
		||||
            else if (entry.getValue() instanceof BukkitPlotGenerator) {
 | 
			
		||||
            else if (entry.getValue().isFull()) {
 | 
			
		||||
                message.append("\n&8 - &7" + entry.getKey() + " (Plot Generator)");
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
@@ -119,7 +118,7 @@ public class Setup extends SubCommand {
 | 
			
		||||
                List<String> allTypes = Arrays.asList(new String[] { "default", "augmented", "partial"});
 | 
			
		||||
                List<String> allDesc = Arrays.asList(new String[] { "Standard plot generation", "Plot generation with vanilla terrain", "Vanilla with clusters of plots"});
 | 
			
		||||
                ArrayList<String> types = new ArrayList<>();
 | 
			
		||||
                if (SetupUtils.generators.get(object.setupGenerator) instanceof BukkitPlotGenerator) {
 | 
			
		||||
                if (SetupUtils.generators.get(object.setupGenerator).isFull()) {
 | 
			
		||||
                    types.add("default");
 | 
			
		||||
                }
 | 
			
		||||
                types.add("augmented");
 | 
			
		||||
@@ -140,13 +139,13 @@ public class Setup extends SubCommand {
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
                object.type = allTypes.indexOf(args[0].toLowerCase());
 | 
			
		||||
                ChunkGenerator gen = SetupUtils.generators.get(object.setupGenerator);
 | 
			
		||||
                PlotGenerator<?> gen = SetupUtils.generators.get(object.setupGenerator);
 | 
			
		||||
                if (object.type == 0) {
 | 
			
		||||
                    object.current++;
 | 
			
		||||
                    if (object.step == null) {
 | 
			
		||||
                        object.plotManager = object.setupGenerator;
 | 
			
		||||
                        object.step = ((BukkitPlotGenerator) SetupUtils.generators.get(object.plotManager)).getNewPlotWorld(null).getSettingNodes();
 | 
			
		||||
                        ((BukkitPlotGenerator) SetupUtils.generators.get(object.plotManager)).processSetup(object);
 | 
			
		||||
                        object.step = SetupUtils.generators.get(object.plotManager).getNewPlotWorld(null).getSettingNodes();
 | 
			
		||||
                        SetupUtils.generators.get(object.plotManager).processSetup(object);
 | 
			
		||||
                    }
 | 
			
		||||
                    if (object.step.length == 0) {
 | 
			
		||||
                        object.current = 4;
 | 
			
		||||
@@ -157,17 +156,17 @@ public class Setup extends SubCommand {
 | 
			
		||||
                    final ConfigurationNode step = object.step[object.setup_index];
 | 
			
		||||
                    sendMessage(plr, C.SETUP_STEP, object.setup_index + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + "");
 | 
			
		||||
                } else {
 | 
			
		||||
                    if (gen instanceof BukkitPlotGenerator) {
 | 
			
		||||
                    if (gen.isFull()) {
 | 
			
		||||
                        object.plotManager = object.setupGenerator;
 | 
			
		||||
                        object.setupGenerator = null;
 | 
			
		||||
                        object.step = ((BukkitPlotGenerator) SetupUtils.generators.get(object.plotManager)).getNewPlotWorld(null).getSettingNodes();
 | 
			
		||||
                        ((BukkitPlotGenerator) SetupUtils.generators.get(object.plotManager)).processSetup(object);
 | 
			
		||||
                        object.step = SetupUtils.generators.get(object.plotManager).getNewPlotWorld(null).getSettingNodes();
 | 
			
		||||
                        SetupUtils.generators.get(object.plotManager).processSetup(object);
 | 
			
		||||
                    }
 | 
			
		||||
                    else {
 | 
			
		||||
                        object.plotManager = "PlotSquared";
 | 
			
		||||
                        MainUtil.sendMessage(plr, "&c[WARNING] The specified generator does not identify as BukkitPlotGenerator");
 | 
			
		||||
                        MainUtil.sendMessage(plr, "&7 - You may need to manually configure the other plugin");
 | 
			
		||||
                        object.step = ((BukkitPlotGenerator) SetupUtils.generators.get(object.plotManager)).getNewPlotWorld(null).getSettingNodes();
 | 
			
		||||
                        object.step = SetupUtils.generators.get(object.plotManager).getNewPlotWorld(null).getSettingNodes();
 | 
			
		||||
                    }
 | 
			
		||||
                    MainUtil.sendMessage(plr, "&6What terrain would you like in plots?" + "\n&8 - &2NONE&8 - &7No terrain at all" + "\n&8 - &7ORE&8 - &7Just some ore veins and trees" + "\n&8 - &7ROAD&8 - &7Terrain seperated by roads" + "\n&8 - &7ALL&8 - &7Entirely vanilla generation");
 | 
			
		||||
                }
 | 
			
		||||
@@ -183,7 +182,7 @@ public class Setup extends SubCommand {
 | 
			
		||||
                object.terrain = terrain.indexOf(args[0].toLowerCase());
 | 
			
		||||
                object.current++;
 | 
			
		||||
                if (object.step == null) {
 | 
			
		||||
                    object.step = ((BukkitPlotGenerator) SetupUtils.generators.get(object.plotManager)).getNewPlotWorld(null).getSettingNodes();
 | 
			
		||||
                    object.step = SetupUtils.generators.get(object.plotManager).getNewPlotWorld(null).getSettingNodes();
 | 
			
		||||
                }
 | 
			
		||||
                final ConfigurationNode step = object.step[object.setup_index];
 | 
			
		||||
                sendMessage(plr, C.SETUP_STEP, object.setup_index + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + "");
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,8 @@ import com.intellectualcrafters.plot.config.ConfigurationNode;
 | 
			
		||||
import com.intellectualcrafters.plot.object.*;
 | 
			
		||||
import com.intellectualcrafters.plot.util.BlockManager;
 | 
			
		||||
import com.intellectualcrafters.plot.util.MainUtil;
 | 
			
		||||
import com.intellectualcrafters.plot.util.SetupUtils;
 | 
			
		||||
import com.intellectualcrafters.plot.util.TaskManager;
 | 
			
		||||
import com.plotsquared.bukkit.util.SetupUtils;
 | 
			
		||||
import com.plotsquared.general.commands.CommandDeclaration;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
 
 | 
			
		||||
@@ -209,10 +209,8 @@ public enum C {
 | 
			
		||||
    /*
 | 
			
		||||
     * Title Stuff
 | 
			
		||||
     */
 | 
			
		||||
    TITLE_ENTERED_PLOT("Plot: %world%;%x%;%z%", "Titles"),
 | 
			
		||||
    TITLE_ENTERED_PLOT_COLOR("GOLD", "Titles"),
 | 
			
		||||
    TITLE_ENTERED_PLOT_SUB("Owned by %s", "Titles"),
 | 
			
		||||
    TITLE_ENTERED_PLOT_SUB_COLOR("RED", "Titles"),
 | 
			
		||||
    TITLE_ENTERED_PLOT("$1Plot: %world%;%x%;%z%", "Titles"),
 | 
			
		||||
    TITLE_ENTERED_PLOT_SUB("$4Owned by %s", "Titles"),
 | 
			
		||||
    PREFIX_GREETING("$1%id%$2> ", "Titles"),
 | 
			
		||||
    PREFIX_FAREWELL("$1%id%$2> ", "Titles"),
 | 
			
		||||
    /*
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@ package com.intellectualcrafters.plot.generator;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotCluster;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotManager;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotWorld;
 | 
			
		||||
import com.intellectualcrafters.plot.object.SetupObject;
 | 
			
		||||
 | 
			
		||||
public abstract class PlotGenerator<T> {
 | 
			
		||||
    public final String world;
 | 
			
		||||
@@ -46,4 +47,6 @@ public abstract class PlotGenerator<T> {
 | 
			
		||||
    public abstract boolean isFull();
 | 
			
		||||
    
 | 
			
		||||
    public abstract String getName();
 | 
			
		||||
    
 | 
			
		||||
    public abstract void processSetup(SetupObject object);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
package com.intellectualcrafters.plot.object;
 | 
			
		||||
 | 
			
		||||
import com.intellectualcrafters.plot.config.ConfigurationNode;
 | 
			
		||||
import com.plotsquared.bukkit.util.SetupUtils;
 | 
			
		||||
import com.intellectualcrafters.plot.util.SetupUtils;
 | 
			
		||||
 | 
			
		||||
public class SetupObject {
 | 
			
		||||
    
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
package com.plotsquared.bukkit.object.comment;
 | 
			
		||||
package com.intellectualcrafters.plot.util;
 | 
			
		||||
 | 
			
		||||
import com.intellectualcrafters.plot.config.C;
 | 
			
		||||
import com.intellectualcrafters.plot.config.Settings;
 | 
			
		||||
@@ -6,9 +6,7 @@ import com.intellectualcrafters.plot.object.Plot;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotPlayer;
 | 
			
		||||
import com.intellectualcrafters.plot.object.RunnableVal;
 | 
			
		||||
import com.intellectualcrafters.plot.object.comment.*;
 | 
			
		||||
import com.intellectualcrafters.plot.util.TaskManager;
 | 
			
		||||
import com.plotsquared.bukkit.titles.AbstractTitle;
 | 
			
		||||
import org.bukkit.ChatColor;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
@@ -50,7 +48,7 @@ public class CommentManager {
 | 
			
		||||
                                total = count.get();
 | 
			
		||||
                            }
 | 
			
		||||
                            if (size.decrementAndGet() == 0 && total > 0) {
 | 
			
		||||
                                AbstractTitle.sendTitle(player, "", C.INBOX_NOTIFICATION.s().replaceAll("%s", "" + total), ChatColor.GOLD, ChatColor.valueOf(C.TITLE_ENTERED_PLOT_SUB_COLOR.s()));
 | 
			
		||||
                                AbstractTitle.sendTitle(player, "", C.INBOX_NOTIFICATION.s().replaceAll("%s", "" + total));
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
@@ -15,7 +15,6 @@ import com.intellectualcrafters.plot.object.PlotBlock;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotCluster;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotId;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotPlayer;
 | 
			
		||||
import com.plotsquared.bukkit.util.SetupUtils;
 | 
			
		||||
 | 
			
		||||
public abstract class EventUtil {
 | 
			
		||||
    
 | 
			
		||||
 
 | 
			
		||||
@@ -16,6 +16,106 @@ public class MathMan {
 | 
			
		||||
        }
 | 
			
		||||
        return count / array.length;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns [x, y, z]
 | 
			
		||||
     * @param yaw
 | 
			
		||||
     * @param pitch
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    public static float[] getDirection(float yaw, float pitch) {
 | 
			
		||||
        double pitch_sin = Math.sin(pitch);
 | 
			
		||||
        return new float[] {
 | 
			
		||||
                (float) (pitch_sin * Math.cos(yaw)),
 | 
			
		||||
                (float) (pitch_sin * Math.sin(yaw)),
 | 
			
		||||
                (float) Math.cos(pitch)
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns [ pitch, yaw ]
 | 
			
		||||
     * @param x
 | 
			
		||||
     * @param y
 | 
			
		||||
     * @param z
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    public static float[] getPitchAndYaw(float x, float y, float z) {
 | 
			
		||||
        float distance = sqrtApprox(z * z + x * x);
 | 
			
		||||
        return new float[] { atan2(y, distance), atan2(x, z) };
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    private static final int ATAN2_BITS = 7;
 | 
			
		||||
    
 | 
			
		||||
    private static final int ATAN2_BITS2 = ATAN2_BITS << 1;
 | 
			
		||||
    private static final int ATAN2_MASK = ~(-1 << ATAN2_BITS2);
 | 
			
		||||
    private static final int ATAN2_COUNT = ATAN2_MASK + 1;
 | 
			
		||||
    private static final int ATAN2_DIM = (int) Math.sqrt(ATAN2_COUNT);
 | 
			
		||||
    
 | 
			
		||||
    private static final float INV_ATAN2_DIM_MINUS_1 = 1.0f / (ATAN2_DIM - 1);
 | 
			
		||||
    
 | 
			
		||||
    private static final float[] atan2 = new float[ATAN2_COUNT];
 | 
			
		||||
    
 | 
			
		||||
    static {
 | 
			
		||||
        for (int i = 0; i < ATAN2_DIM; i++) {
 | 
			
		||||
            for (int j = 0; j < ATAN2_DIM; j++) {
 | 
			
		||||
                float x0 = (float) i / ATAN2_DIM;
 | 
			
		||||
                float y0 = (float) j / ATAN2_DIM;
 | 
			
		||||
                
 | 
			
		||||
                atan2[j * ATAN2_DIM + i] = (float) Math.atan2(y0, x0);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public static final float atan2(float y, float x) {
 | 
			
		||||
        float add, mul;
 | 
			
		||||
        
 | 
			
		||||
        if (x < 0.0f) {
 | 
			
		||||
            if (y < 0.0f) {
 | 
			
		||||
                x = -x;
 | 
			
		||||
                y = -y;
 | 
			
		||||
                
 | 
			
		||||
                mul = 1.0f;
 | 
			
		||||
            } else {
 | 
			
		||||
                x = -x;
 | 
			
		||||
                mul = -1.0f;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            add = -3.141592653f;
 | 
			
		||||
        } else {
 | 
			
		||||
            if (y < 0.0f) {
 | 
			
		||||
                y = -y;
 | 
			
		||||
                mul = -1.0f;
 | 
			
		||||
            } else {
 | 
			
		||||
                mul = 1.0f;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            add = 0.0f;
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        float invDiv = 1.0f / (((x < y) ? y : x) * INV_ATAN2_DIM_MINUS_1);
 | 
			
		||||
        
 | 
			
		||||
        int xi = (int) (x * invDiv);
 | 
			
		||||
        int yi = (int) (y * invDiv);
 | 
			
		||||
        
 | 
			
		||||
        return (atan2[yi * ATAN2_DIM + xi] + add) * mul;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public static float sqrtApprox(float f) {
 | 
			
		||||
        return f * Float.intBitsToFloat(0x5f375a86 - (Float.floatToIntBits(f) >> 1));
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public static double sqrtApprox(double d) {
 | 
			
		||||
        return Double.longBitsToDouble( ( ( Double.doubleToLongBits( d )-(1l<<52) )>>1 ) + ( 1l<<61 ) );
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public static float invSqrt(float x) {
 | 
			
		||||
        float xhalf = 0.5f*x;
 | 
			
		||||
        int i = Float.floatToIntBits(x);
 | 
			
		||||
        i = 0x5f3759df - (i>>1);
 | 
			
		||||
        x = Float.intBitsToFloat(i);
 | 
			
		||||
        x = x*(1.5f - xhalf*x*x);
 | 
			
		||||
        return x;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public static int getPositiveId(int i) {
 | 
			
		||||
        if (i < 0) {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,9 @@
 | 
			
		||||
package com.plotsquared.bukkit.util;
 | 
			
		||||
package com.intellectualcrafters.plot.util;
 | 
			
		||||
 | 
			
		||||
import com.intellectualcrafters.plot.generator.PlotGenerator;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotWorld;
 | 
			
		||||
import com.intellectualcrafters.plot.object.SetupObject;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.generator.ChunkGenerator;
 | 
			
		||||
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
@@ -12,7 +14,7 @@ public abstract class SetupUtils {
 | 
			
		||||
    public static SetupUtils manager;
 | 
			
		||||
    
 | 
			
		||||
    public final static Map<String, SetupObject> setupMap = new HashMap<>();
 | 
			
		||||
    public static HashMap<String, ChunkGenerator> generators = new HashMap<>();
 | 
			
		||||
    public static HashMap<String, PlotGenerator<?>> generators = new HashMap<>();
 | 
			
		||||
 | 
			
		||||
    public abstract void updateGenerators();
 | 
			
		||||
 | 
			
		||||
@@ -33,6 +33,7 @@ import com.intellectualcrafters.plot.util.EventUtil;
 | 
			
		||||
import com.intellectualcrafters.plot.util.InventoryUtil;
 | 
			
		||||
import com.intellectualcrafters.plot.util.MainUtil;
 | 
			
		||||
import com.intellectualcrafters.plot.util.PlayerManager;
 | 
			
		||||
import com.intellectualcrafters.plot.util.SetupUtils;
 | 
			
		||||
import com.intellectualcrafters.plot.util.TaskManager;
 | 
			
		||||
import com.intellectualcrafters.plot.util.UUIDHandlerImplementation;
 | 
			
		||||
import com.intellectualcrafters.plot.uuid.UUIDWrapper;
 | 
			
		||||
@@ -42,7 +43,6 @@ import com.plotsquared.bukkit.database.plotme.LikePlotMeConverter;
 | 
			
		||||
import com.plotsquared.bukkit.database.plotme.PlotMeConnector_017;
 | 
			
		||||
import com.plotsquared.bukkit.generator.BukkitGeneratorWrapper;
 | 
			
		||||
import com.plotsquared.bukkit.generator.HybridGen;
 | 
			
		||||
import com.plotsquared.bukkit.listeners.APlotListener;
 | 
			
		||||
import com.plotsquared.bukkit.listeners.ChunkListener;
 | 
			
		||||
import com.plotsquared.bukkit.listeners.ForceFieldListener;
 | 
			
		||||
import com.plotsquared.bukkit.listeners.PlayerEvents;
 | 
			
		||||
@@ -57,7 +57,6 @@ import com.plotsquared.bukkit.listeners.worldedit.WESubscriber;
 | 
			
		||||
import com.plotsquared.bukkit.titles.AbstractTitle;
 | 
			
		||||
import com.plotsquared.bukkit.titles.DefaultTitle;
 | 
			
		||||
import com.plotsquared.bukkit.util.BukkitHybridUtils;
 | 
			
		||||
import com.plotsquared.bukkit.util.SetupUtils;
 | 
			
		||||
import com.plotsquared.bukkit.util.bukkit.BukkitChunkManager;
 | 
			
		||||
import com.plotsquared.bukkit.util.bukkit.BukkitEconHandler;
 | 
			
		||||
import com.plotsquared.bukkit.util.bukkit.BukkitEventUtil;
 | 
			
		||||
@@ -78,6 +77,7 @@ import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler;
 | 
			
		||||
import com.plotsquared.bukkit.uuid.DefaultUUIDWrapper;
 | 
			
		||||
import com.plotsquared.bukkit.uuid.LowerOfflineUUIDWrapper;
 | 
			
		||||
import com.plotsquared.bukkit.uuid.OfflineUUIDWrapper;
 | 
			
		||||
import com.plotsquared.listener.APlotListener;
 | 
			
		||||
import com.sk89q.worldedit.WorldEdit;
 | 
			
		||||
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,8 @@ import com.intellectualcrafters.plot.generator.PlotGenerator;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotCluster;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotManager;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotWorld;
 | 
			
		||||
import com.intellectualcrafters.plot.object.SetupObject;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.generator.ChunkGenerator;
 | 
			
		||||
 | 
			
		||||
public class BukkitGeneratorWrapper extends PlotGenerator<ChunkGenerator> {
 | 
			
		||||
@@ -13,7 +15,7 @@ public class BukkitGeneratorWrapper extends PlotGenerator<ChunkGenerator> {
 | 
			
		||||
    
 | 
			
		||||
    public BukkitGeneratorWrapper(String world, ChunkGenerator generator) {
 | 
			
		||||
        super(world, generator);
 | 
			
		||||
        full = generator != null;
 | 
			
		||||
        full = (generator instanceof BukkitPlotGenerator);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
@@ -76,5 +78,12 @@ public class BukkitGeneratorWrapper extends PlotGenerator<ChunkGenerator> {
 | 
			
		||||
        }
 | 
			
		||||
        return generator.getClass().getName();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void processSetup(SetupObject object) {
 | 
			
		||||
        if (generator instanceof BukkitPlotGenerator) {
 | 
			
		||||
            ((BukkitPlotGenerator) generator).processSetup(object);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -31,8 +31,9 @@ import com.intellectualcrafters.plot.util.*;
 | 
			
		||||
import com.plotsquared.bukkit.events.PlayerEnterPlotEvent;
 | 
			
		||||
import com.plotsquared.bukkit.events.PlayerLeavePlotEvent;
 | 
			
		||||
import com.plotsquared.bukkit.object.BukkitPlayer;
 | 
			
		||||
import com.plotsquared.bukkit.object.comment.CommentManager;
 | 
			
		||||
import com.plotsquared.bukkit.titles.AbstractTitle;
 | 
			
		||||
import com.plotsquared.listener.APlotListener;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.*;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
 | 
			
		||||
@@ -205,7 +206,7 @@ public class PlotListener extends APlotListener {
 | 
			
		||||
                                replacements.put("%s", getName(plot.owner));
 | 
			
		||||
                                String main = StringMan.replaceFromMap(C.TITLE_ENTERED_PLOT.s(), replacements);
 | 
			
		||||
                                String sub = StringMan.replaceFromMap(C.TITLE_ENTERED_PLOT_SUB.s(), replacements);
 | 
			
		||||
                                AbstractTitle.sendTitle(pp, main, sub, ChatColor.valueOf(C.TITLE_ENTERED_PLOT_COLOR.s()), ChatColor.valueOf(C.TITLE_ENTERED_PLOT_SUB_COLOR.s()));
 | 
			
		||||
                                AbstractTitle.sendTitle(pp, main, sub);
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }, 20);
 | 
			
		||||
 
 | 
			
		||||
@@ -21,12 +21,12 @@ import java.util.UUID;
 | 
			
		||||
public class BukkitPlayer implements PlotPlayer {
 | 
			
		||||
    
 | 
			
		||||
    public final Player player;
 | 
			
		||||
    UUID uuid;
 | 
			
		||||
    String name;
 | 
			
		||||
    private UUID uuid;
 | 
			
		||||
    private String name;
 | 
			
		||||
    private int op = 0;
 | 
			
		||||
    private long last = 0;
 | 
			
		||||
    public HashSet<String> hasPerm = new HashSet<>();
 | 
			
		||||
    public HashSet<String> noPerm = new HashSet<>();
 | 
			
		||||
    private HashSet<String> hasPerm = new HashSet<>();
 | 
			
		||||
    private HashSet<String> noPerm = new HashSet<>();
 | 
			
		||||
    
 | 
			
		||||
    private HashMap<String, Object> meta;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,11 +6,11 @@ import org.bukkit.ChatColor;
 | 
			
		||||
public abstract class AbstractTitle {
 | 
			
		||||
    public static AbstractTitle TITLE_CLASS;
 | 
			
		||||
    
 | 
			
		||||
    public static void sendTitle(PlotPlayer player, String head, String sub, ChatColor head_color, ChatColor sub_color) {
 | 
			
		||||
    public static void sendTitle(PlotPlayer player, String head, String sub) {
 | 
			
		||||
        if (TITLE_CLASS != null && !player.getAttribute("disabletitles")) {
 | 
			
		||||
            TITLE_CLASS.sendTitle(player, head, sub, head_color, sub_color, 1, 2, 1);
 | 
			
		||||
            TITLE_CLASS.sendTitle(player, head, sub, 1, 2, 1);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public abstract void sendTitle(PlotPlayer player, String head, String sub, ChatColor head_color, ChatColor sub_color, int in, int delay, int out);
 | 
			
		||||
    public abstract void sendTitle(PlotPlayer player, String head, String sub, int in, int delay, int out);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -6,15 +6,13 @@ import org.bukkit.ChatColor;
 | 
			
		||||
 | 
			
		||||
public class DefaultTitle extends AbstractTitle {
 | 
			
		||||
    @Override
 | 
			
		||||
    public void sendTitle(final PlotPlayer player, final String head, final String sub, final ChatColor head_color, final ChatColor sub_color, int in, int delay, int out) {
 | 
			
		||||
    public void sendTitle(final PlotPlayer player, final String head, final String sub, int in, int delay, int out) {
 | 
			
		||||
        try {
 | 
			
		||||
            final DefaultTitleManager title = new DefaultTitleManager(head, sub, in, delay, out);
 | 
			
		||||
            title.setTitleColor(head_color);
 | 
			
		||||
            title.setSubtitleColor(sub_color);
 | 
			
		||||
            title.send(((BukkitPlayer) player).player);
 | 
			
		||||
        } catch (final Throwable e) {
 | 
			
		||||
            AbstractTitle.TITLE_CLASS = new DefaultTitle_183();
 | 
			
		||||
            AbstractTitle.TITLE_CLASS.sendTitle(player, head, sub, head_color, sub_color, in, delay, out);
 | 
			
		||||
            AbstractTitle.TITLE_CLASS.sendTitle(player, head, sub, in, delay, out);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -6,15 +6,13 @@ import org.bukkit.ChatColor;
 | 
			
		||||
 | 
			
		||||
public class DefaultTitle_183 extends AbstractTitle {
 | 
			
		||||
    @Override
 | 
			
		||||
    public void sendTitle(final PlotPlayer player, final String head, final String sub, final ChatColor head_color, final ChatColor sub_color, int in, int delay, int out) {
 | 
			
		||||
    public void sendTitle(final PlotPlayer player, final String head, final String sub, int in, int delay, int out) {
 | 
			
		||||
        try {
 | 
			
		||||
            final DefaultTitleManager_183 title = new DefaultTitleManager_183(head, sub, in, delay, out);
 | 
			
		||||
            title.setTitleColor(head_color);
 | 
			
		||||
            title.setSubtitleColor(sub_color);
 | 
			
		||||
            title.send(((BukkitPlayer) player).player);
 | 
			
		||||
        } catch (final Throwable e) {
 | 
			
		||||
            AbstractTitle.TITLE_CLASS = new HackTitle();
 | 
			
		||||
            AbstractTitle.TITLE_CLASS.sendTitle(player, head, sub, head_color, sub_color, in, delay, out);
 | 
			
		||||
            AbstractTitle.TITLE_CLASS.sendTitle(player, head, sub, in, delay, out);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -8,11 +8,9 @@ import org.bukkit.ChatColor;
 | 
			
		||||
 | 
			
		||||
public class HackTitle extends AbstractTitle {
 | 
			
		||||
    @Override
 | 
			
		||||
    public void sendTitle(final PlotPlayer player, final String head, final String sub, final ChatColor head_color, final ChatColor sub_color, int in, int delay, int out) {
 | 
			
		||||
    public void sendTitle(final PlotPlayer player, final String head, final String sub, int in, int delay, int out) {
 | 
			
		||||
        try {
 | 
			
		||||
            final HackTitleManager title = new HackTitleManager(head, sub, in, delay, out);
 | 
			
		||||
            title.setTitleColor(head_color);
 | 
			
		||||
            title.setSubtitleColor(sub_color);
 | 
			
		||||
            title.send(((BukkitPlayer) player).player);
 | 
			
		||||
        } catch (final Throwable e) {
 | 
			
		||||
            PS.log("&cYour server version does not support titles!");
 | 
			
		||||
 
 | 
			
		||||
@@ -2,10 +2,13 @@ package com.plotsquared.bukkit.util.bukkit;
 | 
			
		||||
 | 
			
		||||
import com.intellectualcrafters.plot.PS;
 | 
			
		||||
import com.intellectualcrafters.plot.config.ConfigurationNode;
 | 
			
		||||
import com.intellectualcrafters.plot.generator.PlotGenerator;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotWorld;
 | 
			
		||||
import com.intellectualcrafters.plot.object.SetupObject;
 | 
			
		||||
import com.intellectualcrafters.plot.util.SetupUtils;
 | 
			
		||||
import com.plotsquared.bukkit.generator.BukkitGeneratorWrapper;
 | 
			
		||||
import com.plotsquared.bukkit.generator.BukkitPlotGenerator;
 | 
			
		||||
import com.plotsquared.bukkit.util.SetupUtils;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.World;
 | 
			
		||||
import org.bukkit.World.Environment;
 | 
			
		||||
@@ -32,7 +35,7 @@ public class BukkitSetupUtils extends SetupUtils {
 | 
			
		||||
                    final String name = plugin.getDescription().getName();
 | 
			
		||||
//                        final PlotGenerator pgen = (PlotGenerator) generator;
 | 
			
		||||
//                        if (pgen.getPlotManager() instanceof SquarePlotManager) {
 | 
			
		||||
                            SetupUtils.generators.put(name, generator);
 | 
			
		||||
                            SetupUtils.generators.put(name, new BukkitGeneratorWrapper("CheckingPlotSquaredGenerator", generator));
 | 
			
		||||
//                        }
 | 
			
		||||
//                    }
 | 
			
		||||
                }
 | 
			
		||||
@@ -55,8 +58,8 @@ public class BukkitSetupUtils extends SetupUtils {
 | 
			
		||||
            if (object.setupGenerator != null && !object.setupGenerator.equals(object.plotManager)) {
 | 
			
		||||
                PS.get().config.set("worlds." + world + "." + "generator.init", object.setupGenerator);
 | 
			
		||||
            }
 | 
			
		||||
            ChunkGenerator gen = generators.get(object.setupGenerator);
 | 
			
		||||
            if (gen instanceof BukkitPlotGenerator) {
 | 
			
		||||
            PlotGenerator<ChunkGenerator> gen = (PlotGenerator<ChunkGenerator>) generators.get(object.setupGenerator);
 | 
			
		||||
            if (gen.generator instanceof BukkitPlotGenerator) {
 | 
			
		||||
                object.setupGenerator = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -105,8 +108,8 @@ public class BukkitSetupUtils extends SetupUtils {
 | 
			
		||||
        if (!(generator instanceof BukkitPlotGenerator)) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
        for (Entry<String, ChunkGenerator> entry : generators.entrySet()) {
 | 
			
		||||
            if (entry.getValue().getClass().getName().equals(generator.getClass().getName())) {
 | 
			
		||||
        for (Entry<String, PlotGenerator<?>> entry : generators.entrySet()) {
 | 
			
		||||
            if (entry.getValue().generator.getClass().getName().equals(generator.getClass().getName())) {
 | 
			
		||||
                return entry.getKey();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,10 @@
 | 
			
		||||
package com.plotsquared.bukkit.util.bukkit;
 | 
			
		||||
 | 
			
		||||
import com.intellectualcrafters.plot.PS;
 | 
			
		||||
import com.intellectualcrafters.plot.generator.PlotGenerator;
 | 
			
		||||
import com.intellectualcrafters.plot.util.SetupUtils;
 | 
			
		||||
import com.plotsquared.bukkit.generator.AugmentedPopulator;
 | 
			
		||||
import com.plotsquared.bukkit.util.SetupUtils;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.World;
 | 
			
		||||
import org.bukkit.generator.BlockPopulator;
 | 
			
		||||
import org.bukkit.generator.ChunkGenerator;
 | 
			
		||||
@@ -22,7 +24,8 @@ public class SetGenCB {
 | 
			
		||||
        }
 | 
			
		||||
        String name = gen.getClass().getCanonicalName();
 | 
			
		||||
        boolean set = false;
 | 
			
		||||
        for (ChunkGenerator newGen : SetupUtils.generators.values()) {
 | 
			
		||||
        for (PlotGenerator<?> wrapper : SetupUtils.generators.values()) {
 | 
			
		||||
            ChunkGenerator newGen = (ChunkGenerator) wrapper.generator;
 | 
			
		||||
            if (newGen.getClass().getCanonicalName().equals(name)) {
 | 
			
		||||
                // set generator
 | 
			
		||||
                Field generator = world.getClass().getDeclaredField("generator");
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
package com.plotsquared.bukkit.listeners;
 | 
			
		||||
package com.plotsquared.listener;
 | 
			
		||||
 | 
			
		||||
import com.intellectualcrafters.plot.object.Plot;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotPlayer;
 | 
			
		||||
@@ -4,6 +4,8 @@ import com.intellectualcrafters.plot.generator.PlotGenerator;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotCluster;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotManager;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotWorld;
 | 
			
		||||
import com.intellectualcrafters.plot.object.SetupObject;
 | 
			
		||||
 | 
			
		||||
import org.spongepowered.api.world.gen.WorldGenerator;
 | 
			
		||||
 | 
			
		||||
public class SpongeGeneratorWrapper extends PlotGenerator<WorldGenerator>{
 | 
			
		||||
@@ -54,5 +56,10 @@ public class SpongeGeneratorWrapper extends PlotGenerator<WorldGenerator>{
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void processSetup(SetupObject object) {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,93 @@
 | 
			
		||||
package com.plotsquared.sponge;
 | 
			
		||||
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
import java.util.concurrent.ExecutionException;
 | 
			
		||||
 | 
			
		||||
import org.spongepowered.api.GameProfile;
 | 
			
		||||
import org.spongepowered.api.entity.player.Player;
 | 
			
		||||
import org.spongepowered.api.service.profile.GameProfileResolver;
 | 
			
		||||
 | 
			
		||||
import com.google.common.base.Charsets;
 | 
			
		||||
import com.google.inject.Inject;
 | 
			
		||||
import com.intellectualcrafters.plot.object.OfflinePlotPlayer;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotPlayer;
 | 
			
		||||
import com.intellectualcrafters.plot.util.UUIDHandler;
 | 
			
		||||
import com.intellectualcrafters.plot.uuid.UUIDWrapper;
 | 
			
		||||
 | 
			
		||||
public class SpongeLowerOfflineUUIDWrapper extends UUIDWrapper {
 | 
			
		||||
 | 
			
		||||
    public SpongeLowerOfflineUUIDWrapper() {
 | 
			
		||||
        // Anything?
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public UUID getUUID(final PlotPlayer player) {
 | 
			
		||||
        return getUUID(player.getName());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public UUID getUUID(final OfflinePlotPlayer player) {
 | 
			
		||||
        return getUUID(player.getName());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public OfflinePlotPlayer getOfflinePlayer(final UUID uuid) {
 | 
			
		||||
        String name = UUIDHandler.getName(uuid);
 | 
			
		||||
        if (name == null) {
 | 
			
		||||
            try {
 | 
			
		||||
                GameProfile profile = SpongeMain.THIS.getResolver().get(uuid).get();
 | 
			
		||||
                if (profile != null) {
 | 
			
		||||
                    name = profile.getName();
 | 
			
		||||
                }
 | 
			
		||||
            } catch (Exception e) {
 | 
			
		||||
                e.printStackTrace();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (name == null) {
 | 
			
		||||
            for (GameProfile profile : SpongeMain.THIS.getResolver().getCachedProfiles()) {
 | 
			
		||||
                if (getUUID(profile.getName()).equals(uuid)) {
 | 
			
		||||
                    name = profile.getName();
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        final String username = name;
 | 
			
		||||
        return new OfflinePlotPlayer() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public boolean isOnline() {
 | 
			
		||||
                return UUIDHandler.getPlayer(uuid) != null;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            @Override
 | 
			
		||||
            public UUID getUUID() {
 | 
			
		||||
                return uuid;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            @Override
 | 
			
		||||
            public String getName() {
 | 
			
		||||
                return username;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            @Override
 | 
			
		||||
            public long getLastPlayed() {
 | 
			
		||||
             // TODO FIXME
 | 
			
		||||
                throw new UnsupportedOperationException("NOT IMPLEMENTED YET");
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Player[] getOnlinePlayers() {
 | 
			
		||||
        return SpongeMain.THIS.getServer().getOnlinePlayers().toArray(new Player[0]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public UUID getUUID(final String name) {
 | 
			
		||||
        return UUID.nameUUIDFromBytes(("OfflinePlayer:" + name.toLowerCase()).getBytes(Charsets.UTF_8));
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public OfflinePlotPlayer[] getOfflinePlayers() {
 | 
			
		||||
     // TODO FIXME
 | 
			
		||||
        throw new UnsupportedOperationException("NOT IMPLEMENTED YET");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -9,11 +9,13 @@ import com.intellectualcrafters.plot.config.Settings;
 | 
			
		||||
import com.intellectualcrafters.plot.generator.HybridUtils;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotPlayer;
 | 
			
		||||
import com.intellectualcrafters.plot.util.*;
 | 
			
		||||
import com.plotsquared.bukkit.listeners.APlotListener;
 | 
			
		||||
import com.plotsquared.bukkit.util.SetupUtils;
 | 
			
		||||
import com.intellectualcrafters.plot.uuid.UUIDWrapper;
 | 
			
		||||
import com.plotsquared.listener.APlotListener;
 | 
			
		||||
 | 
			
		||||
import org.slf4j.Logger;
 | 
			
		||||
import org.spongepowered.api.Game;
 | 
			
		||||
import org.spongepowered.api.GameRegistry;
 | 
			
		||||
import org.spongepowered.api.MinecraftVersion;
 | 
			
		||||
import org.spongepowered.api.Server;
 | 
			
		||||
import org.spongepowered.api.entity.player.Player;
 | 
			
		||||
import org.spongepowered.api.entity.player.gamemode.GameModes;
 | 
			
		||||
@@ -23,6 +25,7 @@ import org.spongepowered.api.event.state.PreInitializationEvent;
 | 
			
		||||
import org.spongepowered.api.event.state.ServerAboutToStartEvent;
 | 
			
		||||
import org.spongepowered.api.plugin.Plugin;
 | 
			
		||||
import org.spongepowered.api.plugin.PluginContainer;
 | 
			
		||||
import org.spongepowered.api.service.profile.GameProfileResolver;
 | 
			
		||||
import org.spongepowered.api.world.DimensionTypes;
 | 
			
		||||
import org.spongepowered.api.world.GeneratorTypes;
 | 
			
		||||
import org.spongepowered.api.world.World;
 | 
			
		||||
@@ -43,7 +46,33 @@ public class SpongeMain implements IPlotMain, PluginContainer {
 | 
			
		||||
    @Inject private Game game;
 | 
			
		||||
    private Server server;
 | 
			
		||||
    
 | 
			
		||||
    private GameProfileResolver resolver;
 | 
			
		||||
    
 | 
			
		||||
    private WorldModify modify;
 | 
			
		||||
    
 | 
			
		||||
    private Object plugin;
 | 
			
		||||
    
 | 
			
		||||
    // stuff //
 | 
			
		||||
    public Logger getLogger() {
 | 
			
		||||
        return logger;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public Game getGame() {
 | 
			
		||||
        return game;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public Server getServer() {
 | 
			
		||||
        return server;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public GameProfileResolver getResolver() {
 | 
			
		||||
        return resolver;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public Object getPlugin() {
 | 
			
		||||
        return this.plugin;
 | 
			
		||||
    }
 | 
			
		||||
    /////////
 | 
			
		||||
 | 
			
		||||
    ////////////////////// SPONGE PLUGIN REGISTRATION ////////////////////
 | 
			
		||||
    @Override
 | 
			
		||||
@@ -84,27 +113,18 @@ public class SpongeMain implements IPlotMain, PluginContainer {
 | 
			
		||||
    public void onServerAboutToStart(ServerAboutToStartEvent event) {
 | 
			
		||||
        log("INIT");
 | 
			
		||||
        THIS = this;
 | 
			
		||||
        PS.instance = new PS(this);
 | 
			
		||||
        
 | 
			
		||||
        // Setup metrics
 | 
			
		||||
        if (Settings.METRICS) {
 | 
			
		||||
            try {
 | 
			
		||||
                final SpongeMetrics metrics = new SpongeMetrics(game, this);
 | 
			
		||||
                metrics.start();
 | 
			
		||||
                log(C.PREFIX.s() + "&6Metrics enabled.");
 | 
			
		||||
            } catch (final Exception e) {
 | 
			
		||||
                log(C.PREFIX.s() + "&cFailed to load up metrics.");
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            log("&dUsing metrics will allow us to improve the plugin, please consider it :)");
 | 
			
		||||
        }
 | 
			
		||||
        // resolver
 | 
			
		||||
        resolver = game.getServiceManager().provide(GameProfileResolver.class).get();
 | 
			
		||||
        plugin = game.getPluginManager().getPlugin("PlotSquared").get().getInstance();
 | 
			
		||||
        
 | 
			
		||||
        PS.instance = new PS(this);
 | 
			
		||||
        
 | 
			
		||||
        // Set the generators for each world...
 | 
			
		||||
        server = game.getServer();
 | 
			
		||||
        Collection<World> worlds = server.getWorlds();
 | 
			
		||||
        if (worlds.size() > 0) {
 | 
			
		||||
            log("INJECTING WORLDS!!!!!!!");
 | 
			
		||||
            UUIDHandler.startCaching(null);
 | 
			
		||||
            for (World world : server.getWorlds()) {
 | 
			
		||||
                log("INJECTING WORLD: " + world.getName());
 | 
			
		||||
                world.setWorldGenerator(new SpongePlotGenerator(world.getName()));
 | 
			
		||||
@@ -112,31 +132,25 @@ public class SpongeMain implements IPlotMain, PluginContainer {
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        ConfigurationSection worldSection = PS.get().config.getConfigurationSection("worlds");
 | 
			
		||||
        for (String world : worldSection.getKeys(false)) {
 | 
			
		||||
            this.modify = new WorldModify(this);
 | 
			
		||||
            Game game = event.getGame();
 | 
			
		||||
            game.getRegistry().registerWorldGeneratorModifier(modify);
 | 
			
		||||
            game.getRegistry().getWorldBuilder()
 | 
			
		||||
            .name(world)
 | 
			
		||||
            .enabled(true)
 | 
			
		||||
            .loadsOnStartup(true)
 | 
			
		||||
            .keepsSpawnLoaded(true)
 | 
			
		||||
            .dimensionType(DimensionTypes.OVERWORLD)
 | 
			
		||||
            .generator(GeneratorTypes.DEBUG)
 | 
			
		||||
            .gameMode(GameModes.CREATIVE)
 | 
			
		||||
            .generatorModifiers(modify)
 | 
			
		||||
            .build();
 | 
			
		||||
        if (worldSection != null) {
 | 
			
		||||
            for (String world : worldSection.getKeys(false)) {
 | 
			
		||||
                this.modify = new WorldModify(this);
 | 
			
		||||
                Game game = event.getGame();
 | 
			
		||||
                game.getRegistry().registerWorldGeneratorModifier(modify);
 | 
			
		||||
                game.getRegistry().getWorldBuilder()
 | 
			
		||||
                .name(world)
 | 
			
		||||
                .enabled(true)
 | 
			
		||||
                .loadsOnStartup(true)
 | 
			
		||||
                .keepsSpawnLoaded(true)
 | 
			
		||||
                .dimensionType(DimensionTypes.OVERWORLD)
 | 
			
		||||
                .generator(GeneratorTypes.DEBUG)
 | 
			
		||||
                .gameMode(GameModes.CREATIVE)
 | 
			
		||||
                .generatorModifiers(modify)
 | 
			
		||||
                .build();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public Logger getLogger() {
 | 
			
		||||
        return logger;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public Game getGame() {
 | 
			
		||||
        return game;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    @Subscribe
 | 
			
		||||
    public void onPlayerChat(PlayerChatEvent event) {
 | 
			
		||||
        // This is how events sort of work?
 | 
			
		||||
@@ -163,68 +177,72 @@ public class SpongeMain implements IPlotMain, PluginContainer {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public int[] getPluginVersion() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        return null;
 | 
			
		||||
        PluginContainer plugin = game.getPluginManager().getPlugin("PlotSquared").get();
 | 
			
		||||
        String version = plugin.getVersion();
 | 
			
		||||
        log("Checking plugin version: PlotSquared: ");
 | 
			
		||||
        String[] split = version.split("\\.");
 | 
			
		||||
        return new int[] { Integer.parseInt(split[0]), Integer.parseInt(split[1]), (split.length == 3) ? Integer.parseInt(split[2]) : 0 };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public int[] getServerVersion() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        return null;
 | 
			
		||||
        log("Checking minecraft version: Sponge: ");
 | 
			
		||||
        String version = game.getPlatform().getMinecraftVersion().getName();
 | 
			
		||||
        String[] split = version.split("\\.");
 | 
			
		||||
        return new int[] { Integer.parseInt(split[0]), Integer.parseInt(split[1]), (split.length == 3) ? Integer.parseInt(split[2]) : 0 };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public TaskManager getTaskManager() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        return null;
 | 
			
		||||
        return new SpongeTaskManager();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void runEntityTask() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        
 | 
			
		||||
        log("runEntityTask is not implemented!");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void registerCommands() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        
 | 
			
		||||
        log("registerCommands is not implemented!");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void registerPlayerEvents() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        
 | 
			
		||||
        log("registerPlayerEvents is not implemented!");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void registerInventoryEvents() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        
 | 
			
		||||
        log("registerInventoryEvents is not implemented!");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void registerPlotPlusEvents() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        
 | 
			
		||||
        log("registerPlotPlusEvents is not implemented!");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void registerForceFieldEvents() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        
 | 
			
		||||
        log("registerForceFieldEvents is not implemented!");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void registerWorldEditEvents() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        
 | 
			
		||||
        log("registerWorldEditEvents is not implemented!");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void registerTNTListener() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        
 | 
			
		||||
        log("registerTNTListener is not implemented!");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
@@ -265,8 +283,14 @@ public class SpongeMain implements IPlotMain, PluginContainer {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public UUIDHandlerImplementation initUUIDHandler() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        return null;
 | 
			
		||||
        UUIDWrapper wrapper;
 | 
			
		||||
        if (Settings.OFFLINE_MODE || !PS.get().checkVersion(this.getServerVersion(), 1, 7, 6)) {
 | 
			
		||||
            wrapper = new SpongeLowerOfflineUUIDWrapper();
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            wrapper = new SpongeOnlineUUIDWrapper();
 | 
			
		||||
        }
 | 
			
		||||
        return new SpongeUUIDHandler(wrapper);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
@@ -319,14 +343,19 @@ public class SpongeMain implements IPlotMain, PluginContainer {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String getServerName() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        return null;
 | 
			
		||||
     // TODO FIXME
 | 
			
		||||
        throw new UnsupportedOperationException("NOT IMPLEMENTED YET");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void startMetrics() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        
 | 
			
		||||
        try {
 | 
			
		||||
            final SpongeMetrics metrics = new SpongeMetrics(game, this);
 | 
			
		||||
            metrics.start();
 | 
			
		||||
            log(C.PREFIX.s() + "&6Metrics enabled.");
 | 
			
		||||
        } catch (final Exception e) {
 | 
			
		||||
            log(C.PREFIX.s() + "&cFailed to load up metrics.");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,72 @@
 | 
			
		||||
package com.plotsquared.sponge;
 | 
			
		||||
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
import java.util.concurrent.ExecutionException;
 | 
			
		||||
 | 
			
		||||
import com.intellectualcrafters.plot.object.OfflinePlotPlayer;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotPlayer;
 | 
			
		||||
import com.intellectualcrafters.plot.util.UUIDHandler;
 | 
			
		||||
import com.intellectualcrafters.plot.uuid.UUIDWrapper;
 | 
			
		||||
 | 
			
		||||
public class SpongeOnlineUUIDWrapper extends UUIDWrapper {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public UUID getUUID(PlotPlayer player) {
 | 
			
		||||
        return ((SpongePlayer) player).player.getUniqueId();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public UUID getUUID(OfflinePlotPlayer player) {
 | 
			
		||||
        return player.getUUID();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public UUID getUUID(String name) {
 | 
			
		||||
        try {
 | 
			
		||||
            return SpongeMain.THIS.getResolver().get(name, true).get().getUniqueId();
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
        }
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public OfflinePlotPlayer getOfflinePlayer(final UUID uuid) {
 | 
			
		||||
        String name;
 | 
			
		||||
        try {
 | 
			
		||||
            name = SpongeMain.THIS.getResolver().get(uuid, true).get().getName();
 | 
			
		||||
        }
 | 
			
		||||
        catch (Exception e) {
 | 
			
		||||
            name = null;
 | 
			
		||||
        }
 | 
			
		||||
        final String username = name;
 | 
			
		||||
        return new OfflinePlotPlayer() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public boolean isOnline() {
 | 
			
		||||
                return UUIDHandler.getPlayer(uuid) != null;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            @Override
 | 
			
		||||
            public UUID getUUID() {
 | 
			
		||||
                return uuid;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            @Override
 | 
			
		||||
            public String getName() {
 | 
			
		||||
                return username;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            @Override
 | 
			
		||||
            public long getLastPlayed() {
 | 
			
		||||
                // TODO FIXME
 | 
			
		||||
                throw new UnsupportedOperationException("NOT IMPLEMENTED YET");
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public OfflinePlotPlayer[] getOfflinePlayers() {
 | 
			
		||||
        throw new UnsupportedOperationException("NOT IMPLEMENTED YET");
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										205
									
								
								src/main/java/com/plotsquared/sponge/SpongePlayer.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										205
									
								
								src/main/java/com/plotsquared/sponge/SpongePlayer.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,205 @@
 | 
			
		||||
package com.plotsquared.sponge;
 | 
			
		||||
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.permissions.Permission;
 | 
			
		||||
import org.bukkit.permissions.PermissionDefault;
 | 
			
		||||
import org.spongepowered.api.entity.player.Player;
 | 
			
		||||
import org.spongepowered.api.text.chat.ChatTypes;
 | 
			
		||||
 | 
			
		||||
import com.flowpowered.math.vector.Vector3d;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.RequiredType;
 | 
			
		||||
import com.intellectualcrafters.plot.config.C;
 | 
			
		||||
import com.intellectualcrafters.plot.config.Settings;
 | 
			
		||||
import com.intellectualcrafters.plot.object.Location;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotPlayer;
 | 
			
		||||
import com.intellectualcrafters.plot.util.EconHandler;
 | 
			
		||||
import com.intellectualcrafters.plot.util.MainUtil;
 | 
			
		||||
import com.intellectualcrafters.plot.util.UUIDHandler;
 | 
			
		||||
 | 
			
		||||
public class SpongePlayer implements PlotPlayer {
 | 
			
		||||
 | 
			
		||||
    public final Player player;
 | 
			
		||||
    private UUID uuid;
 | 
			
		||||
    private String name;
 | 
			
		||||
    private int op = 0;
 | 
			
		||||
    private long last = 0;
 | 
			
		||||
    private HashSet<String> hasPerm = new HashSet<>();
 | 
			
		||||
    private HashSet<String> noPerm = new HashSet<>();
 | 
			
		||||
    
 | 
			
		||||
    private HashMap<String, Object> meta;
 | 
			
		||||
 | 
			
		||||
    public SpongePlayer(Player player) {
 | 
			
		||||
        this.player = player;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public void sendMessage(C c, String... args) {
 | 
			
		||||
        MainUtil.sendMessage(this, c, args);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public RequiredType getSuperCaller() {
 | 
			
		||||
        return RequiredType.PLAYER;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public long getPreviousLogin() {
 | 
			
		||||
        return (long) (player.getJoinData().getLastPlayed().getSeconds()) * 1000;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Location getLocation() {
 | 
			
		||||
        return SpongeUtil.getLocation(player);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Location getLocationFull() {
 | 
			
		||||
        return SpongeUtil.getLocationFull(player);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public UUID getUUID() {
 | 
			
		||||
        if (this.uuid == null) {
 | 
			
		||||
            this.uuid = UUIDHandler.getUUID(this);
 | 
			
		||||
        }
 | 
			
		||||
        return uuid;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean hasPermission(String perm) {
 | 
			
		||||
        if (Settings.PERMISSION_CACHING) {
 | 
			
		||||
            if (this.noPerm.contains(perm)) {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            if (this.hasPerm.contains(perm)) {
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
            final boolean result = this.player.hasPermission(perm);
 | 
			
		||||
            if (!result) {
 | 
			
		||||
                this.noPerm.add(perm);
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            this.hasPerm.add(perm);
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
        return this.player.hasPermission(perm);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void sendMessage(String message) {
 | 
			
		||||
        player.sendMessage(ChatTypes.CHAT, message);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void teleport(Location loc) {
 | 
			
		||||
        String world = player.getWorld().getName();
 | 
			
		||||
        if (world != loc.getWorld()) {
 | 
			
		||||
            player.transferToWorld(world, new Vector3d(loc.getX(), loc.getY(), loc.getZ()));
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            org.spongepowered.api.world.Location current = player.getLocation();
 | 
			
		||||
            player.setLocationSafely(current.setPosition(new Vector3d(loc.getX(), loc.getY(), loc.getZ())));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean isOp() {
 | 
			
		||||
        if (this.op != 0) {
 | 
			
		||||
            return this.op != 1;
 | 
			
		||||
        }
 | 
			
		||||
        final boolean result = this.player.hasPermission("*");
 | 
			
		||||
        if (!result) {
 | 
			
		||||
            this.op = 1;
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        this.op = 2;
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean isOnline() {
 | 
			
		||||
        return player.isOnline();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String getName() {
 | 
			
		||||
        if (this.name == null) {
 | 
			
		||||
            this.name = this.player.getName();
 | 
			
		||||
        }
 | 
			
		||||
        return this.name;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setCompassTarget(Location loc) {
 | 
			
		||||
        // TODO set compass target
 | 
			
		||||
        throw new UnsupportedOperationException("NOT IMPLEMENTED YET");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void loadData() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        throw new UnsupportedOperationException("NOT IMPLEMENTED YET");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void saveData() {
 | 
			
		||||
        // TODO Auto-generated method stub
 | 
			
		||||
        throw new UnsupportedOperationException("NOT IMPLEMENTED YET");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setMeta(String key, Object value) {
 | 
			
		||||
        if (this.meta == null) {
 | 
			
		||||
            this.meta = new HashMap<String, Object>();
 | 
			
		||||
        }
 | 
			
		||||
        this.meta.put(key, value);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Object getMeta(String key) {
 | 
			
		||||
        if (this.meta != null) {
 | 
			
		||||
            return this.meta.get(key);
 | 
			
		||||
        }
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void deleteMeta(String key) {
 | 
			
		||||
        if (this.meta != null) {
 | 
			
		||||
            this.meta.remove(key);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public String toString() {
 | 
			
		||||
        return getName();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setAttribute(String key) {
 | 
			
		||||
        key = "plotsquared_user_attributes." + key;
 | 
			
		||||
        EconHandler.manager.setPermission(this, key, true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean getAttribute(String key) {
 | 
			
		||||
        key = "plotsquared_user_attributes." + key;
 | 
			
		||||
        Permission perm = Bukkit.getServer().getPluginManager().getPermission(key);
 | 
			
		||||
        if (perm == null) {
 | 
			
		||||
            perm = new Permission(key, PermissionDefault.FALSE);
 | 
			
		||||
            Bukkit.getServer().getPluginManager().addPermission(perm);
 | 
			
		||||
            Bukkit.getServer().getPluginManager().recalculatePermissionDefaults(perm);
 | 
			
		||||
        }
 | 
			
		||||
        return player.hasPermission(key);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void removeAttribute(String key) {
 | 
			
		||||
        key = "plotsquared_user_attributes." + key;
 | 
			
		||||
        EconHandler.manager.setPermission(this, key, false);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										59
									
								
								src/main/java/com/plotsquared/sponge/SpongeTaskManager.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								src/main/java/com/plotsquared/sponge/SpongeTaskManager.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
			
		||||
package com.plotsquared.sponge;
 | 
			
		||||
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.concurrent.atomic.AtomicInteger;
 | 
			
		||||
 | 
			
		||||
import org.spongepowered.api.service.scheduler.Task;
 | 
			
		||||
import org.spongepowered.api.service.scheduler.TaskBuilder;
 | 
			
		||||
 | 
			
		||||
import com.intellectualcrafters.plot.util.TaskManager;
 | 
			
		||||
 | 
			
		||||
public class SpongeTaskManager extends TaskManager {
 | 
			
		||||
 | 
			
		||||
    private AtomicInteger i = new AtomicInteger();
 | 
			
		||||
    
 | 
			
		||||
    private HashMap<Integer, Task> tasks = new HashMap<>();
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public int taskRepeat(Runnable r, int interval) {
 | 
			
		||||
        int val = i.incrementAndGet();
 | 
			
		||||
        TaskBuilder builder = SpongeMain.THIS.getGame().getScheduler().getTaskBuilder();
 | 
			
		||||
        TaskBuilder built = builder.delay(interval).interval(interval).execute(r);
 | 
			
		||||
        Task task = built.submit(SpongeMain.THIS.getPlugin());
 | 
			
		||||
        tasks.put(val, task);
 | 
			
		||||
        return val;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void taskAsync(Runnable r) {
 | 
			
		||||
        TaskBuilder builder = SpongeMain.THIS.getGame().getScheduler().getTaskBuilder();
 | 
			
		||||
        builder.async().execute(r);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void task(Runnable r) {
 | 
			
		||||
        TaskBuilder builder = SpongeMain.THIS.getGame().getScheduler().getTaskBuilder();
 | 
			
		||||
        builder.execute(r);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void taskLater(Runnable r, int delay) {
 | 
			
		||||
        TaskBuilder builder = SpongeMain.THIS.getGame().getScheduler().getTaskBuilder();
 | 
			
		||||
        builder.delay(delay).execute(r);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void taskLaterAsync(Runnable r, int delay) {
 | 
			
		||||
        TaskBuilder builder = SpongeMain.THIS.getGame().getScheduler().getTaskBuilder();
 | 
			
		||||
        builder.async().delay(delay).execute(r);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void cancelTask(int i) {
 | 
			
		||||
        Task task = tasks.remove(i);
 | 
			
		||||
        if (task != null) {
 | 
			
		||||
            task.cancel();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										53
									
								
								src/main/java/com/plotsquared/sponge/SpongeUUIDHandler.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								src/main/java/com/plotsquared/sponge/SpongeUUIDHandler.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
package com.plotsquared.sponge;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
import org.spongepowered.api.GameProfile;
 | 
			
		||||
import org.spongepowered.api.service.profile.GameProfileResolver;
 | 
			
		||||
 | 
			
		||||
import com.google.inject.Inject;
 | 
			
		||||
import com.intellectualcrafters.plot.database.DBFunc;
 | 
			
		||||
import com.intellectualcrafters.plot.object.RunnableVal;
 | 
			
		||||
import com.intellectualcrafters.plot.object.StringWrapper;
 | 
			
		||||
import com.intellectualcrafters.plot.util.TaskManager;
 | 
			
		||||
import com.intellectualcrafters.plot.util.UUIDHandlerImplementation;
 | 
			
		||||
import com.intellectualcrafters.plot.uuid.UUIDWrapper;
 | 
			
		||||
 | 
			
		||||
public class SpongeUUIDHandler extends UUIDHandlerImplementation {
 | 
			
		||||
 | 
			
		||||
    public SpongeUUIDHandler(UUIDWrapper wrapper) {
 | 
			
		||||
        super(wrapper);
 | 
			
		||||
        // TODO Auto-generated constructor stub
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean startCaching(Runnable whenDone) {
 | 
			
		||||
        if (!super.startCaching(whenDone)) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        return cache(whenDone);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean cache(Runnable whenDone) {
 | 
			
		||||
        // TODO cache UUIDS
 | 
			
		||||
//        SpongeMain.THIS.getRegistry().get
 | 
			
		||||
        add(new StringWrapper("*"), DBFunc.everyone);
 | 
			
		||||
        for (GameProfile profile : SpongeMain.THIS.getResolver().getCachedProfiles()) {
 | 
			
		||||
            add(new StringWrapper(profile.getName()), profile.getUniqueId());
 | 
			
		||||
        }
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void fetchUUID(final String name, final RunnableVal<UUID> ifFetch) {
 | 
			
		||||
        TaskManager.runTaskAsync(new Runnable() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void run() {
 | 
			
		||||
                ifFetch.value = uuidWrapper.getUUID(name);
 | 
			
		||||
                TaskManager.runTask(ifFetch);
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										28
									
								
								src/main/java/com/plotsquared/sponge/SpongeUtil.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/main/java/com/plotsquared/sponge/SpongeUtil.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
package com.plotsquared.sponge;
 | 
			
		||||
 | 
			
		||||
import org.spongepowered.api.entity.Entity;
 | 
			
		||||
 | 
			
		||||
import com.flowpowered.math.vector.Vector3d;
 | 
			
		||||
import com.flowpowered.math.vector.Vector3i;
 | 
			
		||||
import com.intellectualcrafters.plot.object.Location;
 | 
			
		||||
import com.intellectualcrafters.plot.util.MathMan;
 | 
			
		||||
 | 
			
		||||
public class SpongeUtil {
 | 
			
		||||
 | 
			
		||||
    public static Location getLocation(Entity player) {
 | 
			
		||||
        String world = player.getWorld().getName();
 | 
			
		||||
        org.spongepowered.api.world.Location loc = player.getLocation();
 | 
			
		||||
        Vector3i pos = loc.getBlockPosition();
 | 
			
		||||
        return new Location(world, pos.getX(), pos.getY(), pos.getZ());
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public static Location getLocationFull(Entity player) {
 | 
			
		||||
        String world = player.getWorld().getName();
 | 
			
		||||
        Vector3d rot = player.getRotation();
 | 
			
		||||
        float[] pitchYaw = MathMan.getPitchAndYaw((float) rot.getX(), (float) rot.getY(), (float) rot.getZ());
 | 
			
		||||
        org.spongepowered.api.world.Location loc = player.getLocation();
 | 
			
		||||
        Vector3i pos = loc.getBlockPosition();
 | 
			
		||||
        return new Location(world, pos.getX(), pos.getY(), pos.getZ(), pitchYaw[1], pitchYaw[0]);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user