diff --git a/.travis.yml b/.travis.yml index dff5f3a..9bcf999 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1 +1,3 @@ language: java +jdk: + - oraclejdk8 diff --git a/src/main/java/buttondevteam/core/CommandCaller.java b/src/main/java/buttondevteam/core/CommandCaller.java index 688dd0d..26b0c47 100644 --- a/src/main/java/buttondevteam/core/CommandCaller.java +++ b/src/main/java/buttondevteam/core/CommandCaller.java @@ -7,7 +7,6 @@ import org.bukkit.command.CommandSender; import org.bukkit.command.PluginCommand; import org.bukkit.plugin.java.JavaPlugin; import buttondevteam.lib.TBMCCoreAPI; -import buttondevteam.lib.chat.CommandClass; import buttondevteam.lib.chat.TBMCChatAPI; import buttondevteam.lib.chat.TBMCCommandBase; diff --git a/src/main/java/buttondevteam/lib/TBMCCoreAPI.java b/src/main/java/buttondevteam/lib/TBMCCoreAPI.java index a80923c..217443c 100644 --- a/src/main/java/buttondevteam/lib/TBMCCoreAPI.java +++ b/src/main/java/buttondevteam/lib/TBMCCoreAPI.java @@ -81,6 +81,16 @@ public class TBMCCoreAPI { error(sender, "Can't find branch \"" + branch + "\" for plugin \"" + correctname + "\""); return false; } + try { + if (DownloadString("https://raw.githubusercontent.com/TBMCPlugins/" + correctname + "/" + + correctbranch.get() + "/pom.xml").equals("404: Not Found\n")) { + error(sender, "The plugin doesn't appear to have a pom.xml. Make sure it's a Maven project."); + return false; + } + } catch (IOException e1) { + error(sender, "The plugin doesn't appear to have a pom.xml. Make sure it's a Maven project.\n" + e1); + return false; + } info(sender, "Updating TBMC plugin: " + correctname + " from " + correctbranch.get()); URL url; final boolean isWindows = System.getProperty("os.name").contains("Windows"); diff --git a/src/main/java/buttondevteam/lib/player/ChromaGamerBase.java b/src/main/java/buttondevteam/lib/player/ChromaGamerBase.java index d22d120..5d7b1b1 100644 --- a/src/main/java/buttondevteam/lib/player/ChromaGamerBase.java +++ b/src/main/java/buttondevteam/lib/player/ChromaGamerBase.java @@ -7,13 +7,16 @@ import java.util.function.Consumer; import org.bukkit.Bukkit; import org.bukkit.configuration.file.YamlConfiguration; + +import com.google.common.collect.HashBiMap; + import buttondevteam.lib.TBMCCoreAPI; @ChromaGamerEnforcer public abstract class ChromaGamerBase implements AutoCloseable { public static final String TBMC_PLAYERS_DIR = "TBMC/players/"; - private static final HashMap, String> playerTypes = new HashMap<>(); + private static final HashBiMap, String> playerTypes = HashBiMap.create(); /** * Used for connecting with every type of user ({@link #connectWith(ChromaGamerBase)}) @@ -32,7 +35,7 @@ public abstract class ChromaGamerBase implements AutoCloseable { * Returns the folder name for the given player class. * * @param cl - * The class to get the folder from (like {@link TBMCPlayerBase} or one of it's subclasses + * The class to get the folder from (like {@link TBMCPlayerBase} or one of it's subclasses) * @return The folder name for the given type * @throws RuntimeException * If the class doesn't have the {@link UserClass} annotation. @@ -45,6 +48,17 @@ public abstract class ChromaGamerBase implements AutoCloseable { throw new RuntimeException("Class not registered as a user class! Use @UserClass or @AbstractUserClass"); } + /** + * Returns the player class for the given folder name. + * + * @param foldername + * The folder to get the class from (like "minecraft") + * @return The type for the given folder name or null if not found + */ + public static Class getTypeForFolder(String foldername) { + return playerTypes.inverse().get(foldername); + } + /** * This method returns the filename for this player data. For example, for Minecraft-related data, MC UUIDs, for Discord data, use Discord IDs, etc.
* Does not include .yml