diff --git a/src/main/java/us/tastybento/bskyblock/BSkyBlock.java b/src/main/java/us/tastybento/bskyblock/BSkyBlock.java index 05ac0ad59..e4ad86588 100755 --- a/src/main/java/us/tastybento/bskyblock/BSkyBlock.java +++ b/src/main/java/us/tastybento/bskyblock/BSkyBlock.java @@ -65,14 +65,14 @@ public class BSkyBlock extends JavaPlugin { try { settings = settings.loadSettings(); } catch (Exception e) { - getLogger().severe("Settings could not be loaded " + e.getMessage()); + logError("Settings could not be loaded " + e.getMessage()); } // Save a backup of settings to the database so it can be checked next time try { settings.saveBackup(); } catch (Exception e) { - getLogger().severe("Settings backup could not be saved" + e.getMessage()); + logError("Settings backup could not be saved" + e.getMessage()); } // Start Database managers @@ -287,4 +287,16 @@ public class BSkyBlock extends JavaPlugin { public HeadGetter getHeadGetter() { return headGetter; } + + public void log(String string) { + getLogger().info(() -> string); + } + + public void logError(String error) { + getLogger().severe(() -> error); + } + + public void logWarning(String warning) { + getLogger().warning(warning); + } } diff --git a/src/main/java/us/tastybento/bskyblock/api/addons/AddonClassLoader.java b/src/main/java/us/tastybento/bskyblock/api/addons/AddonClassLoader.java index 854fab197..cb3fc2fb1 100644 --- a/src/main/java/us/tastybento/bskyblock/api/addons/AddonClassLoader.java +++ b/src/main/java/us/tastybento/bskyblock/api/addons/AddonClassLoader.java @@ -49,7 +49,7 @@ public class AddonClassLoader extends URLClassLoader { throw new InvalidAddonFormatException("Packages declaration cannot start with 'us.tastybento'"); } } catch (ClassNotFoundException e) { - BSkyBlock.getInstance().getLogger().severe("Could not load '" + path.getName() + "' in folder '" + path.getParent() + "' - invalid addon.yml"); + BSkyBlock.getInstance().logError("Could not load '" + path.getName() + "' in folder '" + path.getParent() + "' - invalid addon.yml"); throw new InvalidDescriptionException("Invalid addon.yml"); } diff --git a/src/main/java/us/tastybento/bskyblock/api/placeholders/PlaceholderHandler.java b/src/main/java/us/tastybento/bskyblock/api/placeholders/PlaceholderHandler.java index e95e36450..2c6870cf4 100644 --- a/src/main/java/us/tastybento/bskyblock/api/placeholders/PlaceholderHandler.java +++ b/src/main/java/us/tastybento/bskyblock/api/placeholders/PlaceholderHandler.java @@ -40,7 +40,7 @@ public class PlaceholderHandler { apis.add(internal); } catch (Exception e){ // Should never happen. - plugin.getLogger().severe("Failed to load default placeholder API"); + plugin.logError("Failed to load default placeholder API"); } // Load hooks @@ -50,13 +50,13 @@ public class PlaceholderHandler { Class clazz = Class.forName(PACKAGE + hook + "PlaceholderImpl"); PlaceholderAPIInterface api = (PlaceholderAPIInterface)clazz.newInstance(); if(api.register(plugin)){ - plugin.getLogger().info(() -> "Hooked placeholders into " + hook); // since Java 8, we can use Supplier , which will be evaluated lazily + plugin.log("Hooked placeholders into " + hook); // since Java 8, we can use Supplier , which will be evaluated lazily apis.add(api); } else { - plugin.getLogger().info(() -> "Failed to hook placeholders into " + hook); + plugin.log("Failed to hook placeholders into " + hook); } } catch (Exception e){ - plugin.getLogger().info(() -> "Failed to hook placeholders into " + hook); + plugin.log("Failed to hook placeholders into " + hook); } } } diff --git a/src/main/java/us/tastybento/bskyblock/commands/IslandCommand.java b/src/main/java/us/tastybento/bskyblock/commands/IslandCommand.java index 4e3087eba..89eeb1a27 100755 --- a/src/main/java/us/tastybento/bskyblock/commands/IslandCommand.java +++ b/src/main/java/us/tastybento/bskyblock/commands/IslandCommand.java @@ -43,6 +43,9 @@ public class IslandCommand extends CompositeCommand { */ @Override public boolean execute(User user, List args) { + if (user == null) { + return false; + } // If this player does not have an island, create one if (!getPlugin().getIslands().hasIsland(user.getUniqueId())) { getSubCommand("create").ifPresent(createCmd -> createCmd.execute(user, new ArrayList<>())); diff --git a/src/main/java/us/tastybento/bskyblock/commands/island/IslandCreateCommand.java b/src/main/java/us/tastybento/bskyblock/commands/island/IslandCreateCommand.java index 706ba2c38..ef59b6796 100644 --- a/src/main/java/us/tastybento/bskyblock/commands/island/IslandCreateCommand.java +++ b/src/main/java/us/tastybento/bskyblock/commands/island/IslandCreateCommand.java @@ -60,7 +60,7 @@ public class IslandCreateCommand extends CompositeCommand { .reason(Reason.CREATE) .build(); } catch (IOException e) { - getPlugin().getLogger().severe("Could not create island for player. " + e.getMessage()); + getPlugin().logError("Could not create island for player. " + e.getMessage()); user.sendMessage("commands.island.create.unable-create-island"); } } diff --git a/src/main/java/us/tastybento/bskyblock/commands/island/IslandResetCommand.java b/src/main/java/us/tastybento/bskyblock/commands/island/IslandResetCommand.java index 682e9a3a8..b7f917ad4 100644 --- a/src/main/java/us/tastybento/bskyblock/commands/island/IslandResetCommand.java +++ b/src/main/java/us/tastybento/bskyblock/commands/island/IslandResetCommand.java @@ -46,18 +46,9 @@ public class IslandResetCommand extends CompositeCommand { player.setGameMode(GameMode.SPECTATOR); // Get the player's old island Island oldIsland = getIslands().getIsland(player.getUniqueId()); - if (DEBUG) { - getPlugin().getLogger().info("DEBUG: old island is at " + oldIsland.getCenter().getBlockX() + "," + oldIsland.getCenter().getBlockZ()); - } // Remove them from this island (it still exists and will be deleted later) getIslands().removePlayer(player.getUniqueId()); - if (DEBUG) { - getPlugin().getLogger().info("DEBUG: old island's owner is " + oldIsland.getOwner()); - } // Create new island and then delete the old one - if (DEBUG) { - getPlugin().getLogger().info("DEBUG: making new island "); - } try { NewIsland.builder() .player(player) @@ -65,7 +56,7 @@ public class IslandResetCommand extends CompositeCommand { .oldIsland(oldIsland) .build(); } catch (IOException e) { - getPlugin().getLogger().severe("Could not create island for player. " + e.getMessage()); + getPlugin().logError("Could not create island for player. " + e.getMessage()); user.sendMessage("commands.island.create.unable-create-island"); } return true; diff --git a/src/main/java/us/tastybento/bskyblock/commands/island/teams/IslandTeamSetownerCommand.java b/src/main/java/us/tastybento/bskyblock/commands/island/teams/IslandTeamSetownerCommand.java index ee11a25a4..ea29de157 100644 --- a/src/main/java/us/tastybento/bskyblock/commands/island/teams/IslandTeamSetownerCommand.java +++ b/src/main/java/us/tastybento/bskyblock/commands/island/teams/IslandTeamSetownerCommand.java @@ -92,8 +92,7 @@ public class IslandTeamSetownerCommand extends AbstractIslandTeamCommand { if (range != island.getProtectionRange()) { user.sendMessage("commands.admin.setrange.range-updated", "[number]", String.valueOf(range)); target.sendMessage("commands.admin.setrange.range-updated", "[number]", String.valueOf(range)); - getPlugin().getLogger().info( - "Makeleader: Island protection range changed from " + island.getProtectionRange() + " to " + getPlugin().log("Makeleader: Island protection range changed from " + island.getProtectionRange() + " to " + range + " for " + user.getName() + " due to permission."); } island.setProtectionRange(range); diff --git a/src/main/java/us/tastybento/bskyblock/database/AbstractDatabaseHandler.java b/src/main/java/us/tastybento/bskyblock/database/AbstractDatabaseHandler.java index 25a4c11cc..b9a977ea3 100644 --- a/src/main/java/us/tastybento/bskyblock/database/AbstractDatabaseHandler.java +++ b/src/main/java/us/tastybento/bskyblock/database/AbstractDatabaseHandler.java @@ -4,7 +4,7 @@ import java.beans.IntrospectionException; import java.lang.reflect.InvocationTargetException; import java.util.List; -import org.bukkit.plugin.Plugin; +import us.tastybento.bskyblock.BSkyBlock; /** * An abstract class that handles insert/select-operations into/from a database @@ -27,7 +27,7 @@ public abstract class AbstractDatabaseHandler { */ protected DatabaseConnecter databaseConnecter; - protected Plugin plugin; + protected BSkyBlock plugin; /** @@ -40,7 +40,7 @@ public abstract class AbstractDatabaseHandler { * Contains the settings to create a connection to the database * like host/port/database/user/password */ - protected AbstractDatabaseHandler(Plugin plugin, Class type, DatabaseConnecter databaseConnecter) { + protected AbstractDatabaseHandler(BSkyBlock plugin, Class type, DatabaseConnecter databaseConnecter) { this.plugin = plugin; this.databaseConnecter = databaseConnecter; this.dataObject = type; diff --git a/src/main/java/us/tastybento/bskyblock/database/flatfile/ConfigHandler.java b/src/main/java/us/tastybento/bskyblock/database/flatfile/ConfigHandler.java index 505657ec1..8051806c0 100644 --- a/src/main/java/us/tastybento/bskyblock/database/flatfile/ConfigHandler.java +++ b/src/main/java/us/tastybento/bskyblock/database/flatfile/ConfigHandler.java @@ -3,8 +3,7 @@ package us.tastybento.bskyblock.database.flatfile; import java.beans.IntrospectionException; import java.lang.reflect.InvocationTargetException; -import org.bukkit.plugin.Plugin; - +import us.tastybento.bskyblock.BSkyBlock; import us.tastybento.bskyblock.database.DatabaseConnecter; /** @@ -17,7 +16,7 @@ import us.tastybento.bskyblock.database.DatabaseConnecter; public class ConfigHandler extends FlatFileDatabaseHandler { - public ConfigHandler(Plugin plugin, Class type, DatabaseConnecter databaseConnecter) { + public ConfigHandler(BSkyBlock plugin, Class type, DatabaseConnecter databaseConnecter) { super(plugin, type, databaseConnecter); } diff --git a/src/main/java/us/tastybento/bskyblock/database/flatfile/FlatFileDatabaseConnecter.java b/src/main/java/us/tastybento/bskyblock/database/flatfile/FlatFileDatabaseConnecter.java index 44726f46a..742ed79cb 100644 --- a/src/main/java/us/tastybento/bskyblock/database/flatfile/FlatFileDatabaseConnecter.java +++ b/src/main/java/us/tastybento/bskyblock/database/flatfile/FlatFileDatabaseConnecter.java @@ -14,20 +14,19 @@ import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.plugin.Plugin; +import us.tastybento.bskyblock.BSkyBlock; import us.tastybento.bskyblock.database.DatabaseConnecter; -import us.tastybento.bskyblock.database.DatabaseConnectionSettingsImpl; public class FlatFileDatabaseConnecter implements DatabaseConnecter { private static final int MAX_LOOPS = 100; private static final String DATABASE_FOLDER_NAME = "database"; - private Plugin plugin; + private BSkyBlock plugin; private File dataFolder; - public FlatFileDatabaseConnecter(Plugin plugin) { + public FlatFileDatabaseConnecter(BSkyBlock plugin) { this.plugin = plugin; dataFolder = new File(plugin.getDataFolder(), DATABASE_FOLDER_NAME); } @@ -58,15 +57,15 @@ public class FlatFileDatabaseConnecter implements DatabaseConnecter { config = new YamlConfiguration(); config.load(yamlFile); } catch (Exception e) { - Bukkit.getLogger().severe("Could not load yaml file from database " + tableName + " " + fileName + " " + e.getMessage()); + plugin.logError("Could not load yaml file from database " + tableName + " " + fileName + " " + e.getMessage()); } } else { // Create the missing file config = new YamlConfiguration(); - plugin.getLogger().info("No " + fileName + " found. Creating it..."); + plugin.log("No " + fileName + " found. Creating it..."); try { if (plugin.getResource(fileName) != null) { - plugin.getLogger().info("Using default found in jar file."); + plugin.log("Using default found in jar file."); plugin.saveResource(fileName, false); config = new YamlConfiguration(); config.load(yamlFile); @@ -74,7 +73,7 @@ public class FlatFileDatabaseConnecter implements DatabaseConnecter { config.save(yamlFile); } } catch (Exception e) { - plugin.getLogger().severe("Could not create the " + fileName + " file!"); + plugin.logError("Could not create the " + fileName + " file!"); } } return config; @@ -96,7 +95,7 @@ public class FlatFileDatabaseConnecter implements DatabaseConnecter { try { yamlConfig.save(file); } catch (Exception e) { - Bukkit.getLogger().severe("Could not save yaml file to database " + tableName + " " + fileName + " " + e.getMessage()); + plugin.logError("Could not save yaml file to database " + tableName + " " + fileName + " " + e.getMessage()); return; } if (commentMap != null && !commentMap.isEmpty()) { @@ -134,7 +133,7 @@ public class FlatFileDatabaseConnecter implements DatabaseConnecter { Files.write(commentedFile.toPath(), (Iterable)newFile.stream()::iterator); Files.move(commentedFile.toPath(), file.toPath(), StandardCopyOption.REPLACE_EXISTING); } catch (IOException e1) { - plugin.getLogger().severe(() -> "Could not comment config file " + file.getName() + " " + e1.getMessage()); + plugin.logError("Could not comment config file " + file.getName() + " " + e1.getMessage()); } } diff --git a/src/main/java/us/tastybento/bskyblock/database/flatfile/FlatFileDatabaseHandler.java b/src/main/java/us/tastybento/bskyblock/database/flatfile/FlatFileDatabaseHandler.java index ea491d310..c29b4fe23 100644 --- a/src/main/java/us/tastybento/bskyblock/database/flatfile/FlatFileDatabaseHandler.java +++ b/src/main/java/us/tastybento/bskyblock/database/flatfile/FlatFileDatabaseHandler.java @@ -23,8 +23,8 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.configuration.MemorySection; import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.plugin.Plugin; +import us.tastybento.bskyblock.BSkyBlock; import us.tastybento.bskyblock.Constants; import us.tastybento.bskyblock.Constants.GameType; import us.tastybento.bskyblock.api.configuration.ConfigComment; @@ -50,7 +50,7 @@ public class FlatFileDatabaseHandler extends AbstractDatabaseHandler { private static final String DATABASE_FOLDER_NAME = "database"; protected boolean configFlag; - public FlatFileDatabaseHandler(Plugin plugin, Class type, DatabaseConnecter dbConnecter) { + public FlatFileDatabaseHandler(BSkyBlock plugin, Class type, DatabaseConnecter dbConnecter) { super(plugin, type, dbConnecter); } @@ -287,7 +287,7 @@ public class FlatFileDatabaseHandler extends AbstractDatabaseHandler { try { config.set(storageLocation, ((AdapterInterface)adapterNotation.value().newInstance()).deserialize(value)); } catch (InstantiationException e) { - plugin.getLogger().severe(() -> "Could not instatiate adapter " + adapterNotation.value().getName() + " " + e.getMessage()); + plugin.logError("Could not instatiate adapter " + adapterNotation.value().getName() + " " + e.getMessage()); } // We are done here continue fields; @@ -419,14 +419,14 @@ public class FlatFileDatabaseHandler extends AbstractDatabaseHandler { } catch (Exception e) { // This value does not exist - probably admin typed it wrongly // Show what is available and pick one at random - plugin.getLogger().severe("Error in YML file: " + value + " is not a valid value in the enum " + clazz.getCanonicalName() + "!"); - plugin.getLogger().severe("Options are : "); + plugin.logError("Error in YML file: " + value + " is not a valid value in the enum " + clazz.getCanonicalName() + "!"); + plugin.logError("Options are : "); boolean isSet = false; for (Field fields : enumClass.getFields()) { - plugin.getLogger().severe(fields.getName()); + plugin.logError(fields.getName()); if (!isSet && !((String)value).isEmpty() && fields.getName().substring(0, 1).equals(((String)value).substring(0, 1))) { value = Enum.valueOf(enumClass, fields.getName()); - plugin.getLogger().severe("Setting to " + fields.getName() + " because it starts with the same letter"); + plugin.logError("Setting to " + fields.getName() + " because it starts with the same letter"); isSet = true; } } @@ -452,7 +452,7 @@ public class FlatFileDatabaseHandler extends AbstractDatabaseHandler { try { Files.delete(file.toPath()); } catch (IOException e) { - plugin.getLogger().severe(() -> "Could not delete yaml database object! " + file.getName() + " - " + e.getMessage()); + plugin.logError("Could not delete yaml database object! " + file.getName() + " - " + e.getMessage()); } } } diff --git a/src/main/java/us/tastybento/bskyblock/database/mongodb/MongoDBDatabase.java b/src/main/java/us/tastybento/bskyblock/database/mongodb/MongoDBDatabase.java index 1e996e6ca..0ce08b212 100755 --- a/src/main/java/us/tastybento/bskyblock/database/mongodb/MongoDBDatabase.java +++ b/src/main/java/us/tastybento/bskyblock/database/mongodb/MongoDBDatabase.java @@ -12,8 +12,8 @@ public class MongoDBDatabase extends BSBDbSetup{ BSkyBlock plugin = BSkyBlock.getInstance(); // Check if the MongoDB plugin exists if (plugin.getServer().getPluginManager().getPlugin("BsbMongo") == null) { - plugin.getLogger().severe("You must install BsbMongo plugin for MongoDB support!"); - plugin.getLogger().severe("See: https://github.com/tastybento/bsbMongo/releases/"); + plugin.logError("You must install BsbMongo plugin for MongoDB support!"); + plugin.logError("See: https://github.com/tastybento/bsbMongo/releases/"); plugin.getServer().getPluginManager().disablePlugin(plugin); return null; } diff --git a/src/main/java/us/tastybento/bskyblock/database/mongodb/MongoDBDatabaseHandler.java b/src/main/java/us/tastybento/bskyblock/database/mongodb/MongoDBDatabaseHandler.java index 92eb46430..ad33a9a12 100644 --- a/src/main/java/us/tastybento/bskyblock/database/mongodb/MongoDBDatabaseHandler.java +++ b/src/main/java/us/tastybento/bskyblock/database/mongodb/MongoDBDatabaseHandler.java @@ -115,7 +115,7 @@ public class MongoDBDatabaseHandler extends AbstractDatabaseHandler { @Override public void saveObject(T instance) { if (!(instance instanceof DataObject)) { - plugin.getLogger().severe(() -> "This class is not a DataObject: " + instance.getClass().getName()); + plugin.logError("This class is not a DataObject: " + instance.getClass().getName()); return; } DataObject dataObj = (DataObject)instance; @@ -133,20 +133,20 @@ public class MongoDBDatabaseHandler extends AbstractDatabaseHandler { // Do the deed collection.findOneAndReplace(filter, document, options); } catch (Exception e) { - plugin.getLogger().severe(() -> "Could not save object " + instance.getClass().getName() + " " + e.getMessage()); + plugin.logError("Could not save object " + instance.getClass().getName() + " " + e.getMessage()); } } @Override public void deleteObject(T instance) { if (!(instance instanceof DataObject)) { - plugin.getLogger().severe(() -> "This class is not a DataObject: " + instance.getClass().getName()); + plugin.logError("This class is not a DataObject: " + instance.getClass().getName()); return; } try { collection.findOneAndDelete(new Document(MONGO_ID, ((DataObject)instance).getUniqueId())); } catch (Exception e) { - plugin.getLogger().severe(() -> "Could not delete object " + instance.getClass().getName() + " " + e.getMessage()); + plugin.logError("Could not delete object " + instance.getClass().getName() + " " + e.getMessage()); } } diff --git a/src/main/java/us/tastybento/bskyblock/database/mysql/MySQLDatabaseHandler.java b/src/main/java/us/tastybento/bskyblock/database/mysql/MySQLDatabaseHandler.java index 4c459d3fc..c02ca2383 100644 --- a/src/main/java/us/tastybento/bskyblock/database/mysql/MySQLDatabaseHandler.java +++ b/src/main/java/us/tastybento/bskyblock/database/mysql/MySQLDatabaseHandler.java @@ -70,7 +70,7 @@ public class MySQLDatabaseHandler extends AbstractDatabaseHandler { try (PreparedStatement pstmt = connection.prepareStatement(sql.toString())) { pstmt.executeUpdate(); } catch (SQLException e) { - plugin.getLogger().severe(() -> "Problem trying to create schema for data object " + dataObject.getCanonicalName() + " " + e.getMessage()); + plugin.logError("Problem trying to create schema for data object " + dataObject.getCanonicalName() + " " + e.getMessage()); } } @@ -107,7 +107,7 @@ public class MySQLDatabaseHandler extends AbstractDatabaseHandler { } } } catch (SQLException e) { - plugin.getLogger().severe(() -> "Could not load objects " + e.getMessage()); + plugin.logError("Could not load objects " + e.getMessage()); } return list; } @@ -129,7 +129,7 @@ public class MySQLDatabaseHandler extends AbstractDatabaseHandler { } } } catch (SQLException e) { - plugin.getLogger().severe(() -> "Could not load object " + uniqueId + " " + e.getMessage()); + plugin.logError("Could not load object " + uniqueId + " " + e.getMessage()); } return null; } @@ -137,7 +137,7 @@ public class MySQLDatabaseHandler extends AbstractDatabaseHandler { @Override public void saveObject(T instance) { if (!(instance instanceof DataObject)) { - plugin.getLogger().severe(() -> "This class is not a DataObject: " + instance.getClass().getName()); + plugin.logError("This class is not a DataObject: " + instance.getClass().getName()); return; } StringBuilder sb = new StringBuilder(); @@ -154,14 +154,14 @@ public class MySQLDatabaseHandler extends AbstractDatabaseHandler { preparedStatement.setString(2, toStore); preparedStatement.execute(); } catch (SQLException e) { - plugin.getLogger().severe(() -> "Could not save object " + instance.getClass().getName() + " " + e.getMessage()); + plugin.logError("Could not save object " + instance.getClass().getName() + " " + e.getMessage()); } } @Override public void deleteObject(T instance) { if (!(instance instanceof DataObject)) { - plugin.getLogger().severe(() -> "This class is not a DataObject: " + instance.getClass().getName()); + plugin.logError("This class is not a DataObject: " + instance.getClass().getName()); return; } StringBuilder sb = new StringBuilder(); @@ -174,7 +174,7 @@ public class MySQLDatabaseHandler extends AbstractDatabaseHandler { preparedStatement.setString(1, uniqueId); preparedStatement.execute(); } catch (Exception e) { - plugin.getLogger().severe(() -> "Could not delete object " + instance.getClass().getName() + " " + e.getMessage()); + plugin.logError("Could not delete object " + instance.getClass().getName() + " " + e.getMessage()); } } @@ -197,7 +197,7 @@ public class MySQLDatabaseHandler extends AbstractDatabaseHandler { } } } catch (SQLException e) { - plugin.getLogger().severe("Could not check if key exists in database! " + key + " " + e.getMessage()); + plugin.logError("Could not check if key exists in database! " + key + " " + e.getMessage()); } return false; } @@ -208,7 +208,7 @@ public class MySQLDatabaseHandler extends AbstractDatabaseHandler { try { connection.close(); } catch (SQLException e) { - plugin.getLogger().severe("Could not close database for some reason"); + plugin.logError("Could not close database for some reason"); } } } diff --git a/src/main/java/us/tastybento/bskyblock/generators/IslandWorld.java b/src/main/java/us/tastybento/bskyblock/generators/IslandWorld.java index 31e973230..428b6005d 100644 --- a/src/main/java/us/tastybento/bskyblock/generators/IslandWorld.java +++ b/src/main/java/us/tastybento/bskyblock/generators/IslandWorld.java @@ -31,7 +31,7 @@ public class IslandWorld { return; } if (plugin.getServer().getWorld(plugin.getSettings().getWorldName()) == null) { - Bukkit.getLogger().info(CREATING + plugin.getName() + "'s Island World..."); + plugin.log(CREATING + plugin.getName() + "'s Island World..."); } // Create the world if it does not exist islandWorld = WorldCreator.name(plugin.getSettings().getWorldName()).type(WorldType.FLAT).environment(World.Environment.NORMAL).generator(new ChunkGeneratorWorld(plugin)) @@ -39,7 +39,7 @@ public class IslandWorld { // Make the nether if it does not exist if (plugin.getSettings().isNetherGenerate()) { if (plugin.getServer().getWorld(plugin.getSettings().getWorldName() + NETHER) == null) { - Bukkit.getLogger().info(CREATING + plugin.getName() + "'s Nether..."); + plugin.log(CREATING + plugin.getName() + "'s Nether..."); } if (!plugin.getSettings().isNetherIslands()) { netherWorld = WorldCreator.name(plugin.getSettings().getWorldName() + NETHER).type(WorldType.NORMAL).environment(World.Environment.NETHER).createWorld(); @@ -51,7 +51,7 @@ public class IslandWorld { // Make the end if it does not exist if (plugin.getSettings().isEndGenerate()) { if (plugin.getServer().getWorld(plugin.getSettings().getWorldName() + THE_END) == null) { - Bukkit.getLogger().info(CREATING + plugin.getName() + "'s End World..."); + plugin.log(CREATING + plugin.getName() + "'s End World..."); } if (!plugin.getSettings().isEndIslands()) { endWorld = WorldCreator.name(plugin.getSettings().getWorldName() + THE_END).type(WorldType.NORMAL).environment(World.Environment.THE_END).createWorld(); @@ -66,28 +66,30 @@ public class IslandWorld { private void fixMultiverse(BSkyBlock plugin) { // Multiverse configuration if (Bukkit.getServer().getPluginManager().isPluginEnabled("Multiverse-Core")) { - Bukkit.getLogger().info("Trying to register generator with Multiverse "); + plugin.log("Trying to register generator with Multiverse "); try { - Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), - MULTIVERSE_IMPORT + plugin.getSettings().getWorldName() + " normal -g " + plugin.getName()); - if (!Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), - MULTIVERSE_SET_GENERATOR + plugin.getName() + " " + plugin.getSettings().getWorldName())) { - Bukkit.getLogger().severe("Multiverse is out of date! - Upgrade to latest version!"); - } + Bukkit.getScheduler().runTask(plugin, () -> Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), + MULTIVERSE_IMPORT + plugin.getSettings().getWorldName() + " normal -g " + plugin.getName())); + Bukkit.getScheduler().runTask(plugin, () -> { + if (!Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), + MULTIVERSE_SET_GENERATOR + plugin.getName() + " " + plugin.getSettings().getWorldName())) { + plugin.logError("Multiverse is out of date! - Upgrade to latest version!"); + } + }); if (netherWorld != null && plugin.getSettings().isNetherGenerate() && plugin.getSettings().isNetherIslands()) { - Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), - MULTIVERSE_IMPORT + plugin.getSettings().getWorldName() + "_nether nether -g " + plugin.getName()); - Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), - MULTIVERSE_SET_GENERATOR + plugin.getName() + " " + plugin.getSettings().getWorldName() + NETHER); + Bukkit.getScheduler().runTask(plugin, () -> Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), + MULTIVERSE_IMPORT + plugin.getSettings().getWorldName() + "_nether nether -g " + plugin.getName())); + Bukkit.getScheduler().runTask(plugin, () -> Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), + MULTIVERSE_SET_GENERATOR + plugin.getName() + " " + plugin.getSettings().getWorldName() + NETHER)); } if (endWorld != null && plugin.getSettings().isEndGenerate() && plugin.getSettings().isEndIslands()) { - Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), - MULTIVERSE_IMPORT + plugin.getSettings().getWorldName() + "_the_end end -g " + plugin.getName()); - Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), - MULTIVERSE_SET_GENERATOR + plugin.getName() + " " + plugin.getSettings().getWorldName() + THE_END); + Bukkit.getScheduler().runTask(plugin, () -> Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), + MULTIVERSE_IMPORT + plugin.getSettings().getWorldName() + "_the_end end -g " + plugin.getName())); + Bukkit.getScheduler().runTask(plugin, () -> Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), + MULTIVERSE_SET_GENERATOR + plugin.getName() + " " + plugin.getSettings().getWorldName() + THE_END)); } } catch (Exception e) { - Bukkit.getLogger().severe("Not successfull! Disabling " + plugin.getName() + "!"); + plugin.logError("Not successfull! Disabling " + plugin.getName() + "!"); Bukkit.getServer().getPluginManager().disablePlugin(plugin); } } diff --git a/src/main/java/us/tastybento/bskyblock/listeners/JoinLeaveListener.java b/src/main/java/us/tastybento/bskyblock/listeners/JoinLeaveListener.java index 0dcab739b..019872d14 100644 --- a/src/main/java/us/tastybento/bskyblock/listeners/JoinLeaveListener.java +++ b/src/main/java/us/tastybento/bskyblock/listeners/JoinLeaveListener.java @@ -51,7 +51,7 @@ public class JoinLeaveListener implements Listener { players.setPlayerName(user); players.save(playerUUID); } else { - plugin.getLogger().warning("Player that just logged in has no name! " + playerUUID.toString()); + plugin.logWarning("Player that just logged in has no name! " + playerUUID.toString()); } if (plugin.getSettings().isRemoveMobsOnLogin()) { plugin.getIslands().removeMobs(user.getLocation()); diff --git a/src/main/java/us/tastybento/bskyblock/listeners/flags/AbstractFlagListener.java b/src/main/java/us/tastybento/bskyblock/listeners/flags/AbstractFlagListener.java index bcf809d0d..054cbe939 100644 --- a/src/main/java/us/tastybento/bskyblock/listeners/flags/AbstractFlagListener.java +++ b/src/main/java/us/tastybento/bskyblock/listeners/flags/AbstractFlagListener.java @@ -6,7 +6,6 @@ package us.tastybento.bskyblock.listeners.flags; import java.lang.reflect.Method; import java.util.Optional; -import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; @@ -177,7 +176,7 @@ public abstract class AbstractFlagListener implements Listener { if (!createEventUser(e)) { // The user is not set, and the event does not hold a getPlayer, so return false // TODO: is this the correct handling here? - Bukkit.getLogger().severe("Check island had no associated user! " + e.getEventName()); + plugin.logError("Check island had no associated user! " + e.getEventName()); return false; } } diff --git a/src/main/java/us/tastybento/bskyblock/managers/AddonsManager.java b/src/main/java/us/tastybento/bskyblock/managers/AddonsManager.java index 90816c704..219ef1508 100644 --- a/src/main/java/us/tastybento/bskyblock/managers/AddonsManager.java +++ b/src/main/java/us/tastybento/bskyblock/managers/AddonsManager.java @@ -56,7 +56,7 @@ public class AddonsManager { try { loadAddon(file); } catch (InvalidAddonFormatException | InvalidAddonInheritException | InvalidDescriptionException e) { - plugin.getLogger().severe("Could not load addon " + file.getName() + " : " + e.getMessage()); + plugin.logError("Could not load addon " + file.getName() + " : " + e.getMessage()); } } } @@ -65,7 +65,7 @@ public class AddonsManager { try { f.mkdir(); } catch (SecurityException e) { - Bukkit.getLogger().severe("Cannot create folder 'addons' (Permission ?)"); + plugin.logError("Cannot create folder 'addons' (Permission ?)"); } } @@ -73,7 +73,7 @@ public class AddonsManager { addon.onEnable(); Bukkit.getPluginManager().callEvent(AddonEvent.builder().addon(addon).reason(AddonEvent.Reason.ENABLE).build()); addon.setEnabled(true); - plugin.getLogger().info("Enabling " + addon.getDescription().getName() + "..."); + plugin.log("Enabling " + addon.getDescription().getName() + "..."); }); } @@ -144,12 +144,12 @@ public class AddonsManager { addon.onLoad(); // Inform the console - plugin.getLogger().info("Loading BSkyBlock addon " + addon.getDescription().getName() + "..."); + plugin.log("Loading BSkyBlock addon " + addon.getDescription().getName() + "..."); } } catch (Exception e) { if (DEBUG) { - plugin.getLogger().info(f.getName() + "is not a jarfile, ignoring..."); + plugin.log(f.getName() + "is not a jarfile, ignoring..."); } } @@ -163,7 +163,7 @@ public class AddonsManager { addons.forEach(addon -> { addon.onDisable(); Bukkit.getPluginManager().callEvent(AddonEvent.builder().addon(addon).reason(AddonEvent.Reason.DISABLE).build()); - plugin.getLogger().info("Disabling " + addon.getDescription().getName() + "..."); + plugin.log("Disabling " + addon.getDescription().getName() + "..."); }); loader.forEach(l -> { diff --git a/src/main/java/us/tastybento/bskyblock/managers/IslandsManager.java b/src/main/java/us/tastybento/bskyblock/managers/IslandsManager.java index d781a9212..e30bb1ff6 100644 --- a/src/main/java/us/tastybento/bskyblock/managers/IslandsManager.java +++ b/src/main/java/us/tastybento/bskyblock/managers/IslandsManager.java @@ -274,7 +274,7 @@ public class IslandsManager { if (island != null) { deleteIsland(island, removeBlocks); } else { - plugin.getLogger().severe(()->"Could not delete player: " + player.toString() + " island!"); + plugin.logError("Could not delete player: " + player.toString() + " island!"); } } @@ -445,7 +445,7 @@ public class IslandsManager { } } if (l == null) { - plugin.getLogger().warning(()-> plugin.getPlayers().getName(playerUUID) + " player has no island!"); + plugin.logWarning(plugin.getPlayers().getName(playerUUID) + " player has no island!"); return null; } // If these island locations are not safe, then we need to get creative @@ -636,7 +636,7 @@ public class IslandsManager { islandCache.addIsland(island); } } catch (Exception e) { - plugin.getLogger().severe(()->"Could not load islands to cache! " + e.getMessage()); + plugin.logError("Could not load islands to cache! " + e.getMessage()); } } @@ -732,7 +732,7 @@ public class IslandsManager { player.teleport(plugin.getIslandWorldManager().getIslandWorld().getSpawnLocation()); } else { if (!player.performCommand(Constants.SPAWNCOMMAND)) { - plugin.getLogger().warning(()-> "During island deletion player " + player.getName() + " could not be sent to spawn so was dropped, sorry."); + plugin.logWarning("During island deletion player " + player.getName() + " could not be sent to spawn so was dropped, sorry."); } } } @@ -752,7 +752,7 @@ public class IslandsManager { try { handler.saveObject(island); } catch (Exception e) { - plugin.getLogger().severe(()->"Could not save island to datavase when running async! " + e.getMessage()); + plugin.logError("Could not save island to datavase when running async! " + e.getMessage()); } } }; @@ -762,7 +762,7 @@ public class IslandsManager { try { handler.saveObject(island); } catch (Exception e) { - plugin.getLogger().severe(()->"Could not save island to datavase when running sync! " + e.getMessage()); + plugin.logError("Could not save island to datavase when running sync! " + e.getMessage()); } } } diff --git a/src/main/java/us/tastybento/bskyblock/managers/LocalesManager.java b/src/main/java/us/tastybento/bskyblock/managers/LocalesManager.java index 327563724..1e2217079 100644 --- a/src/main/java/us/tastybento/bskyblock/managers/LocalesManager.java +++ b/src/main/java/us/tastybento/bskyblock/managers/LocalesManager.java @@ -78,7 +78,7 @@ public class LocalesManager { copyFile(name, targetFile); } } catch (IOException e) { - plugin.getLogger().severe("Could not copy locale files from jar " + e.getMessage()); + plugin.logError("Could not copy locale files from jar " + e.getMessage()); } } @@ -102,7 +102,7 @@ public class LocalesManager { java.nio.file.Files.copy(initialStream, targetFile.toPath()); } } catch (IOException e) { - plugin.getLogger().severe("Could not copy locale files from jar " + e.getMessage()); + plugin.logError("Could not copy locale files from jar " + e.getMessage()); } } diff --git a/src/main/java/us/tastybento/bskyblock/managers/RanksManager.java b/src/main/java/us/tastybento/bskyblock/managers/RanksManager.java index 50c2e8322..013323458 100644 --- a/src/main/java/us/tastybento/bskyblock/managers/RanksManager.java +++ b/src/main/java/us/tastybento/bskyblock/managers/RanksManager.java @@ -44,7 +44,7 @@ public class RanksManager { public void loadCustomRanks() { for (Entry en : plugin.getSettings().getCustomRanks().entrySet()) { if (!addRank(en.getKey(),en.getValue())) { - plugin.getLogger().severe("Error loading custom rank: " + en.getKey() + " " + en.getValue() + " skipping..."); + plugin.logError("Error loading custom rank: " + en.getKey() + " " + en.getValue() + " skipping..."); } } } diff --git a/src/main/java/us/tastybento/bskyblock/managers/island/IslandCache.java b/src/main/java/us/tastybento/bskyblock/managers/island/IslandCache.java index 31343dbd7..8dbd17f1e 100644 --- a/src/main/java/us/tastybento/bskyblock/managers/island/IslandCache.java +++ b/src/main/java/us/tastybento/bskyblock/managers/island/IslandCache.java @@ -70,23 +70,23 @@ public class IslandCache { if (zEntry.containsKey(newIsland.getMinZ())) { // Island already exists Island conflict = islandGrid.get(newIsland.getMinX()).get(newIsland.getMinZ()); - plugin.getLogger().warning("*** Duplicate or overlapping islands! ***"); - plugin.getLogger().warning( + plugin.logWarning("*** Duplicate or overlapping islands! ***"); + plugin.logWarning( "Island at (" + newIsland.getCenter().getBlockX() + ", " + newIsland.getCenter().getBlockZ() + ") conflicts with (" + conflict.getCenter().getBlockX() + ", " + conflict.getCenter().getBlockZ() + ")"); if (conflict.getOwner() != null) { - plugin.getLogger().warning("Accepted island is owned by " + plugin.getPlayers().getName(conflict.getOwner())); - plugin.getLogger().warning(conflict.getOwner().toString() + ".yml"); + plugin.logWarning("Accepted island is owned by " + plugin.getPlayers().getName(conflict.getOwner())); + plugin.logWarning(conflict.getOwner().toString() + ".yml"); } else { - plugin.getLogger().warning("Accepted island is unowned."); + plugin.logWarning("Accepted island is unowned."); } if (newIsland.getOwner() != null) { - plugin.getLogger().warning("Denied island is owned by " + plugin.getPlayers().getName(newIsland.getOwner())); - plugin.getLogger().warning(newIsland.getOwner().toString() + ".yml"); + plugin.logWarning("Denied island is owned by " + plugin.getPlayers().getName(newIsland.getOwner())); + plugin.logWarning(newIsland.getOwner().toString() + ".yml"); } else { - plugin.getLogger().warning("Denied island is unowned and was just found in the islands folder. Skipping it..."); + plugin.logWarning("Denied island is unowned and was just found in the islands folder. Skipping it..."); } - plugin.getLogger().warning("Recommend that the denied player file is deleted otherwise weird things can happen."); + plugin.logWarning("Recommend that the denied player file is deleted otherwise weird things can happen."); return false; } else { // Add island diff --git a/src/main/java/us/tastybento/bskyblock/util/Util.java b/src/main/java/us/tastybento/bskyblock/util/Util.java index bfe8d2913..63a8f07cf 100755 --- a/src/main/java/us/tastybento/bskyblock/util/Util.java +++ b/src/main/java/us/tastybento/bskyblock/util/Util.java @@ -1,6 +1,5 @@ package us.tastybento.bskyblock.util; -import java.io.File; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; @@ -14,11 +13,9 @@ import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.Block; -import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.permissions.PermissionAttachmentInfo; -import org.bukkit.plugin.Plugin; import us.tastybento.bskyblock.BSkyBlock; import us.tastybento.bskyblock.api.user.User; @@ -221,46 +218,6 @@ public class Util { return returned; } - /** - * Loads a YAML file and if it does not exist it is looked for in the JAR - * - * @param file - * @return Yaml Config - */ - public static YamlConfiguration loadYamlFile(Plugin plugin, String file) { - File dataFolder = plugin.getDataFolder(); - File yamlFile = new File(dataFolder, file); - - YamlConfiguration config = null; - if (yamlFile.exists()) { - try { - config = new YamlConfiguration(); - config.load(yamlFile); - } catch (Exception e) { - plugin.getLogger().severe("Could not load yml file " + e.getMessage()); - } - } else { - // Create the missing file - config = new YamlConfiguration(); - if (!file.startsWith("players")) { - plugin.getLogger().info("No " + file + " found. Creating it..."); - } - try { - if (plugin.getResource(file) != null) { - plugin.getLogger().info("Using default found in jar file."); - plugin.saveResource(file, false); - config = new YamlConfiguration(); - config.load(yamlFile); - } else { - config.save(yamlFile); - } - } catch (Exception e) { - plugin.getLogger().severe("Could not create the " + file + " file!"); - } - } - return config; - } - /** * Get the maximum value of a numerical perm setting * @param player - the player - the player to check @@ -278,7 +235,7 @@ public class Util { String[] spl = perms.getPermission().split(perm + "."); if (spl.length > 1) { if (!NumberUtils.isDigits(spl[1])) { - plugin.getLogger().severe("Player " + player.getName() + " has permission: " + perms.getPermission() + " <-- the last part MUST be a number! Ignoring..."); + plugin.logError("Player " + player.getName() + " has permission: " + perms.getPermission() + " <-- the last part MUST be a number! Ignoring..."); } else { permValue = Math.max(permValue, Integer.valueOf(spl[1])); diff --git a/src/main/java/us/tastybento/bskyblock/util/teleport/SafeTeleportBuilder.java b/src/main/java/us/tastybento/bskyblock/util/teleport/SafeTeleportBuilder.java index 47bb092ac..1f9d07c1f 100644 --- a/src/main/java/us/tastybento/bskyblock/util/teleport/SafeTeleportBuilder.java +++ b/src/main/java/us/tastybento/bskyblock/util/teleport/SafeTeleportBuilder.java @@ -88,11 +88,11 @@ public class SafeTeleportBuilder { public SafeSpotTeleport build() { // Error checking if (entity == null) { - plugin.getLogger().severe("Attempt to safe teleport a null entity!"); + plugin.logError("Attempt to safe teleport a null entity!"); return null; } if (location == null) { - plugin.getLogger().severe("Attempt to safe teleport to a null location!"); + plugin.logError("Attempt to safe teleport to a null location!"); return null; } if (failureMessage.isEmpty() && entity instanceof Player) { diff --git a/src/test/java/us/tastybento/bskyblock/commands/IslandCommandTest.java b/src/test/java/us/tastybento/bskyblock/commands/IslandCommandTest.java new file mode 100644 index 000000000..869baa058 --- /dev/null +++ b/src/test/java/us/tastybento/bskyblock/commands/IslandCommandTest.java @@ -0,0 +1,109 @@ +package us.tastybento.bskyblock.commands; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.UUID; +import java.util.logging.Logger; + +import org.bukkit.Bukkit; +import org.bukkit.Server; +import org.bukkit.World; +import org.bukkit.plugin.PluginManager; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.powermock.reflect.Whitebox; + +import us.tastybento.bskyblock.BSkyBlock; +import us.tastybento.bskyblock.Constants; +import us.tastybento.bskyblock.Settings; +import us.tastybento.bskyblock.api.user.User; +import us.tastybento.bskyblock.managers.CommandsManager; +import us.tastybento.bskyblock.managers.IslandsManager; +import us.tastybento.bskyblock.managers.PlayersManager; + +@RunWith(PowerMockRunner.class) +@PrepareForTest( { BSkyBlock.class }) +public class IslandCommandTest { + + @Mock + static BSkyBlock plugin; + private static World world; + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + Server server = mock(Server.class); + world = mock(World.class); + when(server.getLogger()).thenReturn(Logger.getAnonymousLogger()); + when(server.getWorld("world")).thenReturn(world); + when(server.getVersion()).thenReturn("BSB_Mocking"); + + PluginManager pluginManager = mock(PluginManager.class); + when(server.getPluginManager()).thenReturn(pluginManager); + + Bukkit.setServer(server); + + when(Bukkit.getLogger()).thenReturn(Logger.getAnonymousLogger()); + + plugin = mock(BSkyBlock.class); + Whitebox.setInternalState(BSkyBlock.class, "instance", plugin); + + } + + @Before + public void setUp() { + CommandsManager cm = new CommandsManager(); + when(plugin.getCommandsManager()).thenReturn(cm); + } + + @Test + public void testIslandCommand() { + assertNotNull(new IslandCommand()); + } + + @Test + public void testSetup() { + IslandCommand ic = new IslandCommand(); + assertEquals("commands.island.help.description", ic.getDescription()); + assertTrue(ic.isOnlyPlayer()); + // Permission + assertEquals(Constants.PERMPREFIX + "island", ic.getPermission()); + + } + + @Test + public void testExecuteUserListOfString() { + // Setup + IslandCommand ic = new IslandCommand(); + assertFalse(ic.execute(null, null)); + IslandsManager im = mock(IslandsManager.class); + when(plugin.getIslands()).thenReturn(im); + User user = mock(User.class); + UUID uuid = UUID.randomUUID(); + when(user.getUniqueId()).thenReturn(uuid); + PlayersManager pm = mock(PlayersManager.class); + when(plugin.getPlayers()).thenReturn(pm); + Settings settings = mock(Settings.class); + when(plugin.getSettings()).thenReturn(settings); + + // User has an island - so go there! + when(im.hasIsland(Mockito.eq(uuid))).thenReturn(true); + assertTrue(ic.execute(user, new ArrayList<>())); + + // No island yet + when(im.hasIsland(Mockito.eq(uuid))).thenReturn(false); + assertTrue(ic.execute(user, new ArrayList<>())); + } + +}