Cleaned up TFM_Util

This commit is contained in:
StevenLawson 2013-09-24 08:05:48 -04:00
parent 97b27cd7b4
commit c5ddc60b97
5 changed files with 124 additions and 230 deletions

View File

@ -1,5 +1,5 @@
#Sat, 21 Sep 2013 13:56:10 -0400 #Tue, 24 Sep 2013 07:27:17 -0400
program.VERSION=3.2 program.VERSION=3.2
program.BUILDNUM=600 program.BUILDNUM=602
program.BUILDDATE=09/21/2013 01\:56 PM program.BUILDDATE=09/24/2013 07\:27 AM

View File

@ -1,3 +1,3 @@
#Build Number for ANT. Do not edit! #Build Number for ANT. Do not edit!
#Sat Sep 21 13:56:10 EDT 2013 #Tue Sep 24 07:27:17 EDT 2013
build.number=601 build.number=603

View File

@ -48,7 +48,7 @@ public class TFM_SuperadminList
{ {
superadminList.clear(); superadminList.clear();
TFM_Util.createDefaultConfiguration(TotalFreedomMod.SUPERADMIN_FILE, TotalFreedomMod.plugin_file); TFM_Util.createDefaultConfiguration(TotalFreedomMod.SUPERADMIN_FILE);
FileConfiguration config = YamlConfiguration.loadConfiguration(new File(TotalFreedomMod.plugin.getDataFolder(), TotalFreedomMod.SUPERADMIN_FILE)); FileConfiguration config = YamlConfiguration.loadConfiguration(new File(TotalFreedomMod.plugin.getDataFolder(), TotalFreedomMod.SUPERADMIN_FILE));
cleanThreshold = config.getInt("clean_threshold_hours", cleanThreshold); cleanThreshold = config.getInt("clean_threshold_hours", cleanThreshold);

View File

@ -8,12 +8,10 @@ import java.nio.channels.ReadableByteChannel;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.jar.JarFile;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.zip.ZipEntry; import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.bukkit.*; import org.bukkit.*;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.Skull; import org.bukkit.block.Skull;
@ -27,6 +25,21 @@ public class TFM_Util
public static final List<String> STOP_COMMANDS = Arrays.asList("stop", "off", "end", "halt", "die"); public static final List<String> STOP_COMMANDS = Arrays.asList("stop", "off", "end", "halt", "die");
public static final List<String> REMOVE_COMMANDS = Arrays.asList("del", "delete", "rem", "remove"); public static final List<String> REMOVE_COMMANDS = Arrays.asList("del", "delete", "rem", "remove");
public static final List<String> DEVELOPERS = Arrays.asList("Madgeek1450", "DarthSalamon", "AcidicCyanide", "wild1145", "HeXeRei452"); public static final List<String> DEVELOPERS = Arrays.asList("Madgeek1450", "DarthSalamon", "AcidicCyanide", "wild1145", "HeXeRei452");
private static final Random RANDOM = new Random();
public static String DATE_STORAGE_FORMAT = "EEE, d MMM yyyy HH:mm:ss Z";
public static final List<ChatColor> COLOR_POOL = Arrays.asList(
ChatColor.DARK_BLUE,
ChatColor.DARK_GREEN,
ChatColor.DARK_AQUA,
ChatColor.DARK_RED,
ChatColor.DARK_PURPLE,
ChatColor.GOLD,
ChatColor.BLUE,
ChatColor.GREEN,
ChatColor.AQUA,
ChatColor.RED,
ChatColor.LIGHT_PURPLE,
ChatColor.YELLOW);
static static
{ {
@ -214,177 +227,36 @@ public class TFM_Util
world.setTime(time + 24000 + ticks); world.setTime(time + 24000 + ticks);
} }
public static void createDefaultConfiguration(String name, File pluginFile) public static void createDefaultConfiguration(final String configFileName)
{ {
TotalFreedomMod tfm = TotalFreedomMod.plugin; final File targetFile = new File(TotalFreedomMod.plugin.getDataFolder(), configFileName);
File actual = new File(tfm.getDataFolder(), name); if (targetFile.exists())
if (!actual.exists())
{ {
TFM_Log.info("Installing default configuration file template: " + actual.getPath()); return;
InputStream input = null; }
try
{
JarFile file = new JarFile(pluginFile);
ZipEntry copy = file.getEntry(name);
if (copy == null)
{
TFM_Log.severe("Unable to read default configuration: " + actual.getPath());
return;
}
input = file.getInputStream(copy);
}
catch (IOException ioex)
{
TFM_Log.severe("Unable to read default configuration: " + actual.getPath());
}
if (input != null)
{
FileOutputStream output = null;
try TFM_Log.info("Installing default configuration file template: " + targetFile.getPath());
{
tfm.getDataFolder().mkdirs();
output = new FileOutputStream(actual);
byte[] buf = new byte[8192];
int length;
while ((length = input.read(buf)) > 0)
{
output.write(buf, 0, length);
}
TFM_Log.info("Default configuration file written: " + actual.getPath()); try
} {
catch (IOException ioex) final InputStream configFileStream = TotalFreedomMod.plugin.getResource(configFileName);
{ FileUtils.copyInputStreamToFile(configFileStream, targetFile);
TFM_Log.severe("Unable to write default configuration: " + actual.getPath() + "\n" + ExceptionUtils.getStackTrace(ioex)); configFileStream.close();
} }
finally catch (IOException ex)
{ {
try TFM_Log.severe(ex);
{
if (input != null)
{
input.close();
}
}
catch (IOException ioex)
{
}
try
{
if (output != null)
{
output.close();
}
}
catch (IOException ioex)
{
}
}
}
} }
} }
public static class TFM_EntityWiper public static boolean deleteFolder(final File file)
{ {
private static final List<Class<? extends Entity>> WIPEABLES = new ArrayList<Class<? extends Entity>>(); if (file.exists() && file.isDirectory())
static
{ {
WIPEABLES.add(EnderCrystal.class); return FileUtils.deleteQuietly(file);
WIPEABLES.add(EnderSignal.class);
WIPEABLES.add(ExperienceOrb.class);
WIPEABLES.add(Projectile.class);
WIPEABLES.add(FallingBlock.class);
WIPEABLES.add(Firework.class);
WIPEABLES.add(Item.class);
}
private TFM_EntityWiper()
{
throw new AssertionError();
}
private static boolean canWipe(Entity entity, boolean wipeExplosives, boolean wipeVehicles)
{
if (wipeExplosives)
{
if (Explosive.class.isAssignableFrom(entity.getClass()))
{
return true;
}
}
if (wipeVehicles)
{
if (Boat.class.isAssignableFrom(entity.getClass()))
{
return true;
}
else if (Minecart.class.isAssignableFrom(entity.getClass()))
{
return true;
}
}
Iterator<Class<? extends Entity>> it = WIPEABLES.iterator();
while (it.hasNext())
{
if (it.next().isAssignableFrom(entity.getClass()))
{
return true;
}
}
return false;
}
public static int wipeEntities(boolean wipeExplosives, boolean wipeVehicles)
{
int removed = 0;
Iterator<World> worlds = Bukkit.getWorlds().iterator();
while (worlds.hasNext())
{
Iterator<Entity> entities = worlds.next().getEntities().iterator();
while (entities.hasNext())
{
Entity entity = entities.next();
if (canWipe(entity, wipeExplosives, wipeVehicles))
{
entity.remove();
removed++;
}
}
}
return removed;
}
}
public static boolean deleteFolder(File file)
{
if (file.exists())
{
if (file.isDirectory())
{
for (File f : file.listFiles())
{
if (!TFM_Util.deleteFolder(f))
{
return false;
}
}
}
file.delete();
return !file.exists();
}
else
{
return false;
} }
return false;
} }
public static EntityType getEntityType(String mobname) throws Exception public static EntityType getEntityType(String mobname) throws Exception
@ -413,32 +285,6 @@ public class TFM_Util
} }
} }
private static void copy(File file, OutputStream out) throws IOException
{
InputStream in = new FileInputStream(file);
try
{
copy(in, out);
}
finally
{
in.close();
}
}
private static void copy(InputStream in, File file) throws IOException
{
OutputStream out = new FileOutputStream(file);
try
{
copy(in, out);
}
finally
{
out.close();
}
}
public static boolean isStopCommand(String command) public static boolean isStopCommand(String command)
{ {
return STOP_COMMANDS.contains(command.toLowerCase()); return STOP_COMMANDS.contains(command.toLowerCase());
@ -449,11 +295,6 @@ public class TFM_Util
return REMOVE_COMMANDS.contains(command.toLowerCase()); return REMOVE_COMMANDS.contains(command.toLowerCase());
} }
enum EjectMethod
{
STRIKE_ONE, STRIKE_TWO, STRIKE_THREE;
}
public static void autoEject(Player player, String kickMessage) public static void autoEject(Player player, String kickMessage)
{ {
EjectMethod method = EjectMethod.STRIKE_ONE; EjectMethod method = EjectMethod.STRIKE_ONE;
@ -776,7 +617,6 @@ public class TFM_Util
TFM_Log.severe(ex); TFM_Log.severe(ex);
} }
} }
public static String DATE_STORAGE_FORMAT = "EEE, d MMM yyyy HH:mm:ss Z";
public static String dateToString(Date date) public static String dateToString(Date date)
{ {
@ -938,18 +778,6 @@ public class TFM_Util
return prefix + ChatColor.WHITE; return prefix + ChatColor.WHITE;
} }
public static String inputStreamToString(InputStream is, boolean preserveNewlines) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null)
{
sb.append(line).append(preserveNewlines ? System.getProperty("line.separator") : "");
}
return sb.toString();
}
//getField: Borrowed from WorldEdit //getField: Borrowed from WorldEdit
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <T> T getField(Object from, String name) public static <T> T getField(Object from, String name)
@ -973,20 +801,6 @@ public class TFM_Util
while (checkClass.getSuperclass() != Object.class && ((checkClass = checkClass.getSuperclass()) != null)); while (checkClass.getSuperclass() != Object.class && ((checkClass = checkClass.getSuperclass()) != null));
return null; return null;
} }
public static final List<ChatColor> COLOR_POOL = Arrays.asList(
ChatColor.DARK_BLUE,
ChatColor.DARK_GREEN,
ChatColor.DARK_AQUA,
ChatColor.DARK_RED,
ChatColor.DARK_PURPLE,
ChatColor.GOLD,
ChatColor.BLUE,
ChatColor.GREEN,
ChatColor.AQUA,
ChatColor.RED,
ChatColor.LIGHT_PURPLE,
ChatColor.YELLOW);
private static final Random RANDOM = new Random();
public static ChatColor randomChatColor() public static ChatColor randomChatColor()
{ {
@ -997,4 +811,86 @@ public class TFM_Util
{ {
return ChatColor.translateAlternateColorCodes('&', string); return ChatColor.translateAlternateColorCodes('&', string);
} }
public static class TFM_EntityWiper
{
private static final List<Class<? extends Entity>> WIPEABLES = new ArrayList<Class<? extends Entity>>();
static
{
WIPEABLES.add(EnderCrystal.class);
WIPEABLES.add(EnderSignal.class);
WIPEABLES.add(ExperienceOrb.class);
WIPEABLES.add(Projectile.class);
WIPEABLES.add(FallingBlock.class);
WIPEABLES.add(Firework.class);
WIPEABLES.add(Item.class);
}
private TFM_EntityWiper()
{
throw new AssertionError();
}
private static boolean canWipe(Entity entity, boolean wipeExplosives, boolean wipeVehicles)
{
if (wipeExplosives)
{
if (Explosive.class.isAssignableFrom(entity.getClass()))
{
return true;
}
}
if (wipeVehicles)
{
if (Boat.class.isAssignableFrom(entity.getClass()))
{
return true;
}
else if (Minecart.class.isAssignableFrom(entity.getClass()))
{
return true;
}
}
Iterator<Class<? extends Entity>> it = WIPEABLES.iterator();
while (it.hasNext())
{
if (it.next().isAssignableFrom(entity.getClass()))
{
return true;
}
}
return false;
}
public static int wipeEntities(boolean wipeExplosives, boolean wipeVehicles)
{
int removed = 0;
Iterator<World> worlds = Bukkit.getWorlds().iterator();
while (worlds.hasNext())
{
Iterator<Entity> entities = worlds.next().getEntities().iterator();
while (entities.hasNext())
{
Entity entity = entities.next();
if (canWipe(entity, wipeExplosives, wipeVehicles))
{
entity.remove();
removed++;
}
}
}
return removed;
}
}
enum EjectMethod
{
STRIKE_ONE, STRIKE_TWO, STRIKE_THREE;
}
} }

View File

@ -46,7 +46,6 @@ public class TotalFreedomMod extends JavaPlugin
// //
public static final Server server = Bukkit.getServer(); public static final Server server = Bukkit.getServer();
public static TotalFreedomMod plugin = null; public static TotalFreedomMod plugin = null;
public static File plugin_file = null;
// //
public static String pluginName = ""; public static String pluginName = "";
public static String pluginVersion = ""; public static String pluginVersion = "";
@ -66,7 +65,6 @@ public class TotalFreedomMod extends JavaPlugin
public void onLoad() public void onLoad()
{ {
TotalFreedomMod.plugin = this; TotalFreedomMod.plugin = this;
TotalFreedomMod.plugin_file = plugin.getFile();
TotalFreedomMod.pluginName = plugin.getDescription().getName(); TotalFreedomMod.pluginName = plugin.getDescription().getName();
TFM_Log.setPluginLogger(this.getLogger()); TFM_Log.setPluginLogger(this.getLogger());
@ -273,7 +271,7 @@ public class TotalFreedomMod extends JavaPlugin
{ {
try try
{ {
TFM_Util.createDefaultConfiguration(PERMBAN_FILE, plugin_file); TFM_Util.createDefaultConfiguration(PERMBAN_FILE);
FileConfiguration config = YamlConfiguration.loadConfiguration(new File(plugin.getDataFolder(), PERMBAN_FILE)); FileConfiguration config = YamlConfiguration.loadConfiguration(new File(plugin.getDataFolder(), PERMBAN_FILE));
permbanned_players = new ArrayList<String>(); permbanned_players = new ArrayList<String>();