| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315 | import java.io.*;import java.util.ArrayList;import java.util.Arrays;import java.util.logging.Level;import java.util.logging.Logger;//=====================================================================//Class:	vminecraftSettings//Use:		Controls the settings for vminecraft//Author:	nossr50, TrapAlice, cerevisiae//=====================================================================public class vConfig {	//private final static Object syncLock = new Object();	protected static final Logger log = Logger.getLogger("Minecraft");	private static volatile vConfig instance;            static int range;	//The feature settings	static boolean toggle			= true,				   adminChat		= false,                                   groupcoloredbrackets = false,                                   partyChat = false,				   greentext		= false,				   FFF				= false,				   quakeColors		= false,				   prefix 			= false,				   suffix 			= false,				   ignore 			= false,				   colors 			= false,				   nick 			= false,                                   playerspawn = false,                                   freeze = false,                                   lavaspread = false,                                   colorsrequirepermission = false,				   cmdFabulous		= false,				   cmdPromote		= false,				   cmdDemote		= false,				   cmdWhoIs			= false,				   cmdRules			= false,				   cmdMasstp		= false,				   cmdTp			= false,				   cmdTphere		= false,				   globalmessages	= false,				   cmdSay			= false,				   cmdWho			= false,				   stopFire			= false,				   cmdHeal  		= false,				   cmdSuicide		= false,				   cmdAdminToggle	= false,				   cmdEzModo		= false;	//An array of players currently in ezmodo	static ArrayList<String> ezModo = new ArrayList<String>();        //An array of players currently frozen        static ArrayList<String> frozenplayers = new ArrayList<String>();        //An array of players currently toggled for admin chat        static ArrayList<String> adminChatList = new ArrayList<String>();        //An array of player currently toggled for party chat        static ArrayList<String> partyChatList = new ArrayList<String>();        //An array of blocks that won't catch on fire        static public ArrayList<Integer> fireblockan;    	    private PropertiesFile properties;    String file = "vminecraft.properties";    public String rules[] = new String[0];    public static String deathMessages[] = new String[0];    public static String ranks[] = new String[0];    	//=====================================================================	//Function:	loadSettings	//Input:	None	//Output:	None	//Use:		Loads the settings from the properties	//=====================================================================	public void loadSettings()	{		File theDir = new File("vminecraft.properties");		if(!theDir.exists()){			String location = "vminecraft.properties";			properties = new PropertiesFile("vminecraft.properties");			FileWriter writer = null;			try {				writer = new FileWriter(location);				writer.append("#This plugin is modular\r\n");				writer.append("#Turn any features you don't want to false and they won't be running\r\n");				writer.append("#If you edit this file and save it, then use /reload it will reload the settings\r\n");                                writer.append("#Chat Options\r\n");                                writer.append("#Group prefix colors apply to player brackets\r\n");                                writer.append("groupcoloredbrackets=true\r\n");                                writer.append("#Allows the use of color codes following ^ symbol\r\n");                                writer.append("ColoredChat=true\r\n");                                writer.append("#Require per player permission for quakecolors\r\n");                                writer.append("colorsrequirepermissions=false\r\n");                                writer.append("#use /coloruse to give players permission if this is enabled\r\n");                                writer.append("#Text following a > will be colored green to mimic quoting of popular internet message boards\r\n");				writer.append("QuotesAreGreen=true\r\n");                                writer.append("#Turns any chat message starting with FFF automagically blood red\r\n");                                writer.append("FFF=true\r\n");                                writer.append("\r\n");                                writer.append("#Admin Settings\r\n");                                writer.append("#Enables or disables players spawning to their home location\r\n");                                writer.append("playerspawn=true\r\n");                                writer.append("#Enables or disables the admin only chat\r\n");                                writer.append("adminchat=true\r\n");                                writer.append("#Lets non admins use admin chat if they have the /adminchat command permission\r\n");                                writer.append("/adminchat=true\r\n");                                writer.append("#Enables overriding of regular /tp and /tphere to make it so you can only teleport to players with lower permissions, and only bring players of lower permissions to you\r\n");                                writer.append("/tp=true\r\n");                                writer.append("/tphere=true\r\n");                                writer.append("#Mass Tp uses the same concept, anyone with this command only brings those with lower permissions to themselves\r\n");                                writer.append("/masstp=true\r\n");                                writer.append("\r\n");                                writer.append("#Server Settings\r\n");                                writer.append("#Enables or Disables the following commands, give groups/users permissions to use these commands for them to work\r\n");				writer.append("/fabulous=true\r\n");                                writer.append("/prefix=true\r\n");                                writer.append("/freeze=true\r\n");                                writer.append("/suffix=true\r\n");                                writer.append("/ignore=true\r\n");                                writer.append("/colors=true\r\n");				writer.append("/whois=true\r\n");                                writer.append("/nick=true\r\n");				writer.append("/who=true\r\n");				writer.append("/promote=true\r\n");				writer.append("/demote=true\r\n");				writer.append("/say=true\r\n");				writer.append("/rules=true\r\n");				writer.append("/suicide=true\r\n");				writer.append("/ezmodo=true\r\n");                                writer.append("#Global Messages\r\n");                                writer.append("#Enable or Disable sending announcements about sensitive commands to the entire server\r\n");                                writer.append("globalmessages=true\r\n");				writer.append("#Adding player names to this list will have them start off in ezmodo\r\n");				writer.append("ezModo=\r\n");                                writer.append("#Stop fire from spreading\r\n");				writer.append("stopFire=false\r\n");                                writer.append("#Stop lava from spreading fire");                                writer.append("lavaspread=false");                                writer.append("#Blocks disabled from fire");                                writer.append("fireblocks=");                                writer.append("\r\n");                                writer.append("#Organize your player ranks from lowest to highest.\r\n");                                writer.append("ranks=\r\n");				writer.append("#Write the rules to be shown when /rules is used here, it works just like the MOTD does\r\n");				writer.append("rules=Rules@#1: No griefing@#2: No griefing\r\n");				writer.append("#The Random Death messages, seperate them by comma. All death messages start with the player name and a space.\r\n");				writer.append("deathMessages=is no more,died horribly,went peacefully\r\n");                                writer.append("#Enable whether or not players can toggle party chat");                                writer.append("partychat=true");                                writer.append("hiddendistance=1024");			} catch (Exception e) {				log.log(Level.SEVERE, "Exception while creating " + location, e);			} finally {				try {					if (writer != null) {						writer.close();					}				} catch (IOException e) {					log.log(Level.SEVERE, "Exception while closing writer for " + location, e);				}			}		} else {			properties = new PropertiesFile("vminecraft.properties");			try {				properties.load();			} catch (IOException e) {				log.log(Level.SEVERE, "Exception while loading vminecraft.properties", e);			}		}		try {                        groupcoloredbrackets = properties.getBoolean("groupcoloredbrackets",true);			adminChat = properties.getBoolean("adminchat",true);                        partyChat = properties.getBoolean("partychat",true);                        playerspawn = properties.getBoolean("playerspawn",true);			greentext = properties.getBoolean("QuotesAreGreen",true);			FFF = properties.getBoolean("FFF",true);			quakeColors = properties.getBoolean("ColoredChat",true);                        colorsrequirepermission = properties.getBoolean("colorsrequirepermission",true);                        prefix = properties.getBoolean("prefix",true);                        suffix = properties.getBoolean("suffix",true);                        ignore = properties.getBoolean("ignore",true);                        colors = properties.getBoolean("colors",true);                        nick = properties.getBoolean("nick",true);                        freeze = properties.getBoolean("/freeze",true);			cmdFabulous = properties.getBoolean("/fabulous",true);			cmdPromote = properties.getBoolean("/promote",true);			cmdDemote = properties.getBoolean("/demote",true);			cmdWhoIs = properties.getBoolean("/whois",true);			cmdWho = properties.getBoolean("/who",true);			cmdRules = properties.getBoolean("/rules",true);			cmdTp = properties.getBoolean("/tp",true);			cmdMasstp = properties.getBoolean("/masstp",true);			cmdTphere = properties.getBoolean("/tphere",true);			cmdSuicide = properties.getBoolean("/suicide", true);			cmdHeal = properties.getBoolean("/heal",true);			cmdAdminToggle = properties.getBoolean("/adminchat", true);			globalmessages = properties.getBoolean("globalmessages",true);			cmdSay = properties.getBoolean("/say",true);			cmdEzModo = properties.getBoolean("/ezmodo",true);			stopFire = properties.getBoolean("stopFire",true);                        lavaspread = properties.getBoolean("lavaspread",true);			rules = properties.getString("rules", "").split("@");			deathMessages = properties.getString("deathmessages", "").split(",");			String[] tempEz = properties.getString("ezModo").split(",");                        String[] fireblocks = properties.getString("fireblocks").split(",");                        fireblockan = new ArrayList<Integer>();                         for(String str : fireblocks)                        {                        if(!str.isEmpty())                            fireblockan.add(Integer.parseInt(str));                        }			ezModo = new ArrayList<String>();                        ezModo.addAll(Arrays.asList(tempEz));			ranks = properties.getString("ranks").split(",");                        range = properties.getInt("hiddendistance",1024);			log.log(Level.INFO, "vminecraft plugin successfully loaded");		}		catch (Exception e)		{			log.log(Level.SEVERE, "vminecraft Error: ERROR LOADING PROPERTIES FILE {0}", e);		}	}	//=====================================================================	//Function:	adminchat, greentext, FFF, quakeColors, cmdFabulous,	//			cmdPromote, cmdDemote, cmdWhoIs, cmdTp, cmdTphere, cmdSay	//			cmdRules, globalmessages, cmdMasstp, cmdEzModo	//Input:	None	//Output:	Boolan: If the feature is enabled	//Use:		Returns if the feature is enabled	//=====================================================================	public boolean adminchat() {return adminChat;}        public boolean groupcoloredbrackets(){return groupcoloredbrackets;}        public boolean partyChat() {return partyChat;}        public boolean adminChatToggle() {return cmdAdminToggle;}	public boolean greentext() {return greentext;}	public boolean FFF() {return FFF;}	public boolean quakeColors() {return quakeColors;}        public boolean prefix() {return prefix;}        public boolean suffix() {return suffix;}        public boolean ignore() {return ignore;}        public boolean colors() {return colors;}        public boolean nick() {return nick;}        public boolean playerspawn() {return playerspawn;}        public boolean colorsreq() {return colorsrequirepermission;}        public boolean freeze() {return freeze;}	public boolean cmdFabulous() {return cmdFabulous;}	public boolean cmdPromote() {return cmdPromote;}	public boolean cmdDemote() {return cmdDemote;}	public boolean cmdWhoIs() {return cmdWhoIs;}	public boolean cmdTp() {return cmdTp;}	public boolean cmdTphere() {return cmdTphere;}	public boolean cmdSay() {return cmdSay;}	public boolean cmdRules() {return cmdRules;}	public boolean globalmessages() {return globalmessages;}	public boolean cmdMasstp() {return cmdMasstp;}	public boolean cmdWho() {return cmdWho;}	public boolean stopFire() {return stopFire;}        public boolean lavaSpread() {return lavaspread;}        public boolean cmdSuicide() {return cmdSuicide;}        public boolean cmdHeal() {return cmdHeal;}        public ArrayList<Integer> getFireBlockIds() {return fireblockan;}        public String[] getRanks() {return ranks;}		//EzModo methods    public boolean cmdEzModo() {return cmdEzModo;}	public boolean isEzModo(String playerName) {return ezModo.contains(playerName);}        public boolean isFrozen(String playerName) {return frozenplayers.contains(playerName);}        public boolean isAdminToggled(String playerName) {return adminChatList.contains(playerName);}        public boolean isPartyToggled(String playerName) {return partyChatList.contains(playerName);}	public void removeEzModo(String playerName) {ezModo.remove(ezModo.indexOf(playerName));}        public void removePartyToggled(String playerName) {partyChatList.remove(partyChatList.indexOf(playerName));}        public void removeAdminToggled(String playerName) {adminChatList.remove(adminChatList.indexOf(playerName));}	public void addEzModo(String playerName) {ezModo.add(playerName);}        public void addPartyToggled(String playerName) {partyChatList.add(playerName);}        public void addAdminToggled(String playerName) {adminChatList.add(playerName);}        public void addFrozen(String playerName) {frozenplayers.add(playerName);}        public void removeFrozen (String playerName) {frozenplayers.remove(frozenplayers.indexOf(playerName));}	public String ezModoList() {return ezModo.toString();}	    //Random death message method    public static String randomDeathMsg() {    	if (deathMessages == null) {    		return "died";    	}    	return deathMessages[ (int) (Math.random() * deathMessages.length)];	}		//=====================================================================	//Function:	getInstance	//Input:	None	//Output:	vminecraftSettings: The instance of the settings	//Use:		Returns the instance of the settings	//=====================================================================	public static vConfig getInstance() {		if (instance == null) {			instance = new vConfig();		}		return instance;		}	//=====================================================================	//Function:	getRules	//Input:	None	//Output:	String[]: The list of rules	//Use:		Gets the array containing the rules	//=====================================================================	public String[] getRules() {		return rules;	}}
 |