mirror of
https://github.com/EssentialsX/Essentials.git
synced 2025-01-23 16:41:38 +01:00
Some cleanup, refactoring of EssentialsHelp class
This commit is contained in:
parent
7622c5c510
commit
60b9d4fc80
@ -1,12 +1,11 @@
|
||||
package com.earth2me.essentials.update;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
|
||||
public abstract class WorkListener
|
||||
public abstract class AbstractWorkListener
|
||||
{
|
||||
public WorkListener(final Plugin plugin, final VersionInfo newVersionInfo)
|
||||
public AbstractWorkListener(final Plugin plugin, final VersionInfo newVersionInfo)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
this.newVersionInfo = newVersionInfo;
|
@ -1,16 +1,16 @@
|
||||
package com.earth2me.essentials.update;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import org.bukkit.Bukkit;
|
||||
import com.earth2me.essentials.update.chat.Command;
|
||||
import com.earth2me.essentials.update.chat.ConfigCommand;
|
||||
import com.earth2me.essentials.update.chat.ErrorsCommand;
|
||||
import com.earth2me.essentials.update.chat.HelpCommand;
|
||||
import com.earth2me.essentials.update.chat.IrcBot;
|
||||
import com.earth2me.essentials.update.chat.ListCommand;
|
||||
import com.earth2me.essentials.update.chat.StartupCommand;
|
||||
import com.earth2me.essentials.update.chat.UsernameUtil;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -21,7 +21,6 @@ import org.bukkit.event.player.PlayerListener;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.jibble.pircbot.User;
|
||||
|
||||
|
||||
public class EssentialsHelp extends PlayerListener
|
||||
@ -29,14 +28,19 @@ public class EssentialsHelp extends PlayerListener
|
||||
private transient Player chatUser;
|
||||
private final transient Server server;
|
||||
private final transient Plugin plugin;
|
||||
private final static Charset UTF8 = Charset.forName("utf-8");
|
||||
private transient IrcBot ircBot;
|
||||
private final transient Map<String, Command> commands = new HashMap<String, Command>();
|
||||
|
||||
public EssentialsHelp(final Plugin plugin)
|
||||
{
|
||||
super();
|
||||
this.plugin = plugin;
|
||||
this.server = plugin.getServer();
|
||||
commands.put("!help", new HelpCommand());
|
||||
commands.put("!list", new ListCommand());
|
||||
commands.put("!startup", new StartupCommand(plugin));
|
||||
commands.put("!errors", new ErrorsCommand(plugin));
|
||||
commands.put("!config", new ConfigCommand(plugin));
|
||||
}
|
||||
|
||||
public void registerEvents()
|
||||
@ -46,7 +50,7 @@ public class EssentialsHelp extends PlayerListener
|
||||
pluginManager.registerEvent(Type.PLAYER_CHAT, this, Priority.Low, plugin);
|
||||
}
|
||||
|
||||
public void onCommand(CommandSender sender)
|
||||
public void onCommand(final CommandSender sender)
|
||||
{
|
||||
if (sender instanceof Player && sender.hasPermission("essentials.helpchat"))
|
||||
{
|
||||
@ -74,11 +78,7 @@ public class EssentialsHelp extends PlayerListener
|
||||
|
||||
public void onDisable()
|
||||
{
|
||||
if ( ircBot != null)
|
||||
{
|
||||
ircBot.quit();
|
||||
ircBot = null;
|
||||
}
|
||||
closeConnection();
|
||||
}
|
||||
|
||||
private boolean sendChatMessage(final Player player, final String message)
|
||||
@ -90,35 +90,19 @@ public class EssentialsHelp extends PlayerListener
|
||||
}
|
||||
if (ircBot == null)
|
||||
{
|
||||
if (messageCleaned.equalsIgnoreCase("yes"))
|
||||
{
|
||||
player.sendMessage("Connecting...");
|
||||
connectToIRC(player);
|
||||
return true;
|
||||
}
|
||||
if (messageCleaned.equalsIgnoreCase("no") || message.equalsIgnoreCase("!quit"))
|
||||
{
|
||||
chatUser = null;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return handleAnswer(messageCleaned, player);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ircBot.isKicked()) {
|
||||
chatUser = null;
|
||||
ircBot.quit();
|
||||
ircBot = null;
|
||||
if (ircBot.isKicked())
|
||||
{
|
||||
closeConnection();
|
||||
return false;
|
||||
}
|
||||
final String lowMessage = messageCleaned.toLowerCase();
|
||||
final String lowMessage = messageCleaned.toLowerCase(Locale.ENGLISH);
|
||||
if (lowMessage.startsWith("!quit"))
|
||||
{
|
||||
chatUser = null;
|
||||
if (ircBot != null) {
|
||||
ircBot.quit();
|
||||
ircBot = null;
|
||||
}
|
||||
closeConnection();
|
||||
player.sendMessage("Connection closed.");
|
||||
return true;
|
||||
}
|
||||
@ -126,52 +110,8 @@ public class EssentialsHelp extends PlayerListener
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (lowMessage.startsWith("!list"))
|
||||
if (handleCommands(lowMessage, player))
|
||||
{
|
||||
final User[] members = ircBot.getUsers();
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
for (User user : members)
|
||||
{
|
||||
if (sb.length() > 0)
|
||||
{
|
||||
sb.append("§f, ");
|
||||
}
|
||||
if (user.isOp() || user.hasVoice())
|
||||
{
|
||||
sb.append("§6");
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.append("§7");
|
||||
}
|
||||
sb.append(user.getPrefix()).append(user.getNick());
|
||||
}
|
||||
player.sendMessage(sb.toString());
|
||||
return true;
|
||||
}
|
||||
if (lowMessage.startsWith("!help"))
|
||||
{
|
||||
player.sendMessage("Commands: (Note: Files send to the chat will be public viewable.)");
|
||||
player.sendMessage("!errors - Send the last server errors to the chat.");
|
||||
player.sendMessage("!startup - Send the last startup messages to the chat.");
|
||||
player.sendMessage("!config - Sends your Essentials config to the chat.");
|
||||
player.sendMessage("!list - List all players in chat.");
|
||||
player.sendMessage("!quit - Leave chat.");
|
||||
return true;
|
||||
}
|
||||
if (lowMessage.startsWith("!errors"))
|
||||
{
|
||||
sendErrors();
|
||||
return true;
|
||||
}
|
||||
if (lowMessage.startsWith("!startup"))
|
||||
{
|
||||
sendStartup();
|
||||
return true;
|
||||
}
|
||||
if (lowMessage.startsWith("!config"))
|
||||
{
|
||||
sendConfig();
|
||||
return true;
|
||||
}
|
||||
ircBot.sendMessage(messageCleaned);
|
||||
@ -180,300 +120,62 @@ public class EssentialsHelp extends PlayerListener
|
||||
}
|
||||
}
|
||||
|
||||
private String buildIrcName()
|
||||
private void closeConnection()
|
||||
{
|
||||
final StringBuilder nameBuilder = new StringBuilder();
|
||||
nameBuilder.append(chatUser.getName());
|
||||
|
||||
final Matcher versionMatch = Pattern.compile("git-Bukkit-([0-9]+).([0-9]+).([0-9]+)-[0-9]+-[0-9a-z]+-b([0-9]+)jnks.*").matcher(server.getVersion());
|
||||
if (versionMatch.matches())
|
||||
chatUser = null;
|
||||
if (ircBot != null)
|
||||
{
|
||||
nameBuilder.append(" CB");
|
||||
nameBuilder.append(versionMatch.group(4));
|
||||
ircBot.quit();
|
||||
ircBot = null;
|
||||
}
|
||||
}
|
||||
|
||||
final Plugin essentials = server.getPluginManager().getPlugin("Essentials");
|
||||
if (essentials != null)
|
||||
private boolean handleAnswer(final String message, final Player player)
|
||||
{
|
||||
if (message.equalsIgnoreCase("yes"))
|
||||
{
|
||||
nameBuilder.append(" ESS");
|
||||
nameBuilder.append(essentials.getDescription().getVersion());
|
||||
player.sendMessage("Connecting...");
|
||||
connectToIRC(player);
|
||||
return true;
|
||||
}
|
||||
|
||||
final Plugin groupManager = server.getPluginManager().getPlugin("GroupManager");
|
||||
if (groupManager != null)
|
||||
if (message.equalsIgnoreCase("no") || message.equalsIgnoreCase("!quit"))
|
||||
{
|
||||
nameBuilder.append(" GM");
|
||||
if (!groupManager.isEnabled())
|
||||
{
|
||||
nameBuilder.append('!');
|
||||
}
|
||||
chatUser = null;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
final Plugin pex = server.getPluginManager().getPlugin("PermissionsEx");
|
||||
if (pex != null)
|
||||
private boolean handleCommands(final String lowMessage, final Player player)
|
||||
{
|
||||
final String[] parts = lowMessage.split(" ");
|
||||
if (commands.containsKey(parts[0]))
|
||||
{
|
||||
nameBuilder.append(" PEX");
|
||||
if (!pex.isEnabled())
|
||||
{
|
||||
nameBuilder.append('!');
|
||||
}
|
||||
nameBuilder.append(pex.getDescription().getVersion());
|
||||
commands.get(parts[0]).run(ircBot, player);
|
||||
return true;
|
||||
}
|
||||
|
||||
final Plugin pb = server.getPluginManager().getPlugin("PermissionsBukkit");
|
||||
if (pb != null)
|
||||
{
|
||||
nameBuilder.append(" PB");
|
||||
if (!pb.isEnabled())
|
||||
{
|
||||
nameBuilder.append('!');
|
||||
}
|
||||
nameBuilder.append(pb.getDescription().getVersion());
|
||||
}
|
||||
|
||||
final Plugin bp = server.getPluginManager().getPlugin("bPermissions");
|
||||
if (bp != null)
|
||||
{
|
||||
nameBuilder.append(" BP");
|
||||
if (!bp.isEnabled())
|
||||
{
|
||||
nameBuilder.append('!');
|
||||
}
|
||||
nameBuilder.append(bp.getDescription().getVersion());
|
||||
}
|
||||
|
||||
final Plugin perm = server.getPluginManager().getPlugin("Permissions");
|
||||
if (perm != null)
|
||||
{
|
||||
nameBuilder.append(" P");
|
||||
if (!perm.isEnabled())
|
||||
{
|
||||
nameBuilder.append('!');
|
||||
}
|
||||
nameBuilder.append(perm.getDescription().getVersion());
|
||||
}
|
||||
|
||||
return nameBuilder.toString();
|
||||
return false;
|
||||
}
|
||||
|
||||
private void connectToIRC(final Player player)
|
||||
{
|
||||
ircBot = new IrcBot(player, "Ess_" + player.getName(), buildIrcName());
|
||||
}
|
||||
|
||||
private void sendErrors()
|
||||
{
|
||||
BufferedReader page = null;
|
||||
try
|
||||
{
|
||||
File bukkitFolder = plugin.getDataFolder().getAbsoluteFile().getParentFile().getParentFile();
|
||||
if (bukkitFolder == null || !bukkitFolder.exists())
|
||||
{
|
||||
chatUser.sendMessage("Bukkit folder not found.");
|
||||
return;
|
||||
}
|
||||
File logFile = new File(bukkitFolder, "server.log");
|
||||
if (!logFile.exists())
|
||||
{
|
||||
chatUser.sendMessage("Server log not found.");
|
||||
return;
|
||||
}
|
||||
FileInputStream fis = new FileInputStream(logFile);
|
||||
if (logFile.length() > 1000000)
|
||||
{
|
||||
fis.skip(logFile.length() - 1000000);
|
||||
}
|
||||
page = new BufferedReader(new InputStreamReader(fis));
|
||||
final StringBuilder input = new StringBuilder();
|
||||
String line;
|
||||
Pattern pattern = Pattern.compile("^[0-9 :-]+\\[INFO\\].*");
|
||||
while ((line = page.readLine()) != null)
|
||||
{
|
||||
if (!pattern.matcher(line).matches())
|
||||
{
|
||||
input.append(line).append("\n");
|
||||
}
|
||||
}
|
||||
if (input.length() > 10000)
|
||||
{
|
||||
input.delete(0, input.length() - 10000);
|
||||
}
|
||||
final PastieUpload pastie = new PastieUpload();
|
||||
final String url = pastie.send(input.toString());
|
||||
String message = "Errors: " + url;
|
||||
chatUser.sendMessage("§6" + ircBot.getNick() + ": §7" + message);
|
||||
ircBot.sendMessage(message);
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
Bukkit.getLogger().log(Level.SEVERE, null, ex);
|
||||
chatUser.sendMessage(ex.getMessage());
|
||||
}
|
||||
finally
|
||||
{
|
||||
try
|
||||
{
|
||||
if (page != null)
|
||||
{
|
||||
page.close();
|
||||
}
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
Logger.getLogger(EssentialsHelp.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void sendStartup()
|
||||
{
|
||||
BufferedReader page = null;
|
||||
try
|
||||
{
|
||||
File bukkitFolder = plugin.getDataFolder().getAbsoluteFile().getParentFile().getParentFile();
|
||||
if (bukkitFolder == null || !bukkitFolder.exists())
|
||||
{
|
||||
chatUser.sendMessage("Bukkit folder not found.");
|
||||
return;
|
||||
}
|
||||
File logFile = new File(bukkitFolder, "server.log");
|
||||
if (!logFile.exists())
|
||||
{
|
||||
chatUser.sendMessage("Server log not found.");
|
||||
return;
|
||||
}
|
||||
FileInputStream fis = new FileInputStream(logFile);
|
||||
if (logFile.length() > 1000000)
|
||||
{
|
||||
fis.skip(logFile.length() - 1000000);
|
||||
}
|
||||
page = new BufferedReader(new InputStreamReader(fis));
|
||||
final StringBuilder input = new StringBuilder();
|
||||
String line;
|
||||
Pattern patternStart = Pattern.compile("^[0-9 :-]+\\[INFO\\] Starting minecraft server version.*");
|
||||
Pattern patternEnd = Pattern.compile("^[0-9 :-]+\\[INFO\\] Done \\([0-9.,]+s\\)! For help, type \"help\".*");
|
||||
boolean log = false;
|
||||
while ((line = page.readLine()) != null)
|
||||
{
|
||||
if (patternStart.matcher(line).matches())
|
||||
{
|
||||
if (input.length() > 0)
|
||||
{
|
||||
input.delete(0, input.length());
|
||||
}
|
||||
log = true;
|
||||
}
|
||||
if (log)
|
||||
{
|
||||
input.append(line).append("\n");
|
||||
}
|
||||
if (patternEnd.matcher(line).matches())
|
||||
{
|
||||
log = false;
|
||||
}
|
||||
}
|
||||
if (input.length() > 10000)
|
||||
{
|
||||
input.delete(0, input.length() - 10000);
|
||||
}
|
||||
final PastieUpload pastie = new PastieUpload();
|
||||
final String url = pastie.send(input.toString());
|
||||
String message = "Startup: " + url;
|
||||
chatUser.sendMessage("§6" + ircBot.getNick() + ": §7" + message);
|
||||
ircBot.sendMessage(message);
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
Bukkit.getLogger().log(Level.SEVERE, null, ex);
|
||||
chatUser.sendMessage(ex.getMessage());
|
||||
}
|
||||
finally
|
||||
{
|
||||
try
|
||||
{
|
||||
if (page != null)
|
||||
{
|
||||
page.close();
|
||||
}
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
Logger.getLogger(EssentialsHelp.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void sendConfig()
|
||||
{
|
||||
BufferedReader page = null;
|
||||
try
|
||||
{
|
||||
File configFolder = new File(plugin.getDataFolder().getParentFile(), "Essentials");
|
||||
if (!configFolder.exists())
|
||||
{
|
||||
chatUser.sendMessage("Essentials plugin folder not found.");
|
||||
return;
|
||||
}
|
||||
File configFile = new File(configFolder, "config.yml");
|
||||
if (!configFile.exists())
|
||||
{
|
||||
chatUser.sendMessage("Essentials config file not found.");
|
||||
return;
|
||||
}
|
||||
page = new BufferedReader(new InputStreamReader(new FileInputStream(configFile), UTF8));
|
||||
final StringBuilder input = new StringBuilder();
|
||||
String line;
|
||||
while ((line = page.readLine()) != null)
|
||||
{
|
||||
input.append(line).append("\n");
|
||||
}
|
||||
final PastieUpload pastie = new PastieUpload();
|
||||
final String url = pastie.send(input.toString());
|
||||
String message = "Essentials config.yml: " + url;
|
||||
chatUser.sendMessage("§6" + ircBot.getNick() + ": §7" + message);
|
||||
ircBot.sendMessage(message);
|
||||
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
Bukkit.getLogger().log(Level.SEVERE, null, ex);
|
||||
chatUser.sendMessage(ex.getMessage());
|
||||
}
|
||||
finally
|
||||
{
|
||||
try
|
||||
{
|
||||
if (page != null)
|
||||
{
|
||||
page.close();
|
||||
}
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
Logger.getLogger(EssentialsHelp.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
}
|
||||
ircBot = new IrcBot(player, "Ess_" + player.getName(), UsernameUtil.createUsername(player));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayerChat(PlayerChatEvent event)
|
||||
public void onPlayerChat(final PlayerChatEvent event)
|
||||
{
|
||||
if (event.getPlayer() == chatUser)
|
||||
{
|
||||
boolean success = sendChatMessage(event.getPlayer(), event.getMessage());
|
||||
final boolean success = sendChatMessage(event.getPlayer(), event.getMessage());
|
||||
event.setCancelled(success);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayerQuit(PlayerQuitEvent event)
|
||||
public void onPlayerQuit(final PlayerQuitEvent event)
|
||||
{
|
||||
chatUser = null;
|
||||
if (ircBot != null) {
|
||||
ircBot.quit();
|
||||
ircBot = null;
|
||||
}
|
||||
return;
|
||||
closeConnection();
|
||||
}
|
||||
}
|
||||
|
@ -12,7 +12,8 @@ import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.logging.Level;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
|
||||
public class GetFile
|
||||
@ -53,7 +54,7 @@ public class GetFile
|
||||
}
|
||||
catch (NoSuchAlgorithmException ex)
|
||||
{
|
||||
// Ignore because the code is never called
|
||||
throw new RuntimeException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
@ -101,7 +102,7 @@ public class GetFile
|
||||
}
|
||||
if (brokenFile && !file.delete())
|
||||
{
|
||||
Logger.getLogger("Minecraft").severe("Could not delete file " + file.getPath());
|
||||
Bukkit.getLogger().log(Level.SEVERE, "Could not delete file {0}", file.getPath());
|
||||
}
|
||||
}
|
||||
finally
|
||||
|
@ -3,7 +3,6 @@ package com.earth2me.essentials.update;
|
||||
import java.io.File;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import org.bukkit.Bukkit;
|
||||
@ -22,7 +21,7 @@ public class UpdateCheck
|
||||
private final transient Plugin plugin;
|
||||
private transient boolean essentialsInstalled;
|
||||
|
||||
public UpdateCheck(Plugin plugin)
|
||||
public UpdateCheck(final Plugin plugin)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
updateFile = new UpdateFile(plugin);
|
||||
@ -31,21 +30,20 @@ public class UpdateCheck
|
||||
|
||||
private void checkForEssentials()
|
||||
{
|
||||
PluginManager pm = plugin.getServer().getPluginManager();
|
||||
Plugin essentials = pm.getPlugin("Essentials");
|
||||
if (essentials == null)
|
||||
final PluginManager pluginManager = plugin.getServer().getPluginManager();
|
||||
final Plugin essentials = pluginManager.getPlugin("Essentials");
|
||||
essentialsInstalled = essentials != null;
|
||||
if (essentialsInstalled)
|
||||
{
|
||||
currentVersion = new Version(essentials.getDescription().getVersion());
|
||||
}
|
||||
else
|
||||
{
|
||||
essentialsInstalled = false;
|
||||
if (new File(plugin.getDataFolder().getParentFile(), "Essentials.jar").exists())
|
||||
{
|
||||
Bukkit.getLogger().severe("Essentials.jar found, but not recognized by Bukkit. Broken download?");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
essentialsInstalled = true;
|
||||
currentVersion = new Version(essentials.getDescription().getVersion());
|
||||
}
|
||||
}
|
||||
|
||||
public void scheduleUpdateTask()
|
||||
@ -81,6 +79,7 @@ public class UpdateCheck
|
||||
return updateFile.getVersions().get(newVersion);
|
||||
}
|
||||
|
||||
|
||||
public enum CheckResult
|
||||
{
|
||||
NEW_ESS, NEW_ESS_BUKKIT, NEW_BUKKIT, OK, UNKNOWN
|
||||
|
@ -60,7 +60,7 @@ public class UpdateProcess extends PlayerListener
|
||||
currentPlayer.sendMessage("A newer version of EssentialsUpdate is found. Downloading new file and reloading server.");
|
||||
}
|
||||
Bukkit.getLogger().log(Level.INFO, "A newer version of EssentialsUpdate is found. Downloading new file and reloading server.");
|
||||
new SelfUpdate(new WorkListener(plugin, updateCheck.getNewVersionInfo())
|
||||
new SelfUpdate(new AbstractWorkListener(plugin, updateCheck.getNewVersionInfo())
|
||||
{
|
||||
@Override
|
||||
public void onWorkAbort(final String message)
|
||||
|
@ -147,7 +147,7 @@ public class Version implements Comparable<Version>
|
||||
hash = 71 * hash + this.major;
|
||||
hash = 71 * hash + this.minor;
|
||||
hash = 71 * hash + this.build;
|
||||
hash = 71 * hash + (this.type != null ? this.type.hashCode() : 0);
|
||||
hash = 71 * hash + (this.type == null ? 0 : this.type.hashCode());
|
||||
return hash;
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,68 @@
|
||||
package com.earth2me.essentials.update.chat;
|
||||
|
||||
import com.earth2me.essentials.update.PastieUpload;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.nio.charset.Charset;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
|
||||
public abstract class AbstractFileCommand implements Command
|
||||
{
|
||||
private final transient Plugin plugin;
|
||||
private final static Charset UTF8 = Charset.forName("utf-8");
|
||||
|
||||
public AbstractFileCommand(final Plugin plugin)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
protected BufferedReader getServerLogReader() throws IOException
|
||||
{
|
||||
final File bukkitFolder = plugin.getDataFolder().getAbsoluteFile().getParentFile().getParentFile();
|
||||
if (bukkitFolder == null || !bukkitFolder.exists())
|
||||
{
|
||||
throw new IOException("Bukkit folder not found.");
|
||||
}
|
||||
final File logFile = new File(bukkitFolder, "server.log");
|
||||
if (!logFile.exists())
|
||||
{
|
||||
throw new IOException("Server log not found.");
|
||||
}
|
||||
final FileInputStream fis = new FileInputStream(logFile);
|
||||
if (logFile.length() > 1000000)
|
||||
{
|
||||
fis.skip(logFile.length() - 1000000);
|
||||
}
|
||||
return new BufferedReader(new InputStreamReader(fis));
|
||||
}
|
||||
|
||||
protected BufferedReader getPluginConfig(final String pluginName, final String fileName) throws IOException
|
||||
{
|
||||
final File configFolder = new File(plugin.getDataFolder().getAbsoluteFile().getParentFile(), pluginName);
|
||||
if (!configFolder.exists())
|
||||
{
|
||||
throw new IOException(pluginName+" plugin folder not found.");
|
||||
}
|
||||
final File configFile = new File(configFolder, fileName);
|
||||
if (!configFile.exists())
|
||||
{
|
||||
throw new IOException(pluginName+" plugin file "+fileName+" not found.");
|
||||
}
|
||||
return new BufferedReader(new InputStreamReader(new FileInputStream(configFile), UTF8));
|
||||
|
||||
}
|
||||
|
||||
protected String uploadToPastie(final StringBuilder input) throws IOException
|
||||
{
|
||||
if (input.length() > 10000)
|
||||
{
|
||||
input.delete(0, input.length() - 10000);
|
||||
}
|
||||
final PastieUpload pastie = new PastieUpload();
|
||||
return pastie.send(input.toString());
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package com.earth2me.essentials.update.chat;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
|
||||
public interface Command
|
||||
{
|
||||
void run(final IrcBot ircBot, final Player player);
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
package com.earth2me.essentials.update.chat;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Level;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
|
||||
public class ConfigCommand extends AbstractFileCommand implements Command
|
||||
{
|
||||
public ConfigCommand(final Plugin plugin)
|
||||
{
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(final IrcBot ircBot, final Player player)
|
||||
{
|
||||
BufferedReader page = null;
|
||||
try
|
||||
{
|
||||
page = getPluginConfig("Essentials", "config.yml");
|
||||
final StringBuilder input = new StringBuilder();
|
||||
do
|
||||
{
|
||||
final String line = page.readLine();
|
||||
if (line == null) {
|
||||
break;
|
||||
} else {
|
||||
input.append(line).append("\n");
|
||||
}
|
||||
} while (true);
|
||||
page.close();
|
||||
final String message = "Essentials config.yml: " + uploadToPastie(input);
|
||||
player.sendMessage("§6" + ircBot.getNick() + ": §7" + message);
|
||||
ircBot.sendMessage(message);
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
Bukkit.getLogger().log(Level.SEVERE, null, ex);
|
||||
player.sendMessage(ex.getMessage());
|
||||
}
|
||||
finally
|
||||
{
|
||||
try
|
||||
{
|
||||
if (page != null)
|
||||
{
|
||||
page.close();
|
||||
}
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
Bukkit.getLogger().log(Level.SEVERE, null, ex);
|
||||
player.sendMessage(ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
package com.earth2me.essentials.update.chat;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Level;
|
||||
import java.util.regex.Pattern;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
|
||||
public class ErrorsCommand extends AbstractFileCommand implements Command
|
||||
{
|
||||
private final transient Pattern pattern = Pattern.compile("^[0-9 :-]+\\[INFO\\].*");
|
||||
|
||||
public ErrorsCommand(final Plugin plugin)
|
||||
{
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(final IrcBot ircBot, final Player player)
|
||||
{
|
||||
BufferedReader page = null;
|
||||
try
|
||||
{
|
||||
page = getServerLogReader();
|
||||
final StringBuilder input = new StringBuilder();
|
||||
do
|
||||
{
|
||||
final String line = page.readLine();
|
||||
if (line == null)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!pattern.matcher(line).matches())
|
||||
{
|
||||
input.append(line).append("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
while (true);
|
||||
page.close();
|
||||
final String message = "Errors: " + uploadToPastie(input);
|
||||
player.sendMessage("§6" + ircBot.getNick() + ": §7" + message);
|
||||
ircBot.sendMessage(message);
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
Bukkit.getLogger().log(Level.SEVERE, null, ex);
|
||||
player.sendMessage(ex.getMessage());
|
||||
}
|
||||
finally
|
||||
{
|
||||
try
|
||||
{
|
||||
if (page != null)
|
||||
{
|
||||
page.close();
|
||||
}
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
Bukkit.getLogger().log(Level.SEVERE, null, ex);
|
||||
player.sendMessage(ex.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package com.earth2me.essentials.update.chat;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
|
||||
public class HelpCommand implements Command
|
||||
{
|
||||
@Override
|
||||
public void run(final IrcBot ircBot, final Player player)
|
||||
{
|
||||
player.sendMessage("Commands: (Note: Files send to the chat will be public viewable.)");
|
||||
player.sendMessage("!errors - Send the last server errors to the chat.");
|
||||
player.sendMessage("!startup - Send the last startup messages to the chat.");
|
||||
player.sendMessage("!config - Sends your Essentials config to the chat.");
|
||||
player.sendMessage("!list - List all players in chat.");
|
||||
player.sendMessage("!quit - Leave chat.");
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.earth2me.essentials.update;
|
||||
package com.earth2me.essentials.update.chat;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Level;
|
||||
@ -95,7 +95,9 @@ public class IrcBot extends PircBot
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onKick(String channel, String kickerNick, String kickerLogin, String kickerHostname, String recipientNick, String reason)
|
||||
protected void onKick(final String channel, final String kickerNick,
|
||||
final String kickerLogin, final String kickerHostname,
|
||||
final String recipientNick, final String reason)
|
||||
{
|
||||
if (recipientNick.equals(getNick()))
|
||||
{
|
||||
@ -111,25 +113,33 @@ public class IrcBot extends PircBot
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onMessage(String channel, String sender, String login, String hostname, String message)
|
||||
protected void onMessage(final String channel, final String sender,
|
||||
final String login, final String hostname,
|
||||
final String message)
|
||||
{
|
||||
player.sendMessage(formatChatMessage(sender, message, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onAction(String sender, String login, String hostname, String target, String action)
|
||||
protected void onAction(final String sender, final String login,
|
||||
final String hostname, final String target,
|
||||
final String action)
|
||||
{
|
||||
player.sendMessage(formatChatMessage(sender, action, true));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNotice(String sourceNick, String sourceLogin, String sourceHostname, String target, String notice)
|
||||
protected void onNotice(final String sourceNick, final String sourceLogin,
|
||||
final String sourceHostname, final String target,
|
||||
final String notice)
|
||||
{
|
||||
player.sendMessage(formatChatMessage(sourceNick, notice, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onTopic(String channel, String topic, String setBy, long date, boolean changed)
|
||||
protected void onTopic(final String channel, final String topic,
|
||||
final String setBy, final long date,
|
||||
final boolean changed)
|
||||
{
|
||||
player.sendMessage(formatChatMessage(channel, topic, false));
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package com.earth2me.essentials.update.chat;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jibble.pircbot.User;
|
||||
|
||||
|
||||
public class ListCommand implements Command
|
||||
{
|
||||
@Override
|
||||
public void run(final IrcBot ircBot, final Player player)
|
||||
{
|
||||
final User[] members = ircBot.getUsers();
|
||||
final StringBuilder message = new StringBuilder();
|
||||
for (User user : members)
|
||||
{
|
||||
if (message.length() > 0)
|
||||
{
|
||||
message.append("§f, ");
|
||||
}
|
||||
if (user.isOp() || user.hasVoice())
|
||||
{
|
||||
message.append("§6");
|
||||
}
|
||||
else
|
||||
{
|
||||
message.append("§7");
|
||||
}
|
||||
message.append(user.getPrefix()).append(user.getNick());
|
||||
}
|
||||
player.sendMessage(message.toString());
|
||||
}
|
||||
}
|
@ -0,0 +1,77 @@
|
||||
package com.earth2me.essentials.update.chat;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Level;
|
||||
import java.util.regex.Pattern;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
|
||||
public class StartupCommand extends AbstractFileCommand implements Command
|
||||
{
|
||||
private final transient Pattern patternStart = Pattern.compile("^[0-9 :-]+\\[INFO\\] Starting minecraft server version.*");
|
||||
private final transient Pattern patternEnd = Pattern.compile("^[0-9 :-]+\\[INFO\\] Done \\([0-9.,]+s\\)! For help, type \"help\".*");
|
||||
|
||||
public StartupCommand(final Plugin plugin)
|
||||
{
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(final IrcBot ircBot, final Player player)
|
||||
{
|
||||
BufferedReader page = null;
|
||||
try
|
||||
{
|
||||
page = getServerLogReader();
|
||||
final StringBuilder input = new StringBuilder();
|
||||
String line;
|
||||
boolean log = false;
|
||||
while ((line = page.readLine()) != null)
|
||||
{
|
||||
if (patternStart.matcher(line).matches())
|
||||
{
|
||||
if (input.length() > 0)
|
||||
{
|
||||
input.delete(0, input.length());
|
||||
}
|
||||
log = true;
|
||||
}
|
||||
if (log)
|
||||
{
|
||||
input.append(line).append("\n");
|
||||
}
|
||||
if (patternEnd.matcher(line).matches())
|
||||
{
|
||||
log = false;
|
||||
}
|
||||
}
|
||||
page.close();
|
||||
final String message = "Startup: " + uploadToPastie(input);
|
||||
player.sendMessage("§6" + ircBot.getNick() + ": §7" + message);
|
||||
ircBot.sendMessage(message);
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
Bukkit.getLogger().log(Level.SEVERE, null, ex);
|
||||
player.sendMessage(ex.getMessage());
|
||||
}
|
||||
finally
|
||||
{
|
||||
try
|
||||
{
|
||||
if (page != null)
|
||||
{
|
||||
page.close();
|
||||
}
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
Bukkit.getLogger().log(Level.SEVERE, null, ex);
|
||||
player.sendMessage(ex.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,124 @@
|
||||
package com.earth2me.essentials.update.chat;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
|
||||
public final class UsernameUtil
|
||||
{
|
||||
private static final Pattern CB_PATTERN = Pattern.compile("git-Bukkit-([0-9]+).([0-9]+).([0-9]+)-[0-9]+-[0-9a-z]+-b([0-9]+)jnks.*");
|
||||
|
||||
private UsernameUtil()
|
||||
{
|
||||
}
|
||||
|
||||
public static String createUsername(final Player player)
|
||||
{
|
||||
final StringBuilder nameBuilder = new StringBuilder();
|
||||
final Server server = Bukkit.getServer();
|
||||
nameBuilder.append(player.getName());
|
||||
|
||||
addCraftBukkitVersion(server, nameBuilder);
|
||||
addEssentialsVersion(server, nameBuilder);
|
||||
addGroupManagerVersion(server, nameBuilder);
|
||||
addPermissionsExVersion(server, nameBuilder);
|
||||
addPermissionsBukkitVersion(server, nameBuilder);
|
||||
addBPermissionsVersion(server, nameBuilder);
|
||||
addPermissionsVersion(server, nameBuilder);
|
||||
|
||||
return nameBuilder.toString();
|
||||
}
|
||||
|
||||
private static void addPermissionsVersion(final Server server, final StringBuilder nameBuilder)
|
||||
{
|
||||
final Plugin perm = server.getPluginManager().getPlugin("Permissions");
|
||||
if (perm != null)
|
||||
{
|
||||
nameBuilder.append(" P");
|
||||
if (!perm.isEnabled())
|
||||
{
|
||||
nameBuilder.append('!');
|
||||
}
|
||||
nameBuilder.append(perm.getDescription().getVersion());
|
||||
}
|
||||
}
|
||||
|
||||
private static void addBPermissionsVersion(final Server server, final StringBuilder nameBuilder)
|
||||
{
|
||||
final Plugin bperm = server.getPluginManager().getPlugin("bPermissions");
|
||||
if (bperm != null)
|
||||
{
|
||||
nameBuilder.append(" BP");
|
||||
if (!bperm.isEnabled())
|
||||
{
|
||||
nameBuilder.append('!');
|
||||
}
|
||||
nameBuilder.append(bperm.getDescription().getVersion());
|
||||
}
|
||||
}
|
||||
|
||||
private static void addPermissionsBukkitVersion(final Server server, final StringBuilder nameBuilder)
|
||||
{
|
||||
final Plugin permb = server.getPluginManager().getPlugin("PermissionsBukkit");
|
||||
if (permb != null)
|
||||
{
|
||||
nameBuilder.append(" PB");
|
||||
if (!permb.isEnabled())
|
||||
{
|
||||
nameBuilder.append('!');
|
||||
}
|
||||
nameBuilder.append(permb.getDescription().getVersion());
|
||||
}
|
||||
}
|
||||
|
||||
private static void addPermissionsExVersion(final Server server, final StringBuilder nameBuilder)
|
||||
{
|
||||
final Plugin pex = server.getPluginManager().getPlugin("PermissionsEx");
|
||||
if (pex != null)
|
||||
{
|
||||
nameBuilder.append(" PEX");
|
||||
if (!pex.isEnabled())
|
||||
{
|
||||
nameBuilder.append('!');
|
||||
}
|
||||
nameBuilder.append(pex.getDescription().getVersion());
|
||||
}
|
||||
}
|
||||
|
||||
private static void addGroupManagerVersion(final Server server, final StringBuilder nameBuilder)
|
||||
{
|
||||
final Plugin groupManager = server.getPluginManager().getPlugin("GroupManager");
|
||||
if (groupManager != null)
|
||||
{
|
||||
nameBuilder.append(" GM");
|
||||
if (!groupManager.isEnabled())
|
||||
{
|
||||
nameBuilder.append('!');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void addEssentialsVersion(final Server server, final StringBuilder nameBuilder)
|
||||
{
|
||||
final Plugin essentials = server.getPluginManager().getPlugin("Essentials");
|
||||
if (essentials != null)
|
||||
{
|
||||
nameBuilder.append(" ESS");
|
||||
nameBuilder.append(essentials.getDescription().getVersion());
|
||||
}
|
||||
}
|
||||
|
||||
private static void addCraftBukkitVersion(final Server server, final StringBuilder nameBuilder)
|
||||
{
|
||||
final Matcher versionMatch = CB_PATTERN.matcher(server.getVersion());
|
||||
if (versionMatch.matches())
|
||||
{
|
||||
nameBuilder.append(" CB");
|
||||
nameBuilder.append(versionMatch.group(4));
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
package com.earth2me.essentials.update.states;
|
||||
|
||||
import com.earth2me.essentials.update.WorkListener;
|
||||
import com.earth2me.essentials.update.AbstractWorkListener;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
|
||||
@ -96,7 +96,7 @@ public abstract class AbstractState
|
||||
/**
|
||||
* Do something based on the answer, that the user gave.
|
||||
*/
|
||||
public void doWork(final WorkListener listener)
|
||||
public void doWork(final AbstractWorkListener listener)
|
||||
{
|
||||
listener.onWorkDone();
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.earth2me.essentials.update.states;
|
||||
|
||||
import com.earth2me.essentials.update.WorkListener;
|
||||
import com.earth2me.essentials.update.AbstractWorkListener;
|
||||
import com.earth2me.essentials.update.tasks.InstallModule;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -35,7 +35,7 @@ public class EssentialsChat extends AbstractYesNoState
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doWork(final WorkListener listener)
|
||||
public void doWork(final AbstractWorkListener listener)
|
||||
{
|
||||
if (getAnswer())
|
||||
{
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.earth2me.essentials.update.states;
|
||||
|
||||
import com.earth2me.essentials.update.WorkListener;
|
||||
import com.earth2me.essentials.update.AbstractWorkListener;
|
||||
import com.earth2me.essentials.update.tasks.InstallModule;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -35,7 +35,7 @@ public class EssentialsGeoIP extends AbstractYesNoState
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doWork(final WorkListener listener)
|
||||
public void doWork(final AbstractWorkListener listener)
|
||||
{
|
||||
if (getAnswer())
|
||||
{
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.earth2me.essentials.update.states;
|
||||
|
||||
import com.earth2me.essentials.update.WorkListener;
|
||||
import com.earth2me.essentials.update.AbstractWorkListener;
|
||||
import com.earth2me.essentials.update.tasks.InstallModule;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -35,7 +35,7 @@ public class EssentialsProtect extends AbstractYesNoState
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doWork(final WorkListener listener)
|
||||
public void doWork(final AbstractWorkListener listener)
|
||||
{
|
||||
if (getAnswer())
|
||||
{
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.earth2me.essentials.update.states;
|
||||
|
||||
import com.earth2me.essentials.update.WorkListener;
|
||||
import com.earth2me.essentials.update.AbstractWorkListener;
|
||||
import com.earth2me.essentials.update.tasks.InstallModule;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -35,7 +35,7 @@ public class EssentialsSpawn extends AbstractYesNoState
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doWork(final WorkListener listener)
|
||||
public void doWork(final AbstractWorkListener listener)
|
||||
{
|
||||
if (getAnswer())
|
||||
{
|
||||
|
@ -1,14 +1,14 @@
|
||||
package com.earth2me.essentials.update.states;
|
||||
|
||||
import com.earth2me.essentials.update.UpdateCheck;
|
||||
import com.earth2me.essentials.update.WorkListener;
|
||||
import com.earth2me.essentials.update.AbstractWorkListener;
|
||||
import java.util.Iterator;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
|
||||
public class StateMachine extends WorkListener implements Runnable
|
||||
public class StateMachine extends AbstractWorkListener implements Runnable
|
||||
{
|
||||
public enum MachineResult
|
||||
{
|
||||
|
@ -3,7 +3,7 @@ package com.earth2me.essentials.update.tasks;
|
||||
import com.earth2me.essentials.update.GetFile;
|
||||
import com.earth2me.essentials.update.ModuleInfo;
|
||||
import com.earth2me.essentials.update.VersionInfo;
|
||||
import com.earth2me.essentials.update.WorkListener;
|
||||
import com.earth2me.essentials.update.AbstractWorkListener;
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
import java.util.logging.Level;
|
||||
@ -12,16 +12,16 @@ import org.bukkit.Bukkit;
|
||||
|
||||
public class InstallModule implements Runnable, Task
|
||||
{
|
||||
protected final transient WorkListener listener;
|
||||
protected final transient AbstractWorkListener listener;
|
||||
private final transient String moduleName;
|
||||
private final transient String fileName;
|
||||
|
||||
public InstallModule(final WorkListener listener, final String moduleName)
|
||||
public InstallModule(final AbstractWorkListener listener, final String moduleName)
|
||||
{
|
||||
this(listener, moduleName, moduleName + ".jar");
|
||||
}
|
||||
|
||||
public InstallModule(final WorkListener listener, final String moduleName, final String fileName)
|
||||
public InstallModule(final AbstractWorkListener listener, final String moduleName, final String fileName)
|
||||
{
|
||||
this.listener = listener;
|
||||
this.moduleName = moduleName;
|
||||
|
@ -1,14 +1,14 @@
|
||||
package com.earth2me.essentials.update.tasks;
|
||||
|
||||
import com.earth2me.essentials.update.WorkListener;
|
||||
import com.earth2me.essentials.update.AbstractWorkListener;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
|
||||
public class SelfUpdate extends WorkListener implements Task, Runnable
|
||||
public class SelfUpdate extends AbstractWorkListener implements Task, Runnable
|
||||
{
|
||||
private final transient WorkListener listener;
|
||||
private final transient AbstractWorkListener listener;
|
||||
|
||||
public SelfUpdate(final WorkListener listener)
|
||||
public SelfUpdate(final AbstractWorkListener listener)
|
||||
{
|
||||
super(listener.getPlugin(), listener.getNewVersionInfo());
|
||||
this.listener = listener;
|
||||
|
@ -49,39 +49,39 @@ public class VersionTest extends TestCase
|
||||
@Test
|
||||
public void testCompareTo()
|
||||
{
|
||||
Version a = new Version("1.1.1");
|
||||
Version b = new Version("Dev1.1.2");
|
||||
Version c = new Version("1.1.2");
|
||||
Version d = new Version("1.2.0");
|
||||
Version e = new Version("2.0.0");
|
||||
Version f = new Version("Pre1.1.1.1");
|
||||
Version g = new Version("Dev1.2.2");
|
||||
assertTrue("Testing dev", a.compareTo(b) < 0);
|
||||
assertTrue("Testing dev", b.compareTo(a) > 0);
|
||||
assertTrue("Testing build", a.compareTo(c) < 0);
|
||||
assertTrue("Testing build", c.compareTo(a) > 0);
|
||||
assertTrue("Testing minor", a.compareTo(d) < 0);
|
||||
assertTrue("Testing minor", d.compareTo(a) > 0);
|
||||
assertTrue("Testing major", a.compareTo(e) < 0);
|
||||
assertTrue("Testing major", e.compareTo(a) > 0);
|
||||
assertTrue("Testing pre", f.compareTo(a) < 0);
|
||||
assertTrue("Testing pre", a.compareTo(f) > 0);
|
||||
assertTrue("Testing dev vs dev", b.compareTo(g) < 0);
|
||||
assertTrue("Testing dev vs dev", g.compareTo(b) > 0);
|
||||
final Version verA = new Version("1.1.1");
|
||||
final Version verB = new Version("Dev1.1.2");
|
||||
final Version verC = new Version("1.1.2");
|
||||
final Version verD = new Version("1.2.0");
|
||||
final Version verE = new Version("2.0.0");
|
||||
final Version verF = new Version("Pre1.1.1.1");
|
||||
final Version verG = new Version("Dev1.2.2");
|
||||
assertTrue("Testing dev", verA.compareTo(verB) < 0);
|
||||
assertTrue("Testing dev", verB.compareTo(verA) > 0);
|
||||
assertTrue("Testing build", verA.compareTo(verC) < 0);
|
||||
assertTrue("Testing build", verC.compareTo(verA) > 0);
|
||||
assertTrue("Testing minor", verA.compareTo(verD) < 0);
|
||||
assertTrue("Testing minor", verD.compareTo(verA) > 0);
|
||||
assertTrue("Testing major", verA.compareTo(verE) < 0);
|
||||
assertTrue("Testing major", verE.compareTo(verA) > 0);
|
||||
assertTrue("Testing pre", verF.compareTo(verA) < 0);
|
||||
assertTrue("Testing pre", verA.compareTo(verF) > 0);
|
||||
assertTrue("Testing dev vs dev", verB.compareTo(verG) < 0);
|
||||
assertTrue("Testing dev vs dev", verG.compareTo(verB) > 0);
|
||||
final TreeSet<Version> set = new TreeSet<Version>();
|
||||
set.add(a);
|
||||
set.add(b);
|
||||
set.add(c);
|
||||
set.add(d);
|
||||
set.add(e);
|
||||
set.add(f);
|
||||
set.add(g);
|
||||
assertEquals("Testing sorting", f, set.pollFirst());
|
||||
assertEquals("Testing sorting", a, set.pollFirst());
|
||||
assertEquals("Testing sorting", c, set.pollFirst());
|
||||
assertEquals("Testing sorting", d, set.pollFirst());
|
||||
assertEquals("Testing sorting", e, set.pollFirst());
|
||||
assertEquals("Testing sorting", b, set.pollFirst());
|
||||
assertEquals("Testing sorting", g, set.pollFirst());
|
||||
set.add(verA);
|
||||
set.add(verB);
|
||||
set.add(verC);
|
||||
set.add(verD);
|
||||
set.add(verE);
|
||||
set.add(verF);
|
||||
set.add(verG);
|
||||
assertEquals("Testing sorting", verF, set.pollFirst());
|
||||
assertEquals("Testing sorting", verA, set.pollFirst());
|
||||
assertEquals("Testing sorting", verC, set.pollFirst());
|
||||
assertEquals("Testing sorting", verD, set.pollFirst());
|
||||
assertEquals("Testing sorting", verE, set.pollFirst());
|
||||
assertEquals("Testing sorting", verB, set.pollFirst());
|
||||
assertEquals("Testing sorting", verG, set.pollFirst());
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user