From 3c316c1cca1035c3bd3c2941d02e57d22f9f5f1b Mon Sep 17 00:00:00 2001 From: nossr50 Date: Sat, 27 Nov 2010 04:35:23 -0800 Subject: [PATCH] Added a simple death detection and global message when a player dies. Signed-off-by: nossr50 --- settings.java | 6 +++- vminecraftListener.java | 68 ++++++++++++++++++++++++++++++++--------- vminecraftPlugin.java | 15 +++++++-- 3 files changed, 71 insertions(+), 18 deletions(-) diff --git a/settings.java b/settings.java index 3bd99a48d..be2adad89 100644 --- a/settings.java +++ b/settings.java @@ -21,11 +21,12 @@ public class settings { private boolean cmdTphere = false; private boolean globalmessages = false; private boolean cmdSay = false; + private boolean cmdEzModo = false; private PropertiesFile properties; String file = "vminecraft.properties"; public String rules[] = null; - public void loadSettings() + public void loadSettings() throws IOException { File theDir = new File("vminecraft.properties"); if(!theDir.exists()) @@ -52,6 +53,7 @@ public class settings { writer.write("globalmessages=true\r\n"); writer.write("FFF=true\r\n"); writer.write("adminchat=true\r\n"); + writer.write("cmdEzModo=true\r\n"); writer.write("rules=Rules@#1: No griefing@#2: No griefing\r\n"); } catch (Exception e) { log.log(Level.SEVERE, "Exception while creating " + location, e); @@ -86,6 +88,7 @@ public class settings { cmdTphere = properties.getBoolean("cmdTphere",true); globalmessages = properties.getBoolean("globalmessages",true); cmdSay = properties.getBoolean("cmdSay",true); + cmdEzModo = properties.getBoolean("cmdEzModo",true); rules = properties.getString("rules", "").split("@"); log.log(Level.INFO, "vminecraft plugin successfully loaded"); @@ -110,6 +113,7 @@ public class settings { public boolean cmdRules() {return cmdRules;} public boolean globalmessages() {return globalmessages;} public boolean cmdMasstp() {return cmdMasstp;} + public boolean cmdEzModo() {return cmdEzModo;} public static settings getInstance() { if (instance == null) { diff --git a/vminecraftListener.java b/vminecraftListener.java index f1dc12b58..ec5aa8f52 100644 --- a/vminecraftListener.java +++ b/vminecraftListener.java @@ -1,25 +1,36 @@ //Vminecraft plugin by nossr50 & TrapAlice +import java.io.IOException; +import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; public class vminecraftListener extends PluginListener { protected static final Logger log = Logger.getLogger("Minecraft"); - public void disable() { - log.log(Level.INFO, "vminecraft disabled"); - } + private ArrayList ezmodo = new ArrayList(); //An array of players currently in ezmodo - public void enable() { + public void enable() throws IOException { settings.getInstance().loadSettings(); //Load the settings files + if (etc.getInstance().isHealthEnabled()){ + etc.getInstance().addCommand("/ezmodo", "Toggle invulnerability"); + } log.log(Level.INFO, "vminecraft enabled"); } - public void onPlayerMove () { - if (ezmodo.contains(player.getName())){ - if (player.getHealth() < 30) - { - player.setHealth(30); - } - } + public void disable() { + log.log(Level.INFO, "vminecraft disabled"); + if (etc.getInstance().isHealthEnabled()) { + etc.getInstance().removeCommand("/ezmodo"); + } + } + + public boolean onHealthChange(Player player,int oldValue,int newValue){ + if (player.getHealth() != 30 && ezmodo.contains(player.getName())) { + player.setHealth(30); + } + else if (settings.getInstance().globalmessages() && player.getHealth() < 1) { + other.gmsg(Colors.Gray + player.getName() + " is no more"); + } + return false; } public boolean onChat(Player player, String message){ String temp2 = "<" + player.getColor() + player.getName() + Colors.White +"> "; //Copies the formatting of id.java @@ -101,11 +112,34 @@ import java.util.logging.Logger; } player.sendMessage(Colors.Blue+"Summoning successful."); } - //ezmodo - if (split[0].equals("/ezmodo")) { + //Disable using /modify to add commands (need to make a boolean settings for this) + if(split[0].equals("/modify") && split[2].equals("commands")) { + return true; + } + //ezlist + if(settings.getInstance().cmdEzModo() && split[0].equals("/ezlist")) { + player.sendMessage("Ezmodo: " + ezmodo); + return true; + } + //slay + if(settings.getInstance().cmdEzModo() && split[0].equals("/slay")) { + Player playerTarget = etc.getServer().matchPlayer(split[1]); + if (!ezmodo.contains(playerTarget.getName())) { + playerTarget.setHealth(0); + other.gmsg(player.getColor() + player.getName() + Colors.LightBlue + " has slain " + playerTarget.getColor() + playerTarget.getName()); + return true; + } + else { + player.sendMessage(Colors.Rose + "That player is currently in ezmodo! Hahahaha"); + return true; + } + } + //ezmodo + if (settings.getInstance().cmdEzModo() && split[0].equals("/ezmodo")) { if (ezmodo.contains(player.getName())) { player.sendMessage(Colors.Red + "ezmodo = off"); ezmodo.remove(ezmodo.indexOf(player.getName())); + return true; } else { player.sendMessage(Colors.LightBlue + "eh- maji? ezmodo!?"); player.sendMessage(Colors.Rose + "kimo-i"); @@ -113,8 +147,8 @@ import java.util.logging.Logger; player.sendMessage(Colors.Red + "**Laughter**"); ezmodo.add(player.getName()); player.setHealth(30); + return true; } - return true; } //Replacement for /tp if(settings.getInstance().cmdTp() && split[0].equalsIgnoreCase("/tp")) { @@ -198,7 +232,11 @@ import java.util.logging.Logger; } //Should only reload vminecraft settings if the player is able to use /reload if(split[0].equalsIgnoreCase("/reload") && player.canUseCommand("/reload")) { - settings.getInstance().loadSettings(); + try { + settings.getInstance().loadSettings(); + } catch (IOException ex) { + Logger.getLogger(vminecraftListener.class.getName()).log(Level.SEVERE, null, ex); + } return false; } //Rules diff --git a/vminecraftPlugin.java b/vminecraftPlugin.java index adfe72a6d..855d49bc3 100644 --- a/vminecraftPlugin.java +++ b/vminecraftPlugin.java @@ -1,3 +1,8 @@ + +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; + /** * vminecraft Plugin * @author Robert, TrapAlice @@ -5,14 +10,17 @@ //This is how we setup the listener public class vminecraftPlugin extends Plugin { static final vminecraftListener listener = new vminecraftListener(); - public void enable() { //If we had commands we would add them here. etc.getInstance().addCommand("/masstp", "Teleports those with lower permissions to you"); etc.getInstance().addCommand("/rules", "Displays the rules"); etc.getInstance().addCommand("/fabulous", "makes text SUUUPER"); etc.getInstance().addCommand("/whois", "/whois [user]"); - settings.getInstance().loadSettings(); //Hopefully this will make the plugin load right away + try { + settings.getInstance().loadSettings(); //Hopefully this will make the plugin load right away + } catch (IOException ex) { + Logger.getLogger(vminecraftPlugin.class.getName()).log(Level.SEVERE, null, ex); + } } public void disable() { @@ -23,5 +31,8 @@ public class vminecraftPlugin extends Plugin { //Here we add the hook we're going to use. In this case it's the arm swing event. etc.getLoader().addListener(PluginLoader.Hook.CHAT, listener, this, PluginListener.Priority.MEDIUM); etc.getLoader().addListener(PluginLoader.Hook.COMMAND, listener, this, PluginListener.Priority.HIGH); + if(etc.getInstance().isHealthEnabled()){ + etc.getLoader().addListener(PluginLoader.Hook.HEALTH_CHANGE, listener, this, PluginListener.Priority.MEDIUM); + } } }