/src/etc.java
Java | 1080 lines | 560 code | 113 blank | 407 comment | 96 complexity | 7d6e5c7d09ff7d0f2700b2f78b53d799 MD5 | raw file
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.HashSet;
- import java.util.LinkedHashMap;
- import java.util.List;
- import java.util.Set;
- import java.util.logging.Level;
- import java.util.logging.Logger;
-
- import net.minecraft.server.MinecraftServer;
-
- /**
- * etc.java - My catch-all class for a bunch of shit. If there's something you
- * need it's probably in here.
- *
- * @author James
- */
- public class etc {
-
- private static final Logger log = Logger.getLogger("Minecraft");
- private static final etc instance = new etc();
- private static MinecraftServer server;
- private String usersLoc = "users.txt", kitsLoc = "kits.txt", homeLoc = "homes.txt", warpLoc = "warps.txt", itemLoc = "items.txt", groupLoc = "groups.txt";
- private String whitelistLoc = "whitelist.txt", reservelistLoc = "reservelist.txt";
- private String whitelistMessage = "Not on whitelist.";
-
- private Set<Integer> allowedItems = new HashSet<Integer>();
- private Set<Integer> disallowedItems = new HashSet<Integer>();
- private Set<Integer> itemSpawnBlacklist = new HashSet<Integer>();
-
- private String[] motd = null;
- private boolean saveHomes = true;
- private boolean whitelistEnabled = false;
- private boolean reservelistEnabled = false;
- private int playerLimit = 20;
- private int spawnProtectionSize = 16;
- private LinkedHashMap<String, String> commands = new LinkedHashMap<String, String>();
- private String dataSourceType;
- private DataSource dataSource;
- private PropertiesFile properties;
- private PluginLoader loader;
- private boolean logging = false;
- private boolean enableHealth = true;
- private PluginLoader.HookResult autoHeal = PluginLoader.HookResult.DEFAULT_ACTION;
- private boolean showUnknownCommand = true;
- private String versionStr;
- private boolean tainted = true;
- // Version, DO NOT CHANGE (is loaded from file version.txt)!
- private int version = 1;
- private String username, password, db;
- private String[] animals = new String[] {};
- private String[] monsters = new String[] {};
- private String[] waterAnimals = new String[] {};
- private int mobSpawnRate = 100;
-
- private boolean mobReload = false;
- private List<OSpawnListEntry> animalsList, monsterList, waterAnimalsList;
-
- private etc() {
- commands.put("/help", "[Page] - Shows a list of commands. 7 per page.");
- commands.put("/playerlist", "- Shows a list of players");
- commands.put("/reload", "- Reloads config");
- commands.put("/banlist", "<IP or bans> - Gives a list of bans");
- commands.put("/banip", "[Player] <Reason> - Bans the player's IP");
- commands.put("/unbanip", "[IP] - Unbans the IP");
- commands.put("/ban", "[Player] <Reason> - Bans the player");
- commands.put("/unban", "[Player] - Unbans the player");
- commands.put("/mute", "[Player] - Toggles mute on player.");
- commands.put("/tp", "[Player] - Teleports to player. Credits to Zet from SA");
- commands.put("/tphere", "[Player] - Teleports the player to you");
- commands.put("/kick", "[Player] <Reason> - Kicks player");
- commands.put("/item", "[ID] <Amount> <Damage> <Player> - Gives items");
- commands.put("/cloth", "[Amount] [Color] - Gives cloth");
- commands.put("/kit", "[Kit] - Gives a kit. To get a list of kits type /kit");
- commands.put("/listwarps", "- Gives a list of available warps");
- commands.put("/home", "- Teleports you home");
- commands.put("/sethome", "- Sets your home");
- commands.put("/setspawn", "- Sets the spawn point to your position.");
- commands.put("/me", "[Message] - * hey0 says hi!");
- commands.put("/msg", "[Player] [Message] - Sends a message to player");
- commands.put("/spawn", "- Teleports you to spawn");
- commands.put("/warp", "[Warp] - Warps to the specified warp.");
- commands.put("/setwarp", "[Warp] - Sets the warp to your current position.");
- commands.put("/removewarp", "[Warp] - Removes the specified warp.");
- commands.put("/getpos", "- Displays your current position.");
- commands.put("/compass", "- Gives you a compass reading.");
- commands.put("/time", "[time|'day|night|check|raw'] (rawtime) - Changes or checks the time");
- commands.put("/lighter", "- Gives you a lighter for lighting furnaces");
- commands.put("/motd", "- Displays the MOTD");
- commands.put("/modify", "[player] [key] [value] - Type /modify for more info");
- commands.put("/whitelist", "[operation (add or remove)] [player]");
- commands.put("/reservelist", "[operation (add or remove)] [player]");
- commands.put("/enableplugin", "[plugin] - Enables plugin");
- commands.put("/disableplugin", "[plugin] - Disables plugin");
- commands.put("/listplugins", "- Lists all plugins");
- commands.put("/reloadplugin", "[plugin] - Reloads plugin");
- commands.put("/clearinventory", "- Clears your inventory");
-
- load();
- }
-
- private void loadIds(Collection<Integer> storage, String rawData) {
- for (String id : rawData.split(",")) {
- id = id.trim();
- if (id.length() > 0)
- try {
- storage.add(Integer.parseInt(id));
- } catch (NumberFormatException e) {
- log.log(Level.SEVERE, "While parsing the config: '" + id + "' is not a number");
- }
- }
- }
-
- /**
- * Loads or reloads the mod
- */
- public final void load() {
- if (properties == null)
- properties = new PropertiesFile("server.properties");
- else
- try {
- properties.load();
- } catch (IOException e) {
- log.log(Level.SEVERE, "Exception while reading from server.properties", e);
- }
-
- try {
- dataSourceType = properties.getString("data-source", "flatfile");
-
- loadIds(allowedItems, properties.getString("alloweditems", ""));
- loadIds(disallowedItems, properties.getString("disalloweditems", ""));
- loadIds(itemSpawnBlacklist, properties.getString("itemspawnblacklist", ""));
- motd = properties.getString("motd", "Type /help for a list of commands.").split("@");
- playerLimit = properties.getInt("max-players", 20);
- saveHomes = properties.getBoolean("save-homes", true);
- whitelistEnabled = properties.getBoolean("whitelist", false);
- whitelistMessage = properties.getString("whitelist-message", "Not on whitelist.");
- reservelistEnabled = properties.getBoolean("reservelist", false);
- if (dataSourceType.equalsIgnoreCase("flatfile")) {
- usersLoc = properties.getString("admintxtlocation", "users.txt");
- kitsLoc = properties.getString("kitstxtlocation", "kits.txt");
- homeLoc = properties.getString("homelocation", "homes.txt");
- warpLoc = properties.getString("warplocation", "warps.txt");
- itemLoc = properties.getString("itemstxtlocation", "items.txt");
- groupLoc = properties.getString("group-txt-location", "groups.txt");
- whitelistLoc = properties.getString("whitelist-txt-location", "whitelist.txt");
- reservelistLoc = properties.getString("reservelist-txt-location", "reservelist.txt");
- } else {
- PropertiesFile sql = new PropertiesFile("mysql.properties");
- sql.getString("driver", "com.mysql.jdbc.Driver");
- username = sql.getString("user", "root");
- password = sql.getString("pass", "root");
- db = sql.getString("db", "jdbc:mysql://localhost:3306/minecraft");
- }
- spawnProtectionSize = properties.getInt("spawn-protection-size", 16);
- logging = properties.getBoolean("logging", false);
- enableHealth = properties.getBoolean("enable-health", true);
-
- animals = properties.getString("natural-animals", "Sheep,Pig,Chicken,Cow").split(",");
- if (animals.length == 1 && (animals[0].equals(" ") || animals[0].equals("")))
- animals = new String[] {};
- validateMobGroup(animals, "natural-animals", new String[] { "Sheep", "Pig", "Chicken", "Cow", "Wolf" });
-
- monsters = properties.getString("natural-monsters", "Spider,Zombie,Skeleton,Creeper,Slime").split(",");
- if (monsters.length == 1 && (monsters[0].equals(" ") || monsters[0].equals("")))
- monsters = new String[] {};
- validateMobGroup(monsters, "natural-monsters", new String[] { "PigZombie", "Ghast", "Slime", "Giant", "Spider", "Zombie", "Skeleton", "Creeper" });
-
- waterAnimals = properties.getString("natural-wateranimals", "Squid").split(",");
- if (waterAnimals.length == 1 && (waterAnimals[0].equals(" ") || waterAnimals[0].equals("")))
- waterAnimals = new String[] {};
- validateMobGroup(waterAnimals, "natural-wateranimals", new String[] { "Squid" });
-
- mobReload = true;
-
- mobSpawnRate = properties.getInt("natural-spawn-rate", mobSpawnRate);
-
- String autoHealString = properties.getString("auto-heal", "default");
- if (autoHealString.equalsIgnoreCase("true"))
- autoHeal = PluginLoader.HookResult.ALLOW_ACTION;
- else if (autoHealString.equalsIgnoreCase("false"))
- autoHeal = PluginLoader.HookResult.PREVENT_ACTION;
-
- showUnknownCommand = properties.getBoolean("show-unknown-command", true);
- File file = new File("version.txt");
- if (file.exists()) {
- InputStreamReader ins = new InputStreamReader(file.toURI().toURL().openStream());
- BufferedReader bufferedReader = new BufferedReader(ins);
- String versionParam = bufferedReader.readLine();
- if (versionParam.startsWith("git-")) { // recommended
- // version.txt for git
- // builds:
- // git-<gituser>-<shorttag>
- // example: git-sk89q-591c662cf4afc8e3e09a
- version = -1;
- versionStr = versionParam;
- tainted = true;
- } else {
- version = Integer.parseInt(versionParam);
- versionStr = Integer.toString(version); // and back to a
- // string.
- tainted = false; // looks official. We hope.
- }
- ins.close();
- bufferedReader.close();
- } else {
- // I'm a tainted build, probably.
- version = -1;
- versionStr = "Undefined version";
- tainted = true;
- // If any mods check the version.. #@!$
- }
- } catch (Exception e) {
- log.log(Level.SEVERE, "Exception while reading from server.properties", e);
- // Just in case...
- motd = new String[] { "Type /help for a list of commands." };
- }
- }
-
- /**
- * Loads or reloads the data source
- */
- public void loadData() {
- if (dataSourceType.equalsIgnoreCase("flatfile") && dataSource == null)
- dataSource = new FlatFileSource();
- else if (dataSourceType.equalsIgnoreCase("mysql") && dataSource == null)
- dataSource = new MySQLSource();
-
- dataSource.initialize();
- }
-
- public String getDataSourceType() {
- return dataSourceType;
- }
-
- /**
- * Returns the instance
- *
- * @return
- */
- public static etc getInstance() {
- return instance;
- }
-
- /**
- * Sets the server to be used.
- *
- * @param s
- */
- public static void setServer(MinecraftServer s) {
- server = s;
- }
-
- /**
- * Returns the minecraft server
- *
- * @return
- */
- public static MinecraftServer getMCServer() {
- return server;
- }
-
- /**
- * Returns the data source
- *
- * @return
- */
- public static DataSource getDataSource() {
- return etc.getInstance().getSource();
- }
-
- /**
- * Returns the minecraft server interface
- *
- * @return
- */
- public static Server getServer() {
- return etc.getLoader().getServer();
- }
-
- /**
- * Returns the plugin loader
- *
- * @return
- */
- public static PluginLoader getLoader() {
- if (instance.loader == null)
- instance.loader = new PluginLoader(server);
-
- return instance.loader;
- }
-
- /**
- * Returns the default group
- *
- * @return default group
- */
- public Group getDefaultGroup() {
- Group group = dataSource.getDefaultGroup();
- if (group == null)
- log.log(Level.SEVERE, "No default group! Expect lots of errors!");
- return group;
- }
-
- /**
- * Adds or modifies the home.
- *
- * @param home
- */
- public void changeHome(Warp home) {
- if (dataSource.getHome(home.Name) == null)
- dataSource.addHome(home);
- else
- dataSource.changeHome(home);
- }
-
- /**
- * Adds or modifies the warp
- *
- * @param warp
- */
- public void setWarp(Warp warp) {
- if (dataSource.getWarp(warp.Name) == null)
- dataSource.addWarp(warp);
- else
- dataSource.changeWarp(warp);
- }
-
- /**
- * Returns true if the item is on the blacklist
- *
- * @param id
- * @return
- */
- public boolean isOnItemBlacklist(int id) {
- return itemSpawnBlacklist.contains(id);
- }
-
- /**
- * Returns the data source
- *
- * @return
- */
- public DataSource getSource() {
- return dataSource;
- }
-
- /**
- * Returns true if we're logging commands and such
- *
- * @return
- */
- public boolean isLogging() {
- return logging;
- }
-
- /**
- * Returns true if we want health to be enabled.
- *
- * @return
- */
- public boolean isHealthEnabled() {
- return enableHealth;
- }
-
- /**
- * Returns the status of auto-heal.
- *
- * @return
- */
- public PluginLoader.HookResult autoHeal() {
- return autoHeal;
- }
-
- /**
- * Adds command to the /help list
- *
- * @param command
- * @param description
- */
- public void addCommand(String command, String description) {
- commands.put(command, description);
- }
-
- /**
- * Removes command from /help list
- *
- * @param command
- */
- public void removeCommand(String command) {
- commands.remove(command);
- }
-
- /**
- * Toggles the whitelist (doesn't persist)
- *
- * @return
- */
- public boolean toggleWhitelist() {
- whitelistEnabled = !whitelistEnabled;
- return whitelistEnabled;
- }
-
- /**
- * Callback object for notifications sent by executed ServerCommands. so
- * that they appear in server log.
- */
- private MessageReceiver serverConsole = new MessageReceiver() {
- @Override
- public String getName() {
- return "<Server>";
- }
-
- @Override
- public void notify(String message) {
- // Strip the colors.
- message = message.replaceAll("\\u00A7[a-f0-9]", "");
- if (message != null)
- log.info(message);
- }
-
- };
-
- /**
- * Parses a console command
- *
- * @param command
- * @param server
- * @return
- */
- public boolean parseConsoleCommand(String command, MinecraftServer server) {
- if (getMCServer() == null)
- setServer(server);
- String[] split = command.split(" ");
- if ((Boolean) getLoader().callHook(PluginLoader.Hook.SERVERCOMMAND, new Object[] { split }))
- return true;
- if (split.length == 0)
- return false;
-
- boolean dontParseRegular = true;
- if (split[0].equalsIgnoreCase("save-all")) {
- dontParseRegular = false;
- getServer().saveInventories();
- } else if (split[0].equalsIgnoreCase("help") || split[0].equalsIgnoreCase("mod-help")) {
- if (split[0].equalsIgnoreCase("help"))
- dontParseRegular = false;
- log.info("Server mod help:");
- log.info("help Displays this mod's and server's help");
- log.info("mod-help Displays this mod's help");
- log.info("version Displays the server version");
- log.info("reload Reloads the config");
- log.info("modify Type modify for more info");
- log.info("whitelist Type whitelist for more info");
- log.info("reservelist Type reservelist for more info");
- log.info("listplugins Lists all plugins");
- log.info("enableplugin Enables a plugin");
- log.info("disableplugin Disables a plugin");
- log.info("reloadplugin Reloads a plugin");
- } else
- dontParseRegular = ServerConsoleCommands.parseServerConsoleCommand(serverConsole, split[0], split);
-
- return dontParseRegular;
- }
-
- /**
- * Returns compass direction according to your rotation
- *
- * @param degrees
- * @return
- */
- public static String getCompassPointForDirection(double degrees) {
- if (0 <= degrees && degrees < 22.5)
- return "N";
- else if (22.5 <= degrees && degrees < 67.5)
- return "NE";
- else if (67.5 <= degrees && degrees < 112.5)
- return "E";
- else if (112.5 <= degrees && degrees < 157.5)
- return "SE";
- else if (157.5 <= degrees && degrees < 202.5)
- return "S";
- else if (202.5 <= degrees && degrees < 247.5)
- return "SW";
- else if (247.5 <= degrees && degrees < 292.5)
- return "W";
- else if (292.5 <= degrees && degrees < 337.5)
- return "NW";
- else if (337.5 <= degrees && degrees < 360.0)
- return "N";
- else
- return "ERR";
- }
-
- /**
- * Combines the string array into a string at the specified start with the
- * separator separating each string.
- *
- * @param startIndex
- * @param string
- * @param seperator
- * @return combined string
- */
- public static String combineSplit(int startIndex, String[] string, String seperator) {
- StringBuilder builder = new StringBuilder();
- for (int i = startIndex; i < string.length; i++) {
- builder.append(string[i]);
- builder.append(seperator);
- }
- builder.deleteCharAt(builder.length() - seperator.length()); // remove
- // the
- // extra
- // seperator
- return builder.toString();
- }
-
- /**
- * Returns a list of allowed items for /item
- *
- * @return list of allowed items
- */
- public Set<Integer> getAllowedItems() {
- return allowedItems;
- }
-
- /**
- * Returns the list of commands
- *
- * @return
- */
- public LinkedHashMap<String, String> getCommands() {
- return commands;
- }
-
- /**
- * Returns a list of disallowed items for /item
- *
- * @return
- */
- public Set<Integer> getDisallowedItems() {
- return disallowedItems;
- }
-
- /**
- * Returns the location of groups.txt
- *
- * @return
- */
- public String getGroupLocation() {
- return groupLoc;
- }
-
- /**
- * Returns the location of homes.txt
- *
- * @return
- */
- public String getHomeLocation() {
- return homeLoc;
- }
-
- /**
- * Returns the location of items.txt
- *
- * @return
- */
- public String getItemLocation() {
- return itemLoc;
- }
-
- /**
- * Returns list of banned blocks
- *
- * @return
- */
- public Set<Integer> getItemSpawnBlacklist() {
- return itemSpawnBlacklist;
- }
-
- /**
- * Returns the location of kits.txt
- *
- * @return
- */
- public String getKitsLocation() {
- return kitsLoc;
- }
-
- /**
- * Returns the MOTD.
- *
- * @return
- */
- public String[] getMotd() {
- return motd;
- }
-
- /**
- * Returns the player limit
- *
- * @return
- */
- public int getPlayerLimit() {
- return playerLimit;
- }
-
- /**
- * Return reservelist enabled.
- *
- * @return true if enabled.
- */
- public boolean isReservelistEnabled() {
- return reservelistEnabled;
- }
-
- /**
- * Returns the location of reservelist.txt
- *
- * @return
- */
- public String getReservelistLocation() {
- return reservelistLoc;
- }
-
- /**
- * Returns true if the server is saving homes
- *
- * @return true if server can save homes
- */
- public boolean canSaveHomes() {
- return saveHomes;
- }
-
- /**
- * Returns the spawn protection size
- *
- * @return
- */
- public int getSpawnProtectionSize() {
- return spawnProtectionSize;
- }
-
- /**
- * Returns the location of users.txt
- *
- * @return
- */
- public String getUsersLocation() {
- return usersLoc;
- }
-
- /**
- * Returns the location of warps.txt
- *
- * @return
- */
- public String getWarpLocation() {
- return warpLoc;
- }
-
- /**
- * Returns true if the whitelist is enabled
- *
- * @return
- */
- public boolean isWhitelistEnabled() {
- return whitelistEnabled;
- }
-
- /**
- * Returns the location of whitelist.txt
- *
- * @return
- */
- public String getWhitelistLocation() {
- return whitelistLoc;
- }
-
- /**
- * Returns the message the kick will show if a player isn't on the whitelist
- *
- * @return
- */
- public String getWhitelistMessage() {
- return whitelistMessage;
- }
-
- /**
- * Sets the list of allowed items
- *
- * @param allowedItems
- */
- public void setAllowedItems(int[] allowedItems) {
- this.allowedItems.clear();
- // this.allowedItems.addAll(Arrays.asList(allowedItems)); <-- if only
- // java was smart >.>
- for (int item : allowedItems)
- this.allowedItems.add(item);
- }
-
- /**
- * Sets the list of disallowed items
- *
- * @param disallowedItems
- */
- public void setDisallowedItems(int[] disallowedItems) {
- this.disallowedItems.clear();
- // this.allowedItems.addAll(Arrays.asList(allowedItems)); <-- if only
- // java was smart >.>
- for (int item : disallowedItems)
- this.disallowedItems.add(item);
- }
-
- /**
- * Sets the location of groups.txt
- *
- * @param groupLoc
- */
- public void setGroupLocation(String groupLoc) {
- this.groupLoc = groupLoc;
- }
-
- /**
- * Sets the location of homes.txt
- *
- * @param homeLoc
- */
- public void setHomeLocation(String homeLoc) {
- this.homeLoc = homeLoc;
- }
-
- /**
- * Sets the location of items.txt
- *
- * @param itemLoc
- */
- public void setItemLocation(String itemLoc) {
- this.itemLoc = itemLoc;
- }
-
- /**
- * Sets the item spawn blacklist
- *
- * @param itemSpawnBlacklist
- */
- public void setItemSpawnBlacklist(int[] itemSpawnBlacklist) {
- this.itemSpawnBlacklist.clear();
- // this.allowedItems.addAll(Arrays.asList(allowedItems)); <-- if only
- // java was smart >.>
- for (int item : itemSpawnBlacklist)
- this.itemSpawnBlacklist.add(item);
- }
-
- /**
- * Sets the location of kits.txt
- *
- * @param kitsLoc
- */
- public void setKitsLocation(String kitsLoc) {
- this.kitsLoc = kitsLoc;
- }
-
- /**
- * If set to true the server will log all commands used.
- *
- * @param logging
- */
- public void setLogging(boolean logging) {
- this.logging = logging;
- }
-
- /**
- * Set the MOTD
- *
- * @param motd
- */
- public void setMotd(String[] motd) {
- this.motd = motd;
- }
-
- /**
- * Set the player limit
- *
- * @param playerLimit
- */
- public void setPlayerLimit(int playerLimit) {
- this.playerLimit = playerLimit;
- }
-
- /**
- * Set the location of reservelist.txt
- *
- * @param reservelistLoc
- */
- public void setReservelistLocation(String reservelistLoc) {
- this.reservelistLoc = reservelistLoc;
- }
-
- /**
- * If true the server will save homes. If false homes won't be saved and
- * will be wiped the next server restart.
- *
- * @param saveHomes
- */
- public void setSaveHomes(boolean saveHomes) {
- this.saveHomes = saveHomes;
- }
-
- /**
- * Set the spawn protection size (def: 16)
- *
- * @param spawnProtectionSize
- */
- public void setSpawnProtectionSize(int spawnProtectionSize) {
- this.spawnProtectionSize = spawnProtectionSize;
- }
-
- /**
- * Sets the location of users.txt
- *
- * @param usersLoc
- */
- public void setUsersLocation(String usersLoc) {
- this.usersLoc = usersLoc;
- }
-
- /**
- * Sets the location of warps.txt
- *
- * @param warpLoc
- */
- public void setWarpLocation(String warpLoc) {
- this.warpLoc = warpLoc;
- }
-
- /**
- * If true the whitelist is enabled
- *
- * @param whitelistEnabled
- */
- public void setWhitelistEnabled(boolean whitelistEnabled) {
- this.whitelistEnabled = whitelistEnabled;
- }
-
- /**
- * Sets the location of whitelist.txt
- *
- * @param whitelistLoc
- */
- public void setWhitelistLocation(String whitelistLoc) {
- this.whitelistLoc = whitelistLoc;
- }
-
- /**
- * Sets the whitelist message to show when it kicks someone
- *
- * @param whitelistMessage
- */
- public void setWhitelistMessage(String whitelistMessage) {
- this.whitelistMessage = whitelistMessage;
- }
-
- /**
- * Returns true if "Unknown command" is shown to a player when they enter an
- * unknown command (For wrappers and such)
- *
- * @return show unknown command
- */
- public boolean showUnknownCommand() {
- return showUnknownCommand;
- }
-
- /**
- * Sets whether or not to show "Unknown command" to players.
- *
- * @param showUnknownCommand
- * whether or not to show it
- */
- public void setShowUnknownCommand(boolean showUnknownCommand) {
- this.showUnknownCommand = showUnknownCommand;
- }
-
- /**
- * Return the current build of the mod
- *
- * @return build/version
- */
- public int getVersion() {
- return version;
- }
-
- /**
- * Return whether this build is "tainted"
- *
- * @return tainted
- */
- public boolean getTainted() {
- return tainted;
- }
-
- /**
- * Return the specified string version of the build
- *
- * @return build/version
- */
- public String getVersionStr() {
- return versionStr;
- }
-
- /**
- * Returns a list of animals that are allowed to spawn naturally
- *
- * @return a list of animals
- */
- public String[] getAnimals() {
- return animals;
- }
-
- /**
- * Sets a list of animals that are allowed to spawn naturally
- *
- * @param animals
- * a list of animals
- */
- public void setAnimals(String[] animals) {
- this.animals = animals;
- }
-
- /**
- * Returns a list of animals that are allowed to spawn naturally
- *
- * @return a list of animals
- */
- public String[] getWaterAnimals() {
- return waterAnimals;
- }
-
- /**
- * Sets a list of animals that are allowed to spawn naturally
- *
- * @param animals
- * a list of animals
- */
- public void setWaterAnimals(String[] animals) {
- waterAnimals = animals;
- }
-
- /**
- * Returns a list of mobs that are allowed to spawn naturally
- *
- * @return a list of mobs
- */
- public String[] getMonsters() {
- return monsters;
- }
-
- public List getMonstersClass(OMobSpawnerBase biomeSpawner) {
- if (mobReload)
- reloadMonsterClass();
- return monsterList;
- }
-
- public List getAnimalsClass(OMobSpawnerBase biomeSpawner) {
- if (mobReload)
- reloadMonsterClass();
-
- // Wolfies also like to spawn
- ArrayList toRet = new ArrayList(animalsList); // Create a copy.
- if ((biomeSpawner instanceof OMobSpawnerTaiga) || (biomeSpawner instanceof OMobSpawnerForest)) {
- OSpawnListEntry wolfEntry = OSpawnListEntry.getSpawnListEntry(OEntityWolf.class);
- if (!toRet.contains(wolfEntry))
- toRet.add(wolfEntry);
- }
-
- return toRet;
- }
-
- public List getWaterAnimalsClass(OMobSpawnerBase biomeSpawner) {
- if (mobReload)
- reloadMonsterClass();
- return waterAnimalsList;
- }
-
- private void reloadMonsterClass() {
- monsterList = new ArrayList(getMonsters().length);
- animalsList = new ArrayList(getAnimals().length);
- waterAnimalsList = new ArrayList(getWaterAnimals().length);
-
- for (String monster : getMonsters())
- monsterList.add(OSpawnListEntry.getSpawnListEntry(OEntityList.getEntity(monster)));
- for (String animal : getAnimals())
- animalsList.add(OSpawnListEntry.getSpawnListEntry(OEntityList.getEntity(animal)));
- for (String waterAnimal : getWaterAnimals())
- waterAnimalsList.add(OSpawnListEntry.getSpawnListEntry(OEntityList.getEntity(waterAnimal)));
-
- mobReload = false;
- }
-
- /**
- * Sets a list of mobs that are allowed to spawn naturally
- *
- * @param monsters
- * a list of mobs
- */
- public void setMonsters(String[] monsters) {
- this.monsters = monsters;
- }
-
- /**
- * Returns the % from 0 to 100 that a mob or animal will spawn
- *
- * @return a percentage from 0 to 100
- */
- public int getMobSpawnRate() {
- return mobSpawnRate;
- }
-
- /**
- * Sets the % from 0 to 100 that a mob or animal will spawn
- *
- * @param rate
- * a percentage from 0 to 100
- */
- public void setMobSpawnRate(int rate) {
- mobSpawnRate = rate;
- }
-
- private Connection _getSQLConnection() {
- try {
- return DriverManager.getConnection(db + "?autoReconnect=true&user=" + username + "&password=" + password);
- } catch (SQLException ex) {
- log.log(Level.SEVERE, "Unable to retreive connection", ex);
- }
- return null;
- }
-
- /**
- * Returns a SQL connection
- *
- * @return sql connection
- */
- public static Connection getSQLConnection() {
- return getInstance()._getSQLConnection();
- }
-
- public static int floor(float paramFloat) {
- int i = (int) paramFloat;
- return paramFloat < i ? i - 1 : i;
- }
-
- public static int floor(double paramDouble) {
- int i = (int) paramDouble;
- return paramDouble < i ? i - 1 : i;
- }
-
- private static void validateMobGroup(String[] mobs, String groupname, String[] allowed) {
- lb1: for (String i : mobs) {
- for (String al : allowed)
- if (al.equals(i))
- continue lb1;
- log.warning("Invalid mobType '" + i + "' in group '" + groupname + "', please remove it from your config file!");
- System.exit(0);
- }
- }
-
- public static boolean isInValidLivingGroup(String classname, Class<?> objectgroup) {
- Class<?> entity = OEntityList.getEntity(classname);
- if (entity != null)
- return objectgroup.isAssignableFrom(entity);
- else
- return false;
- }
-
- }