mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-22 21:26:46 +01:00
vPlayersOnline: Customizable messages.
Text strings are read from a .properties file and parsed for color codes. Config file is created if it doesn't exist.
This commit is contained in:
parent
c83ef55714
commit
c868e8b2ee
78
vPlayersOnline/com/gmail/nossr50/vPlayersOnline/Config.java
Normal file
78
vPlayersOnline/com/gmail/nossr50/vPlayersOnline/Config.java
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
|
||||||
|
package com.gmail.nossr50.vPlayersOnline;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Mark Tolley
|
||||||
|
*/
|
||||||
|
class Config
|
||||||
|
{
|
||||||
|
public static String name;
|
||||||
|
private static final String CONFIG_FILE = "plugins/vPlayersOnline/vplayersonline.properties";
|
||||||
|
|
||||||
|
public static Properties loadConfig() {
|
||||||
|
Properties config = defaultConfig();
|
||||||
|
|
||||||
|
try {
|
||||||
|
config.load(new FileReader(CONFIG_FILE));
|
||||||
|
}
|
||||||
|
catch (FileNotFoundException e) {
|
||||||
|
System.out.println(name + ": Creating configuration file...");
|
||||||
|
config = defaultConfig();
|
||||||
|
writeConfig();
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
System.out.println(name + "s: An error occured reading configuration, using defaults.");
|
||||||
|
config = defaultConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void writeConfig() {
|
||||||
|
File f = new File(CONFIG_FILE);
|
||||||
|
if (f.getParentFile().mkdirs()) {
|
||||||
|
try {
|
||||||
|
FileWriter fw = new FileWriter(f);
|
||||||
|
fw.write("# vPlayersOnline configuration file\r\n");
|
||||||
|
fw.write("# \r\n");
|
||||||
|
fw.write("# Color codes:\r\n");
|
||||||
|
fw.write("# &0 black\r\n");
|
||||||
|
fw.write("# &1 dark blue &9 blue\r\n");
|
||||||
|
fw.write("# &2 dark green &a green\r\n");
|
||||||
|
fw.write("# &3 dark aqua &b aqua\r\n");
|
||||||
|
fw.write("# &4 dark red &c red\r\n");
|
||||||
|
fw.write("# &5 dark pink &d pink\r\n");
|
||||||
|
fw.write("# &6 dark yellow &e yellow\r\n");
|
||||||
|
fw.write("# &7 light grey &f white\r\n");
|
||||||
|
fw.write("# &8 dark grey\r\n");
|
||||||
|
fw.write("\r\n");
|
||||||
|
fw.write("PlayersOnline = &aThere are %d players online\r\n");
|
||||||
|
fw.write("PlayerList = &cPlayer List &f(%s)\r\n");
|
||||||
|
fw.write("TotalPlayers = &cTotal Players: &a%d\r\n");
|
||||||
|
fw.write("#1POnline = &aThere is 1 player online.\r\n");
|
||||||
|
fw.write("1POnline = &cNo one else is online.\r\n");
|
||||||
|
fw.close();
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Properties defaultConfig() {
|
||||||
|
Properties config = new Properties();
|
||||||
|
config.setProperty("PlayersOnline", "&aThere are %d players online");
|
||||||
|
config.setProperty("PlayerList", "&cPlayer List &f(%s)");
|
||||||
|
config.setProperty("TotalPlayers", "&cTotal Players: &a%d");
|
||||||
|
config.setProperty("1POnline", "&cNo one else is online.");
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
}
|
@ -1,12 +1,11 @@
|
|||||||
package com.gmail.nossr50.vPlayersOnline;
|
package com.gmail.nossr50.vPlayersOnline;
|
||||||
|
|
||||||
|
import java.util.Properties;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.player.PlayerChatEvent;
|
import org.bukkit.event.player.PlayerChatEvent;
|
||||||
import org.bukkit.event.player.PlayerEvent;
|
import org.bukkit.event.player.PlayerEvent;
|
||||||
import org.bukkit.event.player.PlayerListener;
|
import org.bukkit.event.player.PlayerListener;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import java.util.logging.Level;
|
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle events for all Player related events
|
* Handle events for all Player related events
|
||||||
@ -14,49 +13,90 @@ import java.util.logging.Logger;
|
|||||||
*/
|
*/
|
||||||
public class vPlayerListener extends PlayerListener {
|
public class vPlayerListener extends PlayerListener {
|
||||||
private final vPlayersOnline plugin;
|
private final vPlayersOnline plugin;
|
||||||
protected static final Logger log = Logger.getLogger("Minecraft");
|
private final String PlayersOnline;
|
||||||
|
private final String PlayerList;
|
||||||
|
private final String TotalPlayers;
|
||||||
|
private final String _1POnline;
|
||||||
|
|
||||||
public vPlayerListener(vPlayersOnline instance) {
|
public vPlayerListener(vPlayersOnline instance, Properties config) {
|
||||||
plugin = instance;
|
plugin = instance;
|
||||||
|
PlayersOnline = parseColors(config.getProperty("PlayersOnline"));
|
||||||
|
PlayerList = parseColors(config.getProperty("PlayerList"));
|
||||||
|
TotalPlayers = parseColors(config.getProperty("TotalPlayers"));
|
||||||
|
_1POnline = parseColors(config.getProperty("1POnline"));
|
||||||
}
|
}
|
||||||
|
|
||||||
//Function to count the players
|
//Function to count the players
|
||||||
public int playerCount(){
|
private int playerCount(){
|
||||||
Player players[] = plugin.getServer().getOnlinePlayers();
|
Player players[] = plugin.getServer().getOnlinePlayers();
|
||||||
int x = 0;
|
return players.length;
|
||||||
for(Player hurrdurr: players){
|
}
|
||||||
x++;
|
|
||||||
|
private static String parseColors(String str) {
|
||||||
|
final StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
|
for (int i = 0; i < str.length(); ++i) {
|
||||||
|
char c = str.charAt(i);
|
||||||
|
|
||||||
|
if (c == '&') {
|
||||||
|
char next = str.charAt(i+1);
|
||||||
|
if (next == '&') {
|
||||||
|
// literal &
|
||||||
|
++i;
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
int color = Integer.parseInt(String.valueOf(next), 16);
|
||||||
|
sb.append(ChatColor.getByCode(color));
|
||||||
|
++i;
|
||||||
|
continue;
|
||||||
|
} catch (NumberFormatException e) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sb.append(c);
|
||||||
}
|
}
|
||||||
return x;
|
|
||||||
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Message to be sent when a player joins
|
//Message to be sent when a player joins
|
||||||
|
@Override
|
||||||
public void onPlayerJoin(PlayerEvent event) {
|
public void onPlayerJoin(PlayerEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
//English Version
|
int count = playerCount();
|
||||||
player.sendMessage(ChatColor.GREEN + "There are " + playerCount() + " players online.");
|
|
||||||
|
if (count == 1) {
|
||||||
|
player.sendMessage(_1POnline);
|
||||||
|
} else {
|
||||||
|
player.sendMessage(String.format(PlayersOnline, count));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Message to be sent when a player uses /list
|
//Message to be sent when a player uses /list
|
||||||
public void onPlayerCommand(PlayerChatEvent event) {
|
@Override
|
||||||
|
public void onPlayerCommandPreprocess(PlayerChatEvent event) {
|
||||||
String[] split = event.getMessage().split(" ");
|
String[] split = event.getMessage().split(" ");
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
if(split[0].equalsIgnoreCase("/list") || split[0].equalsIgnoreCase("/who")){
|
if(split[0].equalsIgnoreCase("/list") || split[0].equalsIgnoreCase("/who")){
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
String tempList = "";
|
|
||||||
int x = 0;
|
int count = playerCount();
|
||||||
|
String tempList = "";
|
||||||
|
int x = 0;
|
||||||
for(Player p : plugin.getServer().getOnlinePlayers())
|
for(Player p : plugin.getServer().getOnlinePlayers())
|
||||||
{
|
{
|
||||||
if(p != null && x+1 >= playerCount()){
|
if(p != null && x+1 >= count){
|
||||||
tempList+= p.getName();
|
tempList+= p.getName();
|
||||||
x++;
|
x++;
|
||||||
}
|
}
|
||||||
if(p != null && x < playerCount()){
|
if(p != null && x < count){
|
||||||
tempList+= p.getName() +", ";
|
tempList+= p.getName() +", ";
|
||||||
x++;
|
x++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Output the player list
|
//Output the player list
|
||||||
player.sendMessage(ChatColor.RED + "Player List"+ChatColor.WHITE+" ("+ChatColor.WHITE + tempList+")");
|
player.sendMessage(String.format(PlayerList, tempList));
|
||||||
player.sendMessage(ChatColor.RED + "Total Players: " + ChatColor.GREEN + playerCount());
|
player.sendMessage(String.format(TotalPlayers, count));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
package com.gmail.nossr50.vPlayersOnline;
|
package com.gmail.nossr50.vPlayersOnline;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.HashMap;
|
import java.io.FileNotFoundException;
|
||||||
import org.bukkit.event.player.*;
|
import java.io.FileReader;
|
||||||
import org.bukkit.Server;
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Properties;
|
||||||
import org.bukkit.event.Event.Priority;
|
import org.bukkit.event.Event.Priority;
|
||||||
import org.bukkit.event.Event;
|
import org.bukkit.event.Event;
|
||||||
import org.bukkit.plugin.PluginDescriptionFile;
|
import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
import org.bukkit.plugin.PluginLoader;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* vPlayersOnline for Bukkit
|
* vPlayersOnline for Bukkit
|
||||||
@ -18,20 +18,31 @@ import org.bukkit.entity.Player;
|
|||||||
* @author nossr50
|
* @author nossr50
|
||||||
*/
|
*/
|
||||||
public class vPlayersOnline extends JavaPlugin {
|
public class vPlayersOnline extends JavaPlugin {
|
||||||
private final vPlayerListener playerListener = new vPlayerListener(this);
|
private PluginDescriptionFile pdfFile;
|
||||||
private final String name = "vPlayersOnline";
|
|
||||||
|
private vPlayerListener playerListener;
|
||||||
|
|
||||||
|
public void onLoad() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
|
pdfFile = this.getDescription();
|
||||||
|
Config.name = pdfFile.getName();
|
||||||
|
|
||||||
|
Properties config = Config.loadConfig();
|
||||||
|
playerListener = new vPlayerListener(this, config);
|
||||||
|
|
||||||
PluginManager pm = getServer().getPluginManager();
|
PluginManager pm = getServer().getPluginManager();
|
||||||
pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Normal, this);
|
pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.PLAYER_DROP_ITEM, playerListener, Priority.Normal, this);
|
pm.registerEvent(Event.Type.PLAYER_DROP_ITEM, playerListener, Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.PLAYER_QUIT, playerListener, Priority.Normal, this);
|
pm.registerEvent(Event.Type.PLAYER_QUIT, playerListener, Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.PLAYER_COMMAND, playerListener, Priority.Normal, this);
|
pm.registerEvent(Event.Type.PLAYER_COMMAND_PREPROCESS, playerListener, Priority.Normal, this);
|
||||||
|
|
||||||
//Displays a message when plugin is loaded
|
//Displays a message when plugin is loaded
|
||||||
PluginDescriptionFile pdfFile = this.getDescription();
|
System.out.println(Config.name + " version " + pdfFile.getVersion() + " is enabled!");
|
||||||
System.out.println( pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" );
|
|
||||||
}
|
}
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
System.out.println("vPlayersOnline disabled.");
|
System.out.println(Config.name + " disabled.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user