mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-10-31 17:43:44 +01:00 
			
		
		
		
	Restructure UUID handler
This commit is contained in:
		| @@ -16,6 +16,7 @@ import com.intellectualcrafters.plot.util.EconHandler; | ||||
| import com.intellectualcrafters.plot.util.EventUtil; | ||||
| import com.intellectualcrafters.plot.util.InventoryUtil; | ||||
| import com.intellectualcrafters.plot.util.PlayerManager; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandlerImplementation; | ||||
| import com.plotsquared.bukkit.util.SetupUtils; | ||||
| import com.intellectualcrafters.plot.util.TaskManager; | ||||
| import com.intellectualcrafters.plot.uuid.UUIDWrapper; | ||||
| @@ -63,7 +64,7 @@ public interface IPlotMain { | ||||
|  | ||||
|     public HybridUtils initHybridUtils(); | ||||
|  | ||||
|     public UUIDWrapper initUUIDHandler(); | ||||
|     public UUIDHandlerImplementation initUUIDHandler(); | ||||
|      | ||||
|     public InventoryUtil initInventoryUtil(); | ||||
|  | ||||
|   | ||||
| @@ -72,8 +72,8 @@ import com.intellectualcrafters.plot.util.MathMan; | ||||
| import com.intellectualcrafters.plot.util.StringMan; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.PlayerManager; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.SetupUtils; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.util.TaskManager; | ||||
| import com.plotsquared.bukkit.util.bukkit.uuid.FileUUIDHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler; | ||||
| @@ -171,7 +171,7 @@ public class PS { | ||||
|             IMP.registerChunkProcessor(); | ||||
|         } | ||||
|         // create UUIDWrapper | ||||
|         UUIDHandler.setUUIDWrapper(IMP.initUUIDHandler()); | ||||
|         UUIDHandler.implementation = IMP.initUUIDHandler(); | ||||
|         // create event util class | ||||
|         EventUtil.manager = IMP.initEventUtil(); | ||||
|         // create Hybrid utility class | ||||
| @@ -598,7 +598,7 @@ public class PS { | ||||
|      * @return Set of Plot | ||||
|      */ | ||||
|     public Set<Plot> getPlots(final String world, final String player) { | ||||
|         final UUID uuid = UUIDHandler.getUUID(player); | ||||
|         final UUID uuid = UUIDHandler.getUUID(player, null); | ||||
|         return getPlots(world, uuid); | ||||
|     } | ||||
|  | ||||
| @@ -1515,8 +1515,6 @@ public class PS { | ||||
|             Settings.FANCY_CHAT = false; | ||||
|         } | ||||
|         Settings.METRICS = config.getBoolean("metrics"); | ||||
|  | ||||
|         UUIDHandler.implementation = Settings.USE_SQLUUIDHANDLER ? new SQLUUIDHandler() : new FileUUIDHandler(); | ||||
|     } | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -48,7 +48,7 @@ import com.intellectualcrafters.plot.util.ClusterManager; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.SchematicHandler; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.BukkitSetBlockManager; | ||||
| import com.plotsquared.bukkit.util.bukkit.BukkitUtil; | ||||
| import com.intellectualcrafters.plot.uuid.UUIDWrapper; | ||||
|   | ||||
| @@ -31,11 +31,10 @@ import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.util.EventUtil; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualsites.commands.Argument; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
|  | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|   | ||||
| @@ -34,9 +34,9 @@ import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.object.PlotWorld; | ||||
| import com.intellectualcrafters.plot.util.EconHandler; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|         command = "buy", | ||||
|   | ||||
| @@ -34,9 +34,9 @@ import com.intellectualcrafters.plot.util.CmdConfirm; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.TaskManager; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|         command = "clear", | ||||
|   | ||||
| @@ -47,8 +47,8 @@ import com.intellectualcrafters.plot.util.ClusterManager; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.StringMan; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.SetupUtils; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|         command = "cluser", | ||||
|   | ||||
| @@ -14,9 +14,9 @@ import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.StringComparison; | ||||
| import com.intellectualcrafters.plot.util.TaskManager; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|         command = "database", | ||||
|   | ||||
| @@ -39,9 +39,9 @@ import com.intellectualcrafters.plot.util.BlockManager; | ||||
| import com.intellectualcrafters.plot.util.ChunkManager; | ||||
| import com.intellectualcrafters.plot.util.EventUtil; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|         command = "debugclaimtest", | ||||
|   | ||||
| @@ -31,9 +31,9 @@ import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.util.ChunkManager; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|         command = "debugclear", | ||||
|   | ||||
| @@ -33,7 +33,7 @@ import java.util.UUID; | ||||
| import com.intellectualcrafters.plot.commands.callers.PlotPlayerCaller; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| import org.apache.commons.lang.StringUtils; | ||||
| import org.bukkit.Bukkit; | ||||
|  | ||||
| @@ -52,6 +52,7 @@ import com.intellectualcrafters.plot.util.BlockManager; | ||||
| import com.intellectualcrafters.plot.util.ChunkManager; | ||||
| import com.intellectualcrafters.plot.util.ExpireManager; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|         command = "debugexec", | ||||
|   | ||||
| @@ -31,7 +31,7 @@ import java.util.UUID; | ||||
| import com.intellectualsites.commands.Argument; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| import org.bukkit.Bukkit; | ||||
|  | ||||
| import com.intellectualcrafters.plot.PS; | ||||
| @@ -46,7 +46,7 @@ import com.intellectualcrafters.plot.object.StringWrapper; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.PlayerManager; | ||||
| import com.intellectualcrafters.plot.util.TaskManager; | ||||
|  | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.uuid.DefaultUUIDWrapper; | ||||
| import com.intellectualcrafters.plot.uuid.LowerOfflineUUIDWrapper; | ||||
| import com.intellectualcrafters.plot.uuid.OfflineUUIDWrapper; | ||||
|   | ||||
| @@ -32,9 +32,9 @@ import com.intellectualcrafters.plot.util.EconHandler; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.TaskManager; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|         command = "delete", | ||||
|   | ||||
| @@ -31,11 +31,10 @@ import com.intellectualcrafters.plot.util.BlockManager; | ||||
| import com.intellectualcrafters.plot.util.EventUtil; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualsites.commands.Argument; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
|  | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|   | ||||
| @@ -29,7 +29,7 @@ import com.intellectualcrafters.plot.commands.callers.PlotPlayerCaller; | ||||
| import com.intellectualcrafters.plot.flag.Flag; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| import org.apache.commons.lang.StringUtils; | ||||
|  | ||||
| import com.intellectualcrafters.plot.config.C; | ||||
| @@ -45,6 +45,7 @@ import com.intellectualcrafters.plot.util.BlockManager; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.StringMan; | ||||
| import com.intellectualcrafters.plot.util.TaskManager; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|         command = "info", | ||||
|   | ||||
| @@ -27,9 +27,9 @@ import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.util.BlockManager; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|         command = "kick", | ||||
|   | ||||
| @@ -27,7 +27,7 @@ import java.util.UUID; | ||||
| import com.intellectualsites.commands.Argument; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| import org.apache.commons.lang.StringUtils; | ||||
|  | ||||
| import com.intellectualcrafters.plot.PS; | ||||
| @@ -42,6 +42,7 @@ import com.intellectualcrafters.plot.util.EconHandler; | ||||
| import com.intellectualcrafters.plot.util.EventUtil; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|         command = "merge", | ||||
|   | ||||
| @@ -31,9 +31,9 @@ import com.intellectualcrafters.plot.database.DBFunc; | ||||
| import com.intellectualcrafters.plot.object.Plot; | ||||
| import com.intellectualcrafters.plot.object.PlotId; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
|  | ||||
| @CommandDeclaration( | ||||
|   | ||||
| @@ -30,11 +30,10 @@ import com.intellectualcrafters.plot.object.Plot; | ||||
| import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualsites.commands.Argument; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
|  | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|   | ||||
| @@ -26,7 +26,7 @@ import java.util.List; | ||||
|  | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| import org.apache.commons.lang.StringUtils; | ||||
|  | ||||
| import com.intellectualcrafters.plot.PS; | ||||
| @@ -50,6 +50,7 @@ import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.SetBlockQueue; | ||||
| import com.intellectualcrafters.plot.util.StringComparison; | ||||
| import com.intellectualcrafters.plot.util.StringMan; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
|  | ||||
|  | ||||
| // TODO Make sub-subcommands | ||||
|   | ||||
| @@ -33,10 +33,10 @@ import com.intellectualcrafters.plot.object.PlotId; | ||||
| import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualsites.commands.Argument; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|         command = "setowner", | ||||
|   | ||||
| @@ -23,7 +23,7 @@ package com.intellectualcrafters.plot.commands; | ||||
| import com.intellectualsites.commands.Argument; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| import org.apache.commons.lang.StringUtils; | ||||
|  | ||||
| import com.intellectualcrafters.plot.PS; | ||||
| @@ -34,6 +34,7 @@ import com.intellectualcrafters.plot.object.PlotId; | ||||
| import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.util.BlockManager; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|         command = "tp", | ||||
|   | ||||
| @@ -31,10 +31,10 @@ import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.util.EventUtil; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualsites.commands.Argument; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|   | ||||
| @@ -29,11 +29,10 @@ import com.intellectualcrafters.plot.object.Plot; | ||||
| import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualsites.commands.Argument; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
|  | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|   | ||||
| @@ -29,10 +29,10 @@ import com.intellectualcrafters.plot.object.Plot; | ||||
| import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualsites.commands.Argument; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| //     UNTRUST("untrust", "ut"), | ||||
|  | ||||
|   | ||||
| @@ -30,10 +30,10 @@ import com.intellectualcrafters.plot.object.Plot; | ||||
| import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualsites.commands.Argument; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|         command = "visit", | ||||
|   | ||||
| @@ -32,7 +32,7 @@ import java.util.UUID; | ||||
| import com.intellectualcrafters.plot.commands.callers.PlotPlayerCaller; | ||||
| import com.intellectualsites.commands.CommandDeclaration; | ||||
| import com.intellectualsites.commands.CommandCaller; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| import org.apache.commons.lang.StringUtils; | ||||
| import org.bukkit.ChatColor; | ||||
|  | ||||
| @@ -49,7 +49,7 @@ import com.intellectualcrafters.plot.util.EconHandler; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.StringComparison; | ||||
|  | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.chat.FancyMessage; | ||||
|  | ||||
| @CommandDeclaration( | ||||
|   | ||||
| @@ -7,7 +7,7 @@ import java.util.UUID; | ||||
|  | ||||
| import com.intellectualcrafters.plot.database.DBFunc; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
|  | ||||
| public class PlotHandler { | ||||
|     public static HashSet<UUID> getOwners(Plot plot) { | ||||
|   | ||||
| @@ -23,7 +23,6 @@ import com.intellectualcrafters.plot.object.PlotId; | ||||
| import com.intellectualcrafters.plot.object.PlotManager; | ||||
| import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.object.PlotWorld; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.BukkitUtil; | ||||
|  | ||||
| public class ClusterManager { | ||||
|   | ||||
| @@ -22,7 +22,6 @@ import com.intellectualcrafters.plot.object.PlotManager; | ||||
| import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.object.PlotWorld; | ||||
| import com.intellectualcrafters.plot.object.RunnableVal; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| public class ExpireManager { | ||||
|     public static ConcurrentHashMap<String, List<Plot>> expiredPlots = new ConcurrentHashMap<>(); | ||||
|   | ||||
| @@ -45,7 +45,6 @@ import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.object.PlotWorld; | ||||
| import com.intellectualcrafters.plot.object.PseudoRandom; | ||||
| import com.intellectualcrafters.plot.object.RunnableVal; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.BukkitUtil; | ||||
|  | ||||
| /** | ||||
| @@ -110,7 +109,7 @@ public class MainUtil { | ||||
|          | ||||
|         for (String term : split) { | ||||
|             try { | ||||
|                 UUID uuid = UUIDHandler.getUUID(term); | ||||
|                 UUID uuid = UUIDHandler.getUUID(term, null); | ||||
|                 if (uuid == null) { | ||||
|                     uuid = UUID.fromString(term); | ||||
|                 } | ||||
|   | ||||
| @@ -47,7 +47,6 @@ import com.intellectualcrafters.plot.object.PlotId; | ||||
| import com.intellectualcrafters.plot.object.RunnableVal; | ||||
| import com.intellectualcrafters.plot.object.schematic.PlotItem; | ||||
| import com.plotsquared.bukkit.object.schematic.StateWrapper; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.WorldEditSchematic; | ||||
| import com.plotsquared.bukkit.util.bukkit.BukkitSchematicHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.BukkitUtil; | ||||
|   | ||||
| @@ -1,16 +1,15 @@ | ||||
| package com.plotsquared.bukkit.util; | ||||
| package com.intellectualcrafters.plot.util; | ||||
| 
 | ||||
| import java.util.HashSet; | ||||
| import java.util.Map; | ||||
| import java.util.UUID; | ||||
| 
 | ||||
| import com.plotsquared.bukkit.util.bukkit.uuid.UUIDHandlerImplementation; | ||||
| 
 | ||||
| import com.google.common.collect.BiMap; | ||||
| import com.intellectualcrafters.plot.PS; | ||||
| import com.plotsquared.bukkit.object.BukkitOfflinePlayer; | ||||
| import com.intellectualcrafters.plot.object.OfflinePlotPlayer; | ||||
| import com.intellectualcrafters.plot.object.Plot; | ||||
| import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.object.RunnableVal; | ||||
| import com.intellectualcrafters.plot.object.StringWrapper; | ||||
| import com.intellectualcrafters.plot.uuid.UUIDWrapper; | ||||
| 
 | ||||
| @@ -84,15 +83,15 @@ public class UUIDHandler { | ||||
|         implementation.startCaching(); | ||||
|     } | ||||
| 
 | ||||
|     public static void cache(final Map<StringWrapper, UUID> toAdd) { | ||||
|         implementation.cache(toAdd); | ||||
|     public static void cache(final BiMap<StringWrapper, UUID> toAdd) { | ||||
|         implementation.add(toAdd); | ||||
|     } | ||||
| 
 | ||||
|     public static UUID getUUID(final PlotPlayer player) { | ||||
|         return implementation.getUUID(player); | ||||
|     } | ||||
| 
 | ||||
|     public static UUID getUUID(final BukkitOfflinePlayer player) { | ||||
|     public static UUID getUUID(final OfflinePlotPlayer player) { | ||||
|         return implementation.getUUID(player); | ||||
|     } | ||||
| 
 | ||||
| @@ -108,18 +107,14 @@ public class UUIDHandler { | ||||
|         return implementation.getPlayer(name); | ||||
|     } | ||||
|      | ||||
|     public static UUID getUUID(final String name) { | ||||
|         return implementation.getUUID(name); | ||||
|     public static UUID getUUID(final String name, RunnableVal<UUID> ifFetch) { | ||||
|         return implementation.getUUID(name, ifFetch); | ||||
|     } | ||||
| 
 | ||||
|     public static Map<String, PlotPlayer> getPlayers() { | ||||
|         return implementation.getPlayers(); | ||||
|     } | ||||
| 
 | ||||
|     public static void cacheWorld(String world) { | ||||
|         implementation.cacheWorld(world); | ||||
|     } | ||||
| 
 | ||||
|     public static void handleShutdown() { | ||||
|         implementation.handleShutdown(); | ||||
|     } | ||||
| @@ -0,0 +1,176 @@ | ||||
| package com.intellectualcrafters.plot.util; | ||||
|  | ||||
| import com.google.common.collect.BiMap; | ||||
| import com.google.common.collect.HashBiMap; | ||||
| import com.intellectualcrafters.plot.PS; | ||||
| import com.intellectualcrafters.plot.config.C; | ||||
| import com.intellectualcrafters.plot.config.Settings; | ||||
| import com.intellectualcrafters.plot.object.OfflinePlotPlayer; | ||||
| import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.object.RunnableVal; | ||||
| import com.intellectualcrafters.plot.object.StringWrapper; | ||||
| import com.intellectualcrafters.plot.uuid.LowerOfflineUUIDWrapper; | ||||
| import com.intellectualcrafters.plot.uuid.OfflineUUIDWrapper; | ||||
| import com.intellectualcrafters.plot.uuid.UUIDWrapper; | ||||
|  | ||||
| import java.util.HashMap; | ||||
| import java.util.Map; | ||||
| import java.util.UUID; | ||||
|  | ||||
| public abstract class UUIDHandlerImplementation { | ||||
|      | ||||
|     private BiMap<StringWrapper, UUID> uuidMap = HashBiMap.create(new HashMap<StringWrapper, UUID>()); | ||||
|     public boolean CACHED = false; | ||||
|     public UUIDWrapper uuidWrapper = null; | ||||
|     public final HashMap<String, PlotPlayer> players; | ||||
|      | ||||
|     public UUIDHandlerImplementation(UUIDWrapper wrapper) { | ||||
|         this.uuidWrapper = wrapper; | ||||
|         this.players = new HashMap<>(); | ||||
|     } | ||||
|      | ||||
|     /** | ||||
|      * If the UUID is not found, some commands can request to fetch the UUID when possible | ||||
|      * @param player | ||||
|      * @param ifFetch | ||||
|      */ | ||||
|     public abstract void fetchUUID(String name, RunnableVal<UUID> ifFetch); | ||||
|      | ||||
|     /** | ||||
|      * Start UUID caching (this should be an async task) | ||||
|      * Recommended to override this is you want to cache offline players | ||||
|      */ | ||||
|     public boolean startCaching() { | ||||
|         if (CACHED) { | ||||
|             return false; | ||||
|         } | ||||
|         return this.CACHED = true; | ||||
|     } | ||||
|      | ||||
|     public UUIDWrapper getUUIDWrapper() { | ||||
|         return this.uuidWrapper; | ||||
|     } | ||||
|      | ||||
|     public void setUUIDWrapper(UUIDWrapper wrapper) { | ||||
|         this.uuidWrapper = wrapper; | ||||
|     } | ||||
|      | ||||
|     public void add(final BiMap<StringWrapper, UUID> toAdd) { | ||||
|         if (uuidMap.size() == 0) { | ||||
|             uuidMap = toAdd; | ||||
|         } | ||||
|         TaskManager.runTask(new Runnable() { | ||||
|             @Override | ||||
|             public void run() { | ||||
|                 for (Map.Entry<StringWrapper, UUID> entry : toAdd.entrySet()) { | ||||
|                     add(entry.getKey(), entry.getValue()); | ||||
|                 } | ||||
|                 PS.log(C.PREFIX.s() + "&6Cached a total of: " + uuidMap.size() + " UUIDs"); | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
|      | ||||
|     public boolean add(final StringWrapper name, final UUID uuid) { | ||||
|         if ((uuid == null) || (name == null)) { | ||||
|             return false; | ||||
|         } | ||||
|         BiMap<UUID, StringWrapper> inverse = uuidMap.inverse(); | ||||
|         if (inverse.containsKey(uuid)) { | ||||
|             if (uuidMap.containsKey(name)) { | ||||
|                 return false; | ||||
|             } | ||||
|             inverse.remove(uuid); | ||||
|         } | ||||
|         uuidMap.put(name, uuid); | ||||
|         return true; | ||||
|     } | ||||
|      | ||||
|     public boolean uuidExists(final UUID uuid) { | ||||
|         return uuidMap.containsValue(uuid); | ||||
|     } | ||||
|      | ||||
|     public BiMap<StringWrapper, UUID> getUUIDMap() { | ||||
|         return uuidMap; | ||||
|     } | ||||
|      | ||||
|     public boolean nameExists(final StringWrapper wrapper) { | ||||
|         return uuidMap.containsKey(wrapper); | ||||
|     } | ||||
|      | ||||
|     public void handleShutdown() { | ||||
|         players.clear(); | ||||
|         uuidMap.clear(); | ||||
|         uuidWrapper = null; | ||||
|     } | ||||
|      | ||||
|     public String getName(final UUID uuid) { | ||||
|         if (uuid == null) { | ||||
|             return null; | ||||
|         } | ||||
|         // check online | ||||
|         final PlotPlayer player = getPlayer(uuid); | ||||
|         if (player != null) { | ||||
|             return player.getName(); | ||||
|         } | ||||
|         // check cache | ||||
|         final StringWrapper name = uuidMap.inverse().get(uuid); | ||||
|         if (name != null) { | ||||
|             return name.value; | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
|      | ||||
|     public UUID getUUID(final String name, RunnableVal<UUID> ifFetch) { | ||||
|         if ((name == null) || (name.length() == 0)) { | ||||
|             return null; | ||||
|         } | ||||
|         // check online | ||||
|         final PlotPlayer player = getPlayer(name); | ||||
|         if (player != null) { | ||||
|             return player.getUUID(); | ||||
|         } | ||||
|         // check cache | ||||
|         final StringWrapper wrap = new StringWrapper(name); | ||||
|         UUID uuid = uuidMap.get(wrap); | ||||
|         if (uuid != null) { | ||||
|             return uuid; | ||||
|         } | ||||
|         // Read from disk OR convert directly to offline UUID | ||||
|         if (uuidWrapper instanceof OfflineUUIDWrapper || uuidWrapper instanceof LowerOfflineUUIDWrapper) { | ||||
|             uuid = uuidWrapper.getUUID(name); | ||||
|             add(new StringWrapper(name), uuid); | ||||
|             return uuid; | ||||
|         } | ||||
|         if (Settings.UUID_FROM_DISK && ifFetch != null) { | ||||
|             fetchUUID(name, ifFetch); | ||||
|             return null; | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
|      | ||||
|     public UUID getUUID(final PlotPlayer player) { | ||||
|         return uuidWrapper.getUUID(player); | ||||
|     } | ||||
|      | ||||
|     public UUID getUUID(final OfflinePlotPlayer player) { | ||||
|         return uuidWrapper.getUUID(player); | ||||
|     } | ||||
|      | ||||
|     public PlotPlayer getPlayer(final UUID uuid) { | ||||
|         for (final PlotPlayer player : players.values()) { | ||||
|             if (player.getUUID().equals(uuid)) { | ||||
|                 return player; | ||||
|             } | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
|      | ||||
|     public PlotPlayer getPlayer(String name) { | ||||
|         return players.get(name); | ||||
|     } | ||||
|      | ||||
|     public Map<String, PlotPlayer> getPlayers() { | ||||
|         return players; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -16,7 +16,7 @@ import com.plotsquared.bukkit.object.BukkitOfflinePlayer; | ||||
| import com.intellectualcrafters.plot.object.OfflinePlotPlayer; | ||||
| import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.object.StringWrapper; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
|  | ||||
| public class LowerOfflineUUIDWrapper extends OfflineUUIDWrapper { | ||||
|     private Method getOnline = null; | ||||
|   | ||||
| @@ -16,7 +16,7 @@ import com.plotsquared.bukkit.object.BukkitOfflinePlayer; | ||||
| import com.intellectualcrafters.plot.object.OfflinePlotPlayer; | ||||
| import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.object.StringWrapper; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
|  | ||||
| public class OfflineUUIDWrapper extends UUIDWrapper { | ||||
|     private Method getOnline = null; | ||||
|   | ||||
| @@ -27,8 +27,9 @@ import com.intellectualcrafters.plot.uuid.LowerOfflineUUIDWrapper; | ||||
| import com.intellectualcrafters.plot.uuid.OfflineUUIDWrapper; | ||||
| import com.intellectualcrafters.plot.uuid.UUIDWrapper; | ||||
| import com.plotsquared.bukkit.util.SetupUtils; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.*; | ||||
| import com.plotsquared.bukkit.util.bukkit.uuid.FileUUIDHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler; | ||||
| import com.sk89q.worldedit.WorldEdit; | ||||
| import com.sk89q.worldedit.bukkit.WorldEditPlugin; | ||||
|  | ||||
| @@ -428,23 +429,24 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain { | ||||
|     } | ||||
|      | ||||
|     @Override | ||||
|     public UUIDWrapper initUUIDHandler() { | ||||
|     public UUIDHandlerImplementation initUUIDHandler() { | ||||
|         final boolean checkVersion = PS.get().checkVersion(this.getServerVersion(), 1, 7, 6); | ||||
|         UUIDWrapper wrapper; | ||||
|         if (Settings.OFFLINE_MODE) { | ||||
|             if (Settings.UUID_LOWERCASE) { | ||||
|                 UUIDHandler.setUUIDWrapper(new LowerOfflineUUIDWrapper()); | ||||
|                 wrapper = (new LowerOfflineUUIDWrapper()); | ||||
|             } else { | ||||
|                 UUIDHandler.setUUIDWrapper(new OfflineUUIDWrapper()); | ||||
|                 wrapper = (new OfflineUUIDWrapper()); | ||||
|             } | ||||
|             Settings.OFFLINE_MODE = true; | ||||
|         } else if (checkVersion) { | ||||
|             UUIDHandler.setUUIDWrapper(new DefaultUUIDWrapper()); | ||||
|             wrapper = (new DefaultUUIDWrapper()); | ||||
|             Settings.OFFLINE_MODE = false; | ||||
|         } else { | ||||
|             if (Settings.UUID_LOWERCASE) { | ||||
|                 UUIDHandler.setUUIDWrapper(new LowerOfflineUUIDWrapper()); | ||||
|                 wrapper = (new LowerOfflineUUIDWrapper()); | ||||
|             } else { | ||||
|                 UUIDHandler.setUUIDWrapper(new OfflineUUIDWrapper()); | ||||
|                 wrapper = (new OfflineUUIDWrapper()); | ||||
|             } | ||||
|             Settings.OFFLINE_MODE = true; | ||||
|         } | ||||
| @@ -465,7 +467,7 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain { | ||||
|         } else { | ||||
|             log(C.PREFIX.s() + " &6PlotSquared is using online UUIDs"); | ||||
|         } | ||||
|         return UUIDHandler.getUUIDWrapper(); | ||||
|         return Settings.USE_SQLUUIDHANDLER ? new SQLUUIDHandler(wrapper) : new FileUUIDHandler(wrapper); | ||||
|     } | ||||
|      | ||||
|     @Override | ||||
|   | ||||
| @@ -20,7 +20,7 @@ import com.intellectualcrafters.plot.object.Plot; | ||||
| import com.intellectualcrafters.plot.object.PlotId; | ||||
| import com.intellectualcrafters.plot.object.StringWrapper; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
|  | ||||
| public class ClassicPlotMeConnector extends APlotMeConnector { | ||||
|  | ||||
|   | ||||
| @@ -20,7 +20,7 @@ import com.intellectualcrafters.plot.object.Plot; | ||||
| import com.intellectualcrafters.plot.object.PlotId; | ||||
| import com.intellectualcrafters.plot.object.StringWrapper; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
|  | ||||
| public class PlotMeConnector_017 extends APlotMeConnector { | ||||
|     private String plugin; | ||||
|   | ||||
| @@ -35,7 +35,7 @@ import com.intellectualcrafters.plot.flag.FlagManager; | ||||
| import com.intellectualcrafters.plot.object.Location; | ||||
| import com.intellectualcrafters.plot.object.Plot; | ||||
| import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.BukkitPlayerFunctions; | ||||
| import com.plotsquared.bukkit.util.bukkit.BukkitUtil; | ||||
|  | ||||
|   | ||||
| @@ -113,7 +113,7 @@ import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.RegExUtil; | ||||
| import com.intellectualcrafters.plot.util.StringMan; | ||||
| import com.intellectualcrafters.plot.util.TaskManager; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.BukkitUtil; | ||||
|  | ||||
| /** | ||||
|   | ||||
| @@ -49,7 +49,7 @@ import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.intellectualcrafters.plot.util.StringMan; | ||||
| import com.intellectualcrafters.plot.util.TaskManager; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
|  | ||||
| /** | ||||
|  * @author Citymonstret | ||||
|   | ||||
| @@ -53,7 +53,7 @@ import com.intellectualcrafters.plot.object.PlotHandler; | ||||
| import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.BukkitUtil; | ||||
|  | ||||
| /** | ||||
|   | ||||
| @@ -9,9 +9,9 @@ import org.bukkit.event.world.WorldLoadEvent; | ||||
| import org.bukkit.generator.ChunkGenerator; | ||||
|  | ||||
| import com.intellectualcrafters.plot.PS; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.generator.BukkitGeneratorWrapper; | ||||
| import com.plotsquared.bukkit.generator.BukkitPlotGenerator; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| public class WorldEvents implements Listener { | ||||
|      | ||||
| @@ -47,6 +47,6 @@ public class WorldEvents implements Listener { | ||||
|      | ||||
|     @EventHandler | ||||
|     public void worldLoad(final WorldLoadEvent event) { | ||||
|         UUIDHandler.cacheWorld(event.getWorld().getName()); | ||||
|         UUIDHandler.startCaching(); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -9,7 +9,7 @@ import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.object.RegionWrapper; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.intellectualcrafters.plot.util.Permissions; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.sk89q.worldedit.event.extent.EditSessionEvent; | ||||
| import com.sk89q.worldedit.extension.platform.Actor; | ||||
| import com.sk89q.worldedit.util.eventbus.EventHandler.Priority; | ||||
|   | ||||
| @@ -14,7 +14,7 @@ import org.bukkit.permissions.PermissionDefault; | ||||
|  | ||||
| import com.intellectualcrafters.plot.config.Settings; | ||||
| import com.intellectualcrafters.plot.util.EconHandler; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.BukkitUtil; | ||||
|  | ||||
| public class BukkitPlayer implements PlotPlayer { | ||||
|   | ||||
| @@ -6,6 +6,7 @@ import java.util.UUID; | ||||
|  | ||||
| import com.intellectualcrafters.plot.object.Plot; | ||||
| import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
|  | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.ChatColor; | ||||
| @@ -16,7 +17,6 @@ import org.bukkit.inventory.InventoryHolder; | ||||
| import org.bukkit.inventory.ItemStack; | ||||
| import org.bukkit.inventory.meta.ItemMeta; | ||||
|  | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.plotsquared.bukkit.util.bukkit.BukkitUtil; | ||||
|  | ||||
| /** | ||||
|   | ||||
| @@ -32,7 +32,7 @@ import com.intellectualcrafters.plot.config.C; | ||||
| import com.intellectualcrafters.plot.object.Plot; | ||||
| import com.intellectualcrafters.plot.object.PlotId; | ||||
| import com.intellectualcrafters.plot.util.MainUtil; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
|  | ||||
| /** | ||||
|  * Functions involving players, plots and locations. | ||||
|   | ||||
| @@ -26,7 +26,6 @@ import org.bukkit.material.WoodenStep; | ||||
| import org.bukkit.material.Wool; | ||||
|  | ||||
| import com.plotsquared.bukkit.object.BukkitPlayer; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.object.ChunkLoc; | ||||
| import com.intellectualcrafters.plot.object.Location; | ||||
| import com.intellectualcrafters.plot.object.PlotBlock; | ||||
| @@ -36,6 +35,7 @@ import com.intellectualcrafters.plot.util.BlockManager; | ||||
| import com.intellectualcrafters.plot.util.ChunkManager; | ||||
| import com.intellectualcrafters.plot.util.MathMan; | ||||
| import com.intellectualcrafters.plot.util.StringComparison; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
|  | ||||
| public class BukkitUtil extends BlockManager { | ||||
|     private static HashMap<String, World> worlds = new HashMap<>(); | ||||
|   | ||||
| @@ -1,6 +1,16 @@ | ||||
| package com.plotsquared.bukkit.util.bukkit.uuid; | ||||
|  | ||||
| import com.google.common.collect.BiMap; | ||||
| import java.io.File; | ||||
| import java.io.FileInputStream; | ||||
| import java.io.FilenameFilter; | ||||
| import java.util.HashMap; | ||||
| import java.util.HashSet; | ||||
| import java.util.List; | ||||
| import java.util.UUID; | ||||
|  | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.World; | ||||
|  | ||||
| import com.google.common.collect.HashBiMap; | ||||
| import com.google.common.io.Files; | ||||
| import com.google.common.io.InputSupplier; | ||||
| @@ -8,99 +18,42 @@ import com.intellectualcrafters.plot.PS; | ||||
| import com.intellectualcrafters.plot.config.C; | ||||
| import com.intellectualcrafters.plot.config.Settings; | ||||
| import com.intellectualcrafters.plot.database.DBFunc; | ||||
| import com.intellectualcrafters.plot.object.*; | ||||
| import com.intellectualcrafters.plot.object.OfflinePlotPlayer; | ||||
| import com.intellectualcrafters.plot.object.RunnableVal; | ||||
| import com.intellectualcrafters.plot.object.StringWrapper; | ||||
| import com.intellectualcrafters.plot.util.ExpireManager; | ||||
| import com.intellectualcrafters.plot.util.NbtFactory; | ||||
| import com.intellectualcrafters.plot.util.TaskManager; | ||||
| import com.plotsquared.bukkit.object.BukkitOfflinePlayer; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.uuid.OfflineUUIDWrapper; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandlerImplementation; | ||||
| import com.intellectualcrafters.plot.uuid.UUIDWrapper; | ||||
|  | ||||
| import org.bukkit.Bukkit; | ||||
| public class FileUUIDHandler extends UUIDHandlerImplementation { | ||||
|  | ||||
| import java.io.File; | ||||
| import java.io.FileInputStream; | ||||
| import java.io.FilenameFilter; | ||||
| import java.util.HashMap; | ||||
| import java.util.HashSet; | ||||
| import java.util.Map; | ||||
| import java.util.UUID; | ||||
|  | ||||
| public class FileUUIDHandler implements UUIDHandlerImplementation { | ||||
|  | ||||
|     private final BiMap<StringWrapper, UUID> uuidMap = HashBiMap.create(new HashMap<StringWrapper, UUID>()); | ||||
|     public boolean CACHED = false; | ||||
|     public UUIDWrapper uuidWrapper = null; | ||||
|     public HashMap<String, PlotPlayer> players = new HashMap<>(); | ||||
|  | ||||
|     @Override | ||||
|     public void add(final StringWrapper name, final UUID uuid) { | ||||
|         if ((uuid == null) || (name == null)) { | ||||
|             return; | ||||
|         } | ||||
|         BiMap<UUID, StringWrapper> inverse = uuidMap.inverse(); | ||||
|         if (inverse.containsKey(uuid)) { | ||||
|             if (uuidMap.containsKey(name)) { | ||||
|                 return; | ||||
|             } | ||||
|             inverse.remove(uuid); | ||||
|         } | ||||
|         uuidMap.put(name, uuid); | ||||
|     public FileUUIDHandler(UUIDWrapper wrapper) { | ||||
|         super(wrapper); | ||||
|     } | ||||
|      | ||||
|     @Override | ||||
|     public void handleShutdown() {} | ||||
|  | ||||
|     @Override | ||||
|     public BiMap<StringWrapper, UUID> getUUIDMap() { | ||||
|         return uuidMap; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public boolean uuidExists(final UUID uuid) { | ||||
|         return uuidMap.containsValue(uuid); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public boolean nameExists(final StringWrapper name) { | ||||
|         return uuidMap.containsKey(name); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void startCaching() { | ||||
|         if (Bukkit.getWorlds().size() > 1) { | ||||
|             cacheWorld(Bukkit.getWorlds().get(0).getName()); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void setUUIDWrapper(UUIDWrapper wrapper) { | ||||
|         this.uuidWrapper = wrapper; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public UUIDWrapper getUUIDWrapper() { | ||||
|         return uuidWrapper; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Map<String, PlotPlayer> getPlayers() { | ||||
|         return players; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void cacheWorld(final String world) { | ||||
|         if (CACHED) { | ||||
|             return; | ||||
|     public boolean startCaching() { | ||||
|         if (!super.startCaching()) { | ||||
|             return false; | ||||
|         } | ||||
|         final File container = Bukkit.getWorldContainer(); | ||||
|         List<World> worlds = Bukkit.getWorlds(); | ||||
|         final String world; | ||||
|         if (worlds.size() == 0) { | ||||
|             world = "world"; | ||||
|         } | ||||
|         else { | ||||
|             world = worlds.get(0).getName(); | ||||
|         } | ||||
|         CACHED = true; | ||||
|         TaskManager.runTaskAsync(new Runnable() { | ||||
|             @Override | ||||
|             public void run() { | ||||
|                 PS.log(C.PREFIX.s() + "&6Starting player data caching for: " + world); | ||||
|                 final HashMap<StringWrapper, UUID> toAdd = new HashMap<>(); | ||||
|                 final HashBiMap<StringWrapper, UUID> toAdd = HashBiMap.create(new HashMap<StringWrapper, UUID>()); | ||||
|                 toAdd.put(new StringWrapper("*"), DBFunc.everyone); | ||||
|                 if (Settings.TWIN_MODE_UUID) { | ||||
|                     HashSet<UUID> all = UUIDHandler.getAllUUIDS(); | ||||
| @@ -134,7 +87,7 @@ public class FileUUIDHandler implements UUIDHandlerImplementation { | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                     cache(toAdd); | ||||
|                     add(toAdd); | ||||
|                     return; | ||||
|                 } | ||||
|                 final HashSet<String> worlds = new HashSet<>(); | ||||
| @@ -208,7 +161,7 @@ public class FileUUIDHandler implements UUIDHandlerImplementation { | ||||
|                     toAdd.put(nameWrap, uuid); | ||||
|                 } | ||||
|  | ||||
|                 if (uuidMap.size() == 0) { | ||||
|                 if (getUUIDMap().size() == 0) { | ||||
|                     for (OfflinePlotPlayer op : uuidWrapper.getOfflinePlayers()) { | ||||
|                         if (op.getLastPlayed() != 0) { | ||||
|                             String name = op.getName(); | ||||
| @@ -218,89 +171,20 @@ public class FileUUIDHandler implements UUIDHandlerImplementation { | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|                 cache(toAdd); | ||||
|                 add(toAdd); | ||||
|             } | ||||
|         }); | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void cache(final Map<StringWrapper, UUID> toAdd) { | ||||
|         TaskManager.runTask(new Runnable() { | ||||
|     public void fetchUUID(final String name, final RunnableVal<UUID> ifFetch) { | ||||
|         TaskManager.runTaskAsync(new Runnable() { | ||||
|             @Override | ||||
|             public void run() { | ||||
|                 for (Map.Entry<StringWrapper, UUID> entry : toAdd.entrySet()) { | ||||
|                     add(entry.getKey(), entry.getValue()); | ||||
|                 } | ||||
|                 PS.log(C.PREFIX.s() + "&6Cached a total of: " + uuidMap.size() + " UUIDs"); | ||||
|                 ifFetch.value = uuidWrapper.getUUID(name); | ||||
|                 TaskManager.runTask(ifFetch); | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public UUID getUUID(final PlotPlayer player) { | ||||
|         return uuidWrapper.getUUID(player); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public UUID getUUID(final BukkitOfflinePlayer player) { | ||||
|         return uuidWrapper.getUUID(player); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String getName(final UUID uuid) { | ||||
|         if (uuid == null) { | ||||
|             return null; | ||||
|         } | ||||
|         // check online | ||||
|         final PlotPlayer player = getPlayer(uuid); | ||||
|         if (player != null) { | ||||
|             return player.getName(); | ||||
|         } | ||||
|         // check cache | ||||
|         final StringWrapper name = uuidMap.inverse().get(uuid); | ||||
|         if (name != null) { | ||||
|             return name.value; | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public PlotPlayer getPlayer(final UUID uuid) { | ||||
|         for (final PlotPlayer player : players.values()) { | ||||
|             if (player.getUUID().equals(uuid)) { | ||||
|                 return player; | ||||
|             } | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public PlotPlayer getPlayer(final String name) { | ||||
|         return players.get(name); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public UUID getUUID(final String name) { | ||||
|         if ((name == null) || (name.length() == 0)) { | ||||
|             return null; | ||||
|         } | ||||
|         // check online | ||||
|         final PlotPlayer player = getPlayer(name); | ||||
|         if (player != null) { | ||||
|             return player.getUUID(); | ||||
|         } | ||||
|         // check cache | ||||
|         final StringWrapper wrap = new StringWrapper(name); | ||||
|         UUID uuid = uuidMap.get(wrap); | ||||
|         if (uuid != null) { | ||||
|             return uuid; | ||||
|         } | ||||
|         // Read from disk OR convert directly to offline UUID | ||||
|         if (Settings.UUID_FROM_DISK || (uuidWrapper instanceof OfflineUUIDWrapper)) { | ||||
|             uuid = uuidWrapper.getUUID(name); | ||||
|             add(new StringWrapper(name), uuid); | ||||
|             return uuid; | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,53 +1,56 @@ | ||||
| package com.plotsquared.bukkit.util.bukkit.uuid; | ||||
|  | ||||
| import java.io.*; | ||||
| import java.io.BufferedReader; | ||||
| import java.io.IOException; | ||||
| import java.io.InputStreamReader; | ||||
| import java.net.HttpURLConnection; | ||||
| import java.net.URL; | ||||
| import java.sql.Connection; | ||||
| import java.sql.PreparedStatement; | ||||
| import java.sql.ResultSet; | ||||
| import java.sql.SQLException; | ||||
| import java.util.*; | ||||
| import java.util.concurrent.ConcurrentHashMap; | ||||
|  | ||||
| import com.google.common.collect.Maps; | ||||
| import com.intellectualcrafters.json.JSONObject; | ||||
| import com.plotsquared.bukkit.BukkitMain; | ||||
| import com.intellectualcrafters.plot.database.SQLite; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.uuid.LowerOfflineUUIDWrapper; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Iterator; | ||||
| import java.util.List; | ||||
| import java.util.UUID; | ||||
|  | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.OfflinePlayer; | ||||
| import org.bukkit.World; | ||||
|  | ||||
| import com.google.common.collect.BiMap; | ||||
| import com.google.common.collect.HashBiMap; | ||||
| import com.google.common.io.Files; | ||||
| import com.google.common.io.InputSupplier; | ||||
| import com.intellectualcrafters.json.JSONObject; | ||||
| import com.intellectualcrafters.plot.PS; | ||||
| import com.intellectualcrafters.plot.config.C; | ||||
| import com.intellectualcrafters.plot.config.Settings; | ||||
| import com.intellectualcrafters.plot.database.DBFunc; | ||||
| import com.plotsquared.bukkit.object.BukkitOfflinePlayer; | ||||
| import com.intellectualcrafters.plot.object.OfflinePlotPlayer; | ||||
| import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.database.SQLite; | ||||
| import com.intellectualcrafters.plot.object.RunnableVal; | ||||
| import com.intellectualcrafters.plot.object.StringWrapper; | ||||
| import com.intellectualcrafters.plot.util.ExpireManager; | ||||
| import com.intellectualcrafters.plot.util.NbtFactory; | ||||
| import com.intellectualcrafters.plot.util.NbtFactory.NbtCompound; | ||||
| import com.intellectualcrafters.plot.util.NbtFactory.StreamOptions; | ||||
| import com.intellectualcrafters.plot.util.TaskManager; | ||||
| import com.intellectualcrafters.plot.uuid.OfflineUUIDWrapper; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandlerImplementation; | ||||
| import com.intellectualcrafters.plot.uuid.UUIDWrapper; | ||||
|  | ||||
| import org.bukkit.OfflinePlayer; | ||||
| import org.bukkit.World; | ||||
| import org.bukkit.event.EventHandler; | ||||
| import org.bukkit.event.EventPriority; | ||||
| import org.bukkit.event.Listener; | ||||
| import org.bukkit.event.player.PlayerLoginEvent; | ||||
| import org.bukkit.plugin.java.JavaPlugin; | ||||
| public class SQLUUIDHandler extends UUIDHandlerImplementation { | ||||
|      | ||||
| public class SQLUUIDHandler implements Listener, UUIDHandlerImplementation { | ||||
|     public SQLUUIDHandler(UUIDWrapper wrapper) { | ||||
|         super(wrapper); | ||||
|         _sqLite = new SQLite("./plugins/PlotSquared/usercache.db"); | ||||
|         try { | ||||
|             _sqLite.openConnection(); | ||||
|         } catch (final Exception e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|          | ||||
|         try { | ||||
|             PreparedStatement stmt = getConnection().prepareStatement("CREATE TABLE IF NOT EXISTS `usercache` (cache_key INTEGER PRIMARY KEY, uuid VARCHAR(32) NOT NULL, username VARCHAR(32) NOT NULL)"); | ||||
|             stmt.execute(); | ||||
|             stmt.close(); | ||||
|         } catch (SQLException e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|         startCaching(); | ||||
|     } | ||||
|      | ||||
|     private class SQLUUIDHandlerException extends RuntimeException { | ||||
|         SQLUUIDHandlerException(String s, Throwable c) { | ||||
| @@ -60,9 +63,6 @@ public class SQLUUIDHandler implements Listener, UUIDHandlerImplementation { | ||||
|     } | ||||
|      | ||||
|     private final SQLite _sqLite; | ||||
|     private final BiMap<String, UUID> _uuidMap; | ||||
|     private UUIDWrapper _uuidWrapper; | ||||
|     private final Map<String, PlotPlayer> _players = new ConcurrentHashMap<>(); | ||||
|      | ||||
|     private Connection getConnection() { | ||||
|         synchronized (_sqLite) { | ||||
| @@ -70,73 +70,11 @@ public class SQLUUIDHandler implements Listener, UUIDHandlerImplementation { | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     public SQLUUIDHandler() { | ||||
|         Bukkit.getPluginManager().registerEvents(this, JavaPlugin.getPlugin(BukkitMain.class)); | ||||
|  | ||||
|         _sqLite = new SQLite("./plugins/PlotSquared/usercache.db"); | ||||
|  | ||||
|         try { | ||||
|             _sqLite.openConnection(); | ||||
|         } catch(final Exception e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|  | ||||
|         try { | ||||
|             PreparedStatement stmt = getConnection().prepareStatement("CREATE TABLE IF NOT EXISTS `usercache` (cache_key INTEGER PRIMARY KEY, uuid VARCHAR(32) NOT NULL, username VARCHAR(32) NOT NULL)"); | ||||
|             stmt.execute(); | ||||
|             stmt.close(); | ||||
|         } catch (SQLException e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|  | ||||
|         _uuidMap = Maps.synchronizedBiMap(HashBiMap.create(new HashMap<String, UUID>())); | ||||
|  | ||||
|         _startCaching(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void handleShutdown() { | ||||
|         try { | ||||
|             getConnection().close(); | ||||
|         } catch (SQLException e) { | ||||
|             throw new SQLUUIDHandlerException("Couldn't close database connection", e); | ||||
|     public boolean startCaching() { | ||||
|         if (!super.startCaching()) { | ||||
|             return false; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) | ||||
|     @SuppressWarnings("unused") | ||||
|     public void onPlayerJoin(final PlayerLoginEvent event) { | ||||
|         TaskManager.runTaskAsync(new Runnable() { | ||||
|             @Override | ||||
|             public void run() { | ||||
|                 if (!nameExists(new StringWrapper(event.getPlayer().getName()))) { | ||||
|                     add(new StringWrapper(event.getPlayer().getName()), event.getPlayer().getUniqueId()); | ||||
|                 } | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void startCaching() { | ||||
|         // startCaching(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void setUUIDWrapper(UUIDWrapper wrapper) { | ||||
|         this._uuidWrapper = wrapper; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public UUIDWrapper getUUIDWrapper() { | ||||
|         return _uuidWrapper; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Map<String, PlotPlayer> getPlayers() { | ||||
|         return _players; | ||||
|     } | ||||
|  | ||||
|     public void _startCaching() { | ||||
|         TaskManager.runTaskAsync(new Runnable() { | ||||
|             @Override | ||||
|             public void run() { | ||||
| @@ -150,17 +88,17 @@ public class SQLUUIDHandler implements Listener, UUIDHandlerImplementation { | ||||
|                         found = true; | ||||
|                         username = new StringWrapper(resultSet.getString("username")); | ||||
|                         uuid = UUID.fromString(resultSet.getString("uuid")); | ||||
|                         _uuidMap.put(username.value, uuid); | ||||
|                         add(new StringWrapper(username.value), uuid); | ||||
|                     } | ||||
|                     _uuidMap.put("*", DBFunc.everyone); | ||||
|                     add(new StringWrapper("*"), DBFunc.everyone); | ||||
|                     statement.close(); | ||||
|                     if (!found) { | ||||
|                         PS.log(C.PREFIX.s() + "&cUsing player data files, couldn't find any cached UUIDs"); | ||||
|                         for (World world : Bukkit.getWorlds()) { | ||||
|                             _cacheAll(world.getName()); | ||||
|                             FileUUIDHandler fileHandler = new FileUUIDHandler(SQLUUIDHandler.this.uuidWrapper); | ||||
|                             fileHandler.startCaching(); | ||||
|                         } | ||||
|                         PS.log(C.PREFIX.s() + "&cWill fetch the uuids for all plots!"); | ||||
|  | ||||
|                         List<UUID> toFetch = new ArrayList<>(); | ||||
|                         for (UUID u : UUIDHandler.getAllUUIDS()) { | ||||
|                             if (!uuidExists(u)) { | ||||
| @@ -168,16 +106,6 @@ public class SQLUUIDHandler implements Listener, UUIDHandlerImplementation { | ||||
|                             } | ||||
|                         } | ||||
|                         PS.log(C.PREFIX.s() + "&cFetching &6" + toFetch.size() + "&c uuids!"); | ||||
|                         if (Settings.OFFLINE_MODE) { | ||||
|                             if (!(_uuidWrapper instanceof OfflineUUIDWrapper)) { | ||||
|                                 PS.log(C.PREFIX.s() + "Offline mode is on, but the uuid wrapper isn't set for offline mode. Activating appropriate uuid wrapper"); | ||||
|                                 if (Settings.UUID_LOWERCASE) { | ||||
|                                     _uuidWrapper = new LowerOfflineUUIDWrapper(); | ||||
|                                 } else { | ||||
|                                     _uuidWrapper = new OfflineUUIDWrapper(); | ||||
|                                 } | ||||
|                             } | ||||
|                         } | ||||
|                         List<UUID> fetched = new ArrayList<>(); | ||||
|                         for (UUID u : toFetch) { | ||||
|                             OfflinePlayer plr = Bukkit.getOfflinePlayer(u); | ||||
| @@ -197,7 +125,7 @@ public class SQLUUIDHandler implements Listener, UUIDHandlerImplementation { | ||||
|                             PS.log(C.PREFIX.s() + "&cWill fetch &6" + toFetch.size() + "&c from mojang!"); | ||||
|                             int i = 0; | ||||
|                             Iterator<UUID> iterator = toFetch.iterator(); | ||||
|                             while(iterator.hasNext()) { | ||||
|                             while (iterator.hasNext()) { | ||||
|                                 StringBuilder url = new StringBuilder("http://api.intellectualsites.com/uuid/?user="); | ||||
|                                 List<UUID> currentIteration = new ArrayList<>(); | ||||
|                                 while (i++ <= 15 && iterator.hasNext()) { | ||||
| @@ -227,7 +155,7 @@ public class SQLUUIDHandler implements Listener, UUIDHandlerImplementation { | ||||
|                                         } | ||||
|                                         add(new StringWrapper(o.toString()), _u); | ||||
|                                     } | ||||
|                                 } catch(final Exception e) { | ||||
|                                 } catch (final Exception e) { | ||||
|                                     e.printStackTrace(); | ||||
|                                 } | ||||
|                                 i = 0; | ||||
| @@ -239,25 +167,51 @@ public class SQLUUIDHandler implements Listener, UUIDHandlerImplementation { | ||||
|                 } | ||||
|             } | ||||
|         }); | ||||
|         return true; | ||||
|     } | ||||
|      | ||||
|     @Override | ||||
|     public void add(final StringWrapper name, final UUID uuid) { | ||||
|         if ((uuid == null) || (name == null)) { | ||||
|             PS.log(C.PREFIX.s() + "&cSQL Caching Failed: name/uuid was null??"); | ||||
|             return; | ||||
|     public void fetchUUID(final String name, final RunnableVal<UUID> ifFetch) { | ||||
|         PS.log(C.PREFIX.s() + "UUID for '" + name + "' was null. We'll cache this from the mojang servers!"); | ||||
|         TaskManager.runTaskAsync(new Runnable() { | ||||
|             @Override | ||||
|             public void run() { | ||||
|                 String url = "http://api.intellectualsites.com/uuid/?user=" + name; | ||||
|                 try { | ||||
|                     HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); | ||||
|                     connection.setRequestProperty("User-Agent", "Mozilla/5.0"); | ||||
|                     BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); | ||||
|                     String line; | ||||
|                     StringBuilder rawJSON = new StringBuilder(); | ||||
|                     while ((line = reader.readLine()) != null) { | ||||
|                         rawJSON.append(line); | ||||
|                     } | ||||
|         if (name.value == null) { | ||||
|             PS.log(C.PREFIX.s() + "&cname.value == null for: " + uuid); | ||||
|             return; | ||||
|                     reader.close(); | ||||
|                     JSONObject object = new JSONObject(rawJSON.toString()); | ||||
|                     ifFetch.value = UUID.fromString(object.getJSONObject(name).getString("dashed")); | ||||
|                     add(new StringWrapper(name), ifFetch.value); | ||||
|                 } catch (IOException e) { | ||||
|                     e.printStackTrace(); | ||||
|                 } | ||||
|         if (_uuidMap.containsKey(name.value)) { | ||||
|             _uuidMap.remove(name.value); | ||||
|                 TaskManager.runTask(ifFetch); | ||||
|             } | ||||
|         if (_uuidMap.containsValue(uuid)) { | ||||
|             _uuidMap.inverse().remove(uuid); | ||||
|         }); | ||||
|     } | ||||
|         _uuidMap.put(name.value, uuid); | ||||
|      | ||||
|     @Override | ||||
|     public void handleShutdown() { | ||||
|         super.handleShutdown(); | ||||
|         try { | ||||
|             getConnection().close(); | ||||
|         } catch (SQLException e) { | ||||
|             throw new SQLUUIDHandlerException("Couldn't close database connection", e); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     @Override | ||||
|     public boolean add(final StringWrapper name, final UUID uuid) { | ||||
|         // Ignoring duplicates | ||||
|         if (!super.add(name, uuid)) { | ||||
|             TaskManager.runTaskAsync(new Runnable() { | ||||
|                 @Override | ||||
|                 public void run() { | ||||
| @@ -272,189 +226,18 @@ public class SQLUUIDHandler implements Listener, UUIDHandlerImplementation { | ||||
|                     } | ||||
|                 } | ||||
|             }); | ||||
|             return false; | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|      | ||||
|     @Override | ||||
|     public boolean uuidExists(final UUID uuid) { | ||||
|         return _uuidMap.containsValue(uuid); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public BiMap<StringWrapper, UUID> getUUIDMap() { | ||||
|         BiMap<StringWrapper, UUID> map = HashBiMap.create(); | ||||
|         for (Map.Entry<String, UUID> entry : _uuidMap.entrySet()) { | ||||
|             map.put(new StringWrapper(entry.getKey()), entry.getValue()); | ||||
|         } | ||||
|         return map; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public boolean nameExists(final StringWrapper name) { | ||||
|         return _uuidMap.containsKey(name.value); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void cacheWorld(String world) {} | ||||
|  | ||||
|     @SuppressWarnings("deprecation") | ||||
|     private void _cacheAll(final String world) { | ||||
|         final File container = Bukkit.getWorldContainer(); | ||||
|         PS.log(C.PREFIX.s() + "&6Starting player data caching for: " + world); | ||||
|         final HashMap<StringWrapper, UUID> toAdd = new HashMap<>(); | ||||
|         if (Settings.TWIN_MODE_UUID) { | ||||
|             Set<UUID> all = getUUIDMap().values(); | ||||
|             PS.log("&aFast mode UUID caching enabled!"); | ||||
|             final File playerdataFolder = new File(container, world + File.separator + "playerdata"); | ||||
|             String[] dat = playerdataFolder.list(new FilenameFilter() { | ||||
|                 @Override | ||||
|                 public boolean accept(final File f, final String s) { | ||||
|                     return s.endsWith(".dat"); | ||||
|                 } | ||||
|             }); | ||||
|             boolean check = all.size() == 0; | ||||
|             if (dat != null) { | ||||
|                 for (final String current : dat) { | ||||
|                     final String s = current.replaceAll(".dat$", ""); | ||||
|                     try { | ||||
|                         UUID uuid = UUID.fromString(s); | ||||
|                         if (check || all.contains(uuid)) { | ||||
|                             File file = new File(playerdataFolder + File.separator + current); | ||||
|                             InputSupplier<FileInputStream> is = Files.newInputStreamSupplier(file); | ||||
|                             NbtCompound compound = NbtFactory.fromStream(is, StreamOptions.GZIP_COMPRESSION); | ||||
|                             NbtCompound bukkit = (NbtCompound) compound.get("bukkit"); | ||||
|                             String name = (String) bukkit.get("lastKnownName"); | ||||
|                             long last = (long) bukkit.get("lastPlayed"); | ||||
|                             ExpireManager.dates.put(uuid, last); | ||||
|                             toAdd.put(new StringWrapper(name), uuid); | ||||
|                         } | ||||
|                     } catch (final Exception e) { | ||||
|                         e.printStackTrace(); | ||||
|                         PS.log(C.PREFIX.s() + "Invalid playerdata: " + current); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             cache(toAdd); | ||||
|             return; | ||||
|         } | ||||
|         final HashSet<String> worlds = new HashSet<>(); | ||||
|         worlds.add(world); | ||||
|         worlds.add("world"); | ||||
|         final HashSet<UUID> uuids = new HashSet<>(); | ||||
|         final HashSet<String> names = new HashSet<>(); | ||||
|         File playerdataFolder = null; | ||||
|         for (final String worldname : worlds) { | ||||
|             // Getting UUIDs | ||||
|             playerdataFolder = new File(container, worldname + File.separator + "playerdata"); | ||||
|             String[] dat = playerdataFolder.list(new FilenameFilter() { | ||||
|                 @Override | ||||
|                 public boolean accept(final File f, final String s) { | ||||
|                     return s.endsWith(".dat"); | ||||
|                 } | ||||
|             }); | ||||
|             if (dat != null && dat.length != 0) { | ||||
|                 for (final String current : dat) { | ||||
|                     final String s = current.replaceAll(".dat$", ""); | ||||
|                     try { | ||||
|                         final UUID uuid = UUID.fromString(s); | ||||
|                         uuids.add(uuid); | ||||
|                     } catch (final Exception e) { | ||||
|                         PS.log(C.PREFIX.s() + "Invalid playerdata: " + current); | ||||
|                     } | ||||
|                 } | ||||
|                 break; | ||||
|             } | ||||
|             // Getting names | ||||
|             final File playersFolder = new File(worldname + File.separator + "players"); | ||||
|             dat = playersFolder.list(new FilenameFilter() { | ||||
|                 @Override | ||||
|                 public boolean accept(final File f, final String s) { | ||||
|                     return s.endsWith(".dat"); | ||||
|                 } | ||||
|             }); | ||||
|             if (dat != null && dat.length != 0) { | ||||
|                 for (final String current : dat) { | ||||
|                     names.add(current.replaceAll(".dat$", "")); | ||||
|                 } | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
|         for (UUID uuid : uuids) { | ||||
|             try { | ||||
|                 File file = new File(playerdataFolder + File.separator + uuid.toString() + ".dat"); | ||||
|                 InputSupplier<FileInputStream> is = Files.newInputStreamSupplier(file); | ||||
|                 NbtCompound compound = NbtFactory.fromStream(is, StreamOptions.GZIP_COMPRESSION); | ||||
|                 NbtCompound bukkit = (NbtCompound) compound.get("bukkit"); | ||||
|                 String name = (String) bukkit.get("lastKnownName"); | ||||
|                 long last = (long) bukkit.get("lastPlayed"); | ||||
|                 if (Settings.OFFLINE_MODE) { | ||||
|                     if (Settings.UUID_LOWERCASE && !name.toLowerCase().equals(name)) { | ||||
|                         uuid = _uuidWrapper.getUUID(name); | ||||
|                     } else { | ||||
|                         long most = (long) compound.get("UUIDMost"); | ||||
|                         long least = (long) compound.get("UUIDLeast"); | ||||
|                         uuid = new UUID(most, least); | ||||
|                     } | ||||
|                 } | ||||
|                 ExpireManager.dates.put(uuid, last); | ||||
|                 toAdd.put(new StringWrapper(name), uuid); | ||||
|             } catch (final Throwable e) { | ||||
|                 PS.log(C.PREFIX.s() + "&6Invalid playerdata: " + uuid.toString() + ".dat"); | ||||
|             } | ||||
|         } | ||||
|         for (final String name : names) { | ||||
|             final UUID uuid = _uuidWrapper.getUUID(name); | ||||
|             final StringWrapper nameWrap = new StringWrapper(name); | ||||
|             toAdd.put(nameWrap, uuid); | ||||
|         } | ||||
|  | ||||
|         if (_uuidMap.size() == 0) { | ||||
|             for (OfflinePlotPlayer op : _uuidWrapper.getOfflinePlayers()) { | ||||
|                 if (op.getLastPlayed() != 0) { | ||||
|                     String name = op.getName(); | ||||
|                     StringWrapper wrap = new StringWrapper(name); | ||||
|                     UUID uuid = _uuidWrapper.getUUID(op); | ||||
|                     toAdd.put(wrap, uuid); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         cache(toAdd); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void cache(final Map<StringWrapper, UUID> toAdd) { | ||||
|         for (Map.Entry<StringWrapper, UUID> entry : toAdd.entrySet()) { | ||||
|             add(entry.getKey(), entry.getValue()); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String getName(final UUID uuid) { | ||||
|         if (uuid == null) { | ||||
|             return null; | ||||
|         } | ||||
|         final PlotPlayer player = getPlayer(uuid); | ||||
|         if (player != null) { | ||||
|             return player.getName(); | ||||
|         } | ||||
|         if (_uuidMap.containsValue(uuid)) { | ||||
|             return _uuidMap.inverse().get(uuid); | ||||
|         } | ||||
|         if (Settings.OFFLINE_MODE) { | ||||
|             if (!(_uuidWrapper instanceof OfflineUUIDWrapper)) { | ||||
|                 PS.log(C.PREFIX.s() + "Offline mode is on, but the uuid wrapper isn't set for offline mode. Activating appropriate uuid wrapper"); | ||||
|                 if (Settings.UUID_LOWERCASE) { | ||||
|                     _uuidWrapper = new LowerOfflineUUIDWrapper(); | ||||
|                 } else { | ||||
|                     _uuidWrapper = new OfflineUUIDWrapper(); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         OfflinePlayer plr = Bukkit.getOfflinePlayer(uuid); | ||||
|         if (plr != null) { | ||||
|             add(new StringWrapper(plr.getName()), plr.getUniqueId()); | ||||
|             return plr.getName(); | ||||
|         } | ||||
|         if (!Settings.OFFLINE_MODE) { | ||||
|     /** | ||||
|      * This isn't used as any UUID that is unknown is bulk cached (in lots of 16) | ||||
|      * @param uuid | ||||
|      * @return | ||||
|      */ | ||||
|     @Deprecated | ||||
|     public String getName__unused__(final UUID uuid) { | ||||
|         PS.log(C.PREFIX.s() + "Name for '" + uuid + "' was null. We'll cache this from the mojang servers!"); | ||||
|         TaskManager.runTaskAsync(new Runnable() { | ||||
|             @Override | ||||
| @@ -478,89 +261,6 @@ public class SQLUUIDHandler implements Listener, UUIDHandlerImplementation { | ||||
|                 } | ||||
|             } | ||||
|         }); | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public UUID getUUID(final PlotPlayer player) { | ||||
|         return _uuidWrapper.getUUID(player); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public UUID getUUID(final BukkitOfflinePlayer player) { | ||||
|         return _uuidWrapper.getUUID(player); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public PlotPlayer getPlayer(final UUID uuid) { | ||||
|         for (final PlotPlayer player : _players.values()) { | ||||
|             if (player.getUUID().equals(uuid)) { | ||||
|                 return player; | ||||
|             } | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public PlotPlayer getPlayer(final String name) { | ||||
|         return _players.get(name); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public UUID getUUID(final String name) { | ||||
|         if ((name == null) || (name.length() == 0)) { | ||||
|             return null; | ||||
|         } | ||||
|         // check online | ||||
|         final PlotPlayer player = getPlayer(name); | ||||
|         if (player != null) { | ||||
|             return player.getUUID(); | ||||
|         } | ||||
|         // check cache | ||||
|         UUID uuid = _uuidMap.get(name); | ||||
|         if (uuid != null) { | ||||
|             return uuid; | ||||
|         } | ||||
|         if (Settings.OFFLINE_MODE) { | ||||
|             if (!(_uuidWrapper instanceof OfflineUUIDWrapper)) { | ||||
|                 PS.log(C.PREFIX.s() + "Offline mode is on, but the uuid wrapper isn't set for offline mode. Activating appropriate uuid wrapper"); | ||||
|                 if (Settings.UUID_LOWERCASE) { | ||||
|                     _uuidWrapper = new LowerOfflineUUIDWrapper(); | ||||
|                 } else { | ||||
|                     _uuidWrapper = new OfflineUUIDWrapper(); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         // Read from disk OR convert directly to offline UUID | ||||
|         if (Settings.UUID_FROM_DISK || (_uuidWrapper instanceof OfflineUUIDWrapper)) { | ||||
|             uuid = _uuidWrapper.getUUID(name); | ||||
|             add(new StringWrapper(name), uuid); | ||||
|             return uuid; | ||||
|         } | ||||
|         PS.log(C.PREFIX.s() + "UUID for '" + name + "' was null. We'll cache this from the mojang servers!"); | ||||
|         TaskManager.runTaskAsync(new Runnable() { | ||||
|             @Override | ||||
|             public void run() { | ||||
|                 String url = "http://api.intellectualsites.com/uuid/?user=" + name; | ||||
|                 try { | ||||
|                     HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); | ||||
|                     connection.setRequestProperty("User-Agent", "Mozilla/5.0"); | ||||
|                     BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); | ||||
|                     String line; | ||||
|                     StringBuilder rawJSON = new StringBuilder(); | ||||
|                     while ((line = reader.readLine()) != null) { | ||||
|                         rawJSON.append(line); | ||||
|                     } | ||||
|                     reader.close(); | ||||
|                     JSONObject object = new JSONObject(rawJSON.toString()); | ||||
|                     UUID uuid = UUID.fromString(object.getJSONObject(name).getString("dashed")); | ||||
|                     add(new StringWrapper(name), uuid); | ||||
|                 } catch (IOException e) { | ||||
|                     e.printStackTrace(); | ||||
|                 } | ||||
|             } | ||||
|         }); | ||||
|         return null; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,32 +0,0 @@ | ||||
| package com.plotsquared.bukkit.util.bukkit.uuid; | ||||
|  | ||||
| import com.google.common.collect.BiMap; | ||||
| import com.plotsquared.bukkit.object.BukkitOfflinePlayer; | ||||
| import com.intellectualcrafters.plot.object.PlotPlayer; | ||||
| import com.intellectualcrafters.plot.object.StringWrapper; | ||||
| import com.intellectualcrafters.plot.uuid.UUIDWrapper; | ||||
|  | ||||
| import java.util.Map; | ||||
| import java.util.UUID; | ||||
|  | ||||
| public interface UUIDHandlerImplementation { | ||||
|  | ||||
|     void add(final StringWrapper name, final UUID uuid); | ||||
|     boolean uuidExists(final UUID uuid); | ||||
|     BiMap<StringWrapper, UUID> getUUIDMap(); | ||||
|     boolean nameExists(final StringWrapper wrapper); | ||||
|     void handleShutdown(); | ||||
|     void cacheWorld(String world); | ||||
|     void cache(final Map<StringWrapper, UUID> toAdd); | ||||
|     String getName(final UUID uuid); | ||||
|     UUID getUUID(final PlotPlayer player); | ||||
|     UUID getUUID(final BukkitOfflinePlayer player); | ||||
|     PlotPlayer getPlayer(final UUID uuid); | ||||
|     PlotPlayer getPlayer(String name); | ||||
|     UUID getUUID(String name); | ||||
|     void startCaching(); | ||||
|     void setUUIDWrapper(UUIDWrapper wrapper); | ||||
|     UUIDWrapper getUUIDWrapper(); | ||||
|     Map<String, PlotPlayer> getPlayers(); | ||||
|  | ||||
| } | ||||
| @@ -35,10 +35,10 @@ import com.intellectualcrafters.plot.util.EventUtil; | ||||
| import com.intellectualcrafters.plot.util.InventoryUtil; | ||||
| import com.intellectualcrafters.plot.util.PlayerManager; | ||||
| import com.intellectualcrafters.plot.util.TaskManager; | ||||
| import com.intellectualcrafters.plot.util.UUIDHandler; | ||||
| import com.intellectualcrafters.plot.uuid.UUIDWrapper; | ||||
| import com.plotsquared.bukkit.listeners.APlotListener; | ||||
| import com.plotsquared.bukkit.util.SetupUtils; | ||||
| import com.plotsquared.bukkit.util.UUIDHandler; | ||||
|  | ||||
| /** | ||||
|  * Created by robin on 01/11/2014 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 boy0001
					boy0001