From 3695b55f38d87176c740c55477a641915e160433 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Mon, 7 Feb 2011 16:39:52 -0800 Subject: [PATCH] Bug fixes, among other things. --- mcMMO/com/bukkit/nossr50/mcMMO/mcMMO.java | 22 +- .../nossr50/mcMMO/mcPlayerListener.java | 228 +++++++++++++++++- mcMMO/com/bukkit/nossr50/mcMMO/mcm.java | 47 +--- mcMMO/plugin.yml | 2 +- 4 files changed, 239 insertions(+), 60 deletions(-) diff --git a/mcMMO/com/bukkit/nossr50/mcMMO/mcMMO.java b/mcMMO/com/bukkit/nossr50/mcMMO/mcMMO.java index e6505c342..f007611b6 100644 --- a/mcMMO/com/bukkit/nossr50/mcMMO/mcMMO.java +++ b/mcMMO/com/bukkit/nossr50/mcMMO/mcMMO.java @@ -1,8 +1,13 @@ package com.bukkit.nossr50.mcMMO; - +import com.nijikokun.bukkit.Permissions.Permissions; +import com.nijiko.Messaging; +import com.nijiko.permissions.PermissionHandler; +import org.bukkit.plugin.Plugin; import java.io.File; import java.io.IOException; import java.util.HashMap; +import java.util.logging.Level; +import java.util.logging.Logger; import org.bukkit.event.player.*; import org.bukkit.Server; import org.bukkit.event.Event.Priority; @@ -15,11 +20,13 @@ import org.bukkit.entity.Player; public class mcMMO extends JavaPlugin { + public static final Logger log = Logger.getLogger("Minecraft"); private final mcPlayerListener playerListener = new mcPlayerListener(this); private final mcBlockListener blockListener = new mcBlockListener(this); private final mcEntityListener entityListener = new mcEntityListener(this); private final HashMap debugees = new HashMap(); private final String name = "mcMMO"; + public static PermissionHandler Permissions = null; public mcMMO(PluginLoader pluginLoader, Server instance, PluginDescriptionFile desc, File folder, File plugin, ClassLoader cLoader) { super(pluginLoader, instance, desc, folder, plugin, cLoader); @@ -43,6 +50,19 @@ public class mcMMO extends JavaPlugin { PluginDescriptionFile pdfFile = this.getDescription(); System.out.println( pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" ); } + public void setupPermissions() { + Plugin test = this.getServer().getPluginManager().getPlugin("Permissions"); + + + if(this.Permissions == null) { + if(test != null) { + this.Permissions = ((Permissions)test).getHandler(); + } else { + log.info(Messaging.bracketize(name) + " Permission system not enabled. Disabling plugin."); + this.getServer().getPluginManager().disablePlugin(this); + } + } + } public void onDisable() { System.out.println("mcMMO disabled."); } diff --git a/mcMMO/com/bukkit/nossr50/mcMMO/mcPlayerListener.java b/mcMMO/com/bukkit/nossr50/mcMMO/mcPlayerListener.java index e2256472a..61e01635c 100644 --- a/mcMMO/com/bukkit/nossr50/mcMMO/mcPlayerListener.java +++ b/mcMMO/com/bukkit/nossr50/mcMMO/mcPlayerListener.java @@ -12,20 +12,55 @@ import org.bukkit.inventory.ItemStack; public class mcPlayerListener extends PlayerListener { public Location spawn = null; - private static mcMMO plugin; + private mcMMO plugin; public mcPlayerListener(mcMMO instance) { plugin = instance; } - private static volatile mcPlayerListener instance; - public static mcPlayerListener getInstance() { - if (instance == null) { - instance = new mcPlayerListener(plugin); - } - return instance; - } public Player[] getPlayersOnline() { return plugin.getServer().getOnlinePlayers(); + } + public boolean isPlayer(String playerName){ + for(Player herp : getPlayersOnline()){ + if(herp.getName().toLowerCase().equals(playerName.toLowerCase())){ + return true; + } + } + return false; + } + public Player getPlayer(String playerName){ + for(Player herp : getPlayersOnline()){ + if(herp.getName().toLowerCase().equals(playerName.toLowerCase())){ + return herp; + } + } + return null; + } + public int partyCount(Player player){ + int x = 0; + for(Player hurrdurr: getPlayersOnline()){ + if(mcUsers.getProfile(player).getParty().equals(mcUsers.getProfile(hurrdurr).getParty())) + x++; + } + return x; + } + public void informPartyMembers(Player player){ + int x = 0; + for(Player p : getPlayersOnline()){ + if(mcm.getInstance().inSameParty(player, p) && !p.getName().equals(player.getName())){ + p.sendMessage(player.getName() + ChatColor.GREEN + " has joined your party"); + x++; + } + } + } + public void informPartyMembersQuit(Player player){ + int x = 0; + for(Player p : getPlayersOnline()){ + if(mcm.getInstance().inSameParty(player, p) && !p.getName().equals(player.getName())){ + p.sendMessage(player.getName() + ChatColor.GREEN + " has left your party"); + x++; + } + } } public void onPlayerJoin(PlayerEvent event) { Player player = event.getPlayer(); @@ -58,6 +93,9 @@ public class mcPlayerListener extends PlayerListener { */ } } + /* + * TOOLS + */ if(mcm.getInstance().isTools(is) && block.getTypeId() == 42){ if(mcm.getInstance().isIronTools(is) && mcm.getInstance().hasIron(player)){ is.setDurability(mcm.getInstance().getToolRepairAmount(is, durability, player)); @@ -72,9 +110,9 @@ public class mcPlayerListener extends PlayerListener { } else if (mcm.getInstance().isDiamondTools(is) && mcUsers.getProfile(player).getRepairInt() < 50){ player.sendMessage(ChatColor.DARK_RED +"You're not adept enough to repair Diamond"); } else if (mcm.getInstance().isDiamondTools(is) && !mcm.getInstance().hasDiamond(player) || mcm.getInstance().isIronTools(is) && !mcm.getInstance().hasIron(player)){ - if(!mcm.getInstance().hasDiamond(player)) + if(mcm.getInstance().isDiamondTools(is) && !mcm.getInstance().hasDiamond(player)) player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.BLUE+ "Diamonds"); - if(!mcm.getInstance().hasIron(player)) + if(mcm.getInstance().isIronTools(is) && !mcm.getInstance().hasIron(player)) player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GRAY+ "Iron"); } else if (mcm.getInstance().isDiamondArmor(is) && !mcm.getInstance().hasDiamond(player)){ player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.BLUE+ "Diamonds"); @@ -86,7 +124,173 @@ public class mcPlayerListener extends PlayerListener { public void onPlayerCommand(PlayerChatEvent event) { Player player = event.getPlayer(); String[] split = event.getMessage().split(" "); - mcc.getInstance().CommandCheck(player, split, spawn); + String playerName = player.getName(); + if(split[0].equalsIgnoreCase("/mcmmo")){ + player.sendMessage(ChatColor.GRAY+"mcMMO is an RPG inspired plugin"); + player.sendMessage(ChatColor.GRAY+"You can gain skills in several professions by"); + player.sendMessage(ChatColor.GRAY+"doing things related to that profession."); + player.sendMessage(ChatColor.GRAY+"Mining for example will increase your mining XP."); + player.sendMessage(ChatColor.GRAY+"Wood Cutting will increase Wood Cutting, etc..."); + player.sendMessage(ChatColor.GRAY+"Repairing is simple in mcMMO"); + player.sendMessage(ChatColor.GRAY+"Say you want to repair an iron shovel"); + player.sendMessage(ChatColor.GRAY+"start by making an anvil by combining 9 iron ingots"); + player.sendMessage(ChatColor.GRAY+"on a workbench. Place the anvil and while holding the shovel"); + player.sendMessage(ChatColor.GRAY+"right click the anvil interact with it, If you have spare"); + player.sendMessage(ChatColor.GRAY+"iron ingots in your inventory the item will be repaired."); + player.sendMessage(ChatColor.GRAY+"You cannot hurt other party members"); + player.sendMessage(ChatColor.BLUE+"Set your own spawn with "+ChatColor.RED+"/myspawn"); + player.sendMessage(ChatColor.GREEN+"Based on your skills you will get "+ChatColor.DARK_RED+"random procs "+ChatColor.GREEN+ "when"); + player.sendMessage(ChatColor.GREEN+"using your profession, like "+ChatColor.DARK_RED+"double drops "+ChatColor.GREEN+"or "+ChatColor.DARK_RED+"better repairs"); + player.sendMessage(ChatColor.GREEN+"Find out mcMMO commands with /mcc"); + } + if(split[0].equalsIgnoreCase("/mcc")){ + player.sendMessage(ChatColor.GRAY+"mcMMO has a party system included"); + player.sendMessage(ChatColor.GREEN+"~~Commands~~"); + player.sendMessage(ChatColor.GRAY+"/party - to join a party"); + player.sendMessage(ChatColor.GRAY+"/party q - to quit a party"); + player.sendMessage(ChatColor.GRAY+"/ptp - party teleport"); + player.sendMessage(ChatColor.GRAY+"/p - toggles party chat"); + player.sendMessage(ChatColor.GRAY+"/setmyspawn - set your own spawn location"); + player.sendMessage(ChatColor.GRAY+"/myspawn - travel to myspawn, clears inventory"); + player.sendMessage(ChatColor.GRAY+"/setspawn - Server ops can designate a 'spawn'"); + player.sendMessage(ChatColor.GRAY+"/spawn - Travel to the op designated spawn"); + player.sendMessage(ChatColor.GRAY+"/whois - view detailed info about a player (req op)"); + } + if(mcUsers.getProfile(player).inParty() && split[0].equalsIgnoreCase("/ptp")){ + if(split.length < 2){ + player.sendMessage(ChatColor.RED+"Usage is /ptp "); + return; + } + if(isPlayer(split[1])){ + Player target = getPlayer(split[1]); + if(mcUsers.getProfile(player).getParty().equals(mcUsers.getProfile(target).getParty())){ + player.teleportTo(target); + player.sendMessage(ChatColor.GREEN+"You have teleported to "+target.getName()); + target.sendMessage(ChatColor.GREEN+player.getName() + " has teleported to you."); + } + } + } + if(player.isOp() && split[0].equalsIgnoreCase("/whois")){ + if(split.length < 2){ + player.sendMessage(ChatColor.RED + "Proper usage is /whois "); + return; + } + //if split[1] is a player + if(isPlayer(split[1])){ + Player target = getPlayer(split[1]); + double x,y,z; + x = target.getLocation().getX(); + y = target.getLocation().getY(); + z = target.getLocation().getZ(); + player.sendMessage(ChatColor.GREEN + "~~WHOIS RESULTS~~"); + player.sendMessage(target.getName()); + if(mcUsers.getProfile(target).inParty()) + player.sendMessage("Party: "+mcUsers.getProfile(target).getParty()); + player.sendMessage("Health: "+target.getHealth()+ChatColor.GRAY+" (20 is full health)"); + player.sendMessage("OP: " + target.isOp()); + player.sendMessage(ChatColor.GREEN+"~~mcMMO stats~~"); + player.sendMessage("Mining Skill: "+mcUsers.getProfile(target).getMining()); + player.sendMessage("Repair Skill: "+mcUsers.getProfile(target).getRepair()); + player.sendMessage("Woodcutting Skill: "+mcUsers.getProfile(target).getWoodCutting()); + player.sendMessage(ChatColor.GREEN+"~~COORDINATES~~"); + player.sendMessage("X: "+x); + player.sendMessage("Y: "+y); + player.sendMessage("Z: "+z); + } + } + if(split[0].equalsIgnoreCase("/setmyspawn")){ + double x = player.getLocation().getX(); + double y = player.getLocation().getY(); + double z = player.getLocation().getZ(); + mcUsers.getProfile(player).setMySpawn(x, y, z); + player.sendMessage(ChatColor.DARK_AQUA + "Myspawn has been set to your current location."); + } + if(player.isOp() && split[0].equalsIgnoreCase("/setspawn")){ + spawn = player.getLocation(); + player.sendMessage("Spawn set to current location"); + } + if(split[0].equalsIgnoreCase("/stats")){ + player.sendMessage(ChatColor.DARK_GREEN + "mcMMO stats"); + player.sendMessage(ChatColor.DARK_GREEN + "Mining Skill: " + mcUsers.getProfile(player).getMining()); + player.sendMessage(ChatColor.DARK_GREEN + "Repair Skill: " + mcUsers.getProfile(player).getRepair()); + player.sendMessage(ChatColor.DARK_GREEN + "Woodcutting Skill: "+mcUsers.getProfile(player).getWoodCutting()); + player.sendMessage(ChatColor.GRAY + "Increases depending on the material you mine"); + } + //Party command + if(split[0].equalsIgnoreCase("/party")){ + if(split.length == 1 && !mcUsers.getProfile(player).inParty()){ + player.sendMessage("Proper usage is /party or 'q' to quit"); + return; + } + if(split.length == 1 && mcUsers.getProfile(player).inParty()){ + String tempList = ""; + int x = 0; + for(Player p : plugin.getServer().getOnlinePlayers()) + { + if(mcUsers.getProfile(player).getParty().equals(mcUsers.getProfile(p).getParty())){ + if(p != null && x+1 >= partyCount(player)){ + tempList+= p.getName(); + x++; + } + if(p != null && x < partyCount(player)){ + tempList+= p.getName() +", "; + x++; + } + } + } + player.sendMessage(ChatColor.GREEN+"You are in party \""+mcUsers.getProfile(player).getParty()+"\""); + player.sendMessage(ChatColor.GREEN + "Party Members ("+ChatColor.WHITE+tempList+ChatColor.GREEN+")"); + } + if(split.length > 1 && split[1].equals("q") && mcUsers.getProfile(player).inParty()){ + informPartyMembersQuit(player); + mcUsers.getProfile(player).removeParty(); + player.sendMessage(ChatColor.RED + "You have left that party"); + return; + } + if(split.length >= 2){ + mcUsers.getProfile(player).setParty(split[1]); + player.sendMessage("Joined Party: " + split[1]); + informPartyMembers(player); + } + } + if(split[0].equalsIgnoreCase("/p")){ + if(mcConfig.getInstance().isAdminToggled(player.getName())) + mcConfig.getInstance().toggleAdminChat(playerName); + mcConfig.getInstance().togglePartyChat(playerName); + if(mcConfig.getInstance().isPartyToggled(playerName)){ + player.sendMessage(ChatColor.GREEN + "Party Chat Toggled On"); + } else { + player.sendMessage(ChatColor.GREEN + "Party Chat Toggled " + ChatColor.RED + "Off"); + } + } + if(split[0].equalsIgnoreCase("/a") && player.isOp()){ + if(mcConfig.getInstance().isPartyToggled(player.getName())) + mcConfig.getInstance().togglePartyChat(playerName); + mcConfig.getInstance().toggleAdminChat(playerName); + if(mcConfig.getInstance().isAdminToggled(playerName)){ + player.sendMessage(ChatColor.AQUA + "Admin chat toggled " + ChatColor.GREEN + "On"); + } else { + player.sendMessage(ChatColor.AQUA + "Admin chat toggled " + ChatColor.RED + "Off"); + } + } + if(split[0].equalsIgnoreCase("/myspawn")){ + if(mcUsers.getProfile(player).getMySpawn(player) != null){ + player.getInventory().clear(); + player.setHealth(20); + player.teleportTo(mcUsers.getProfile(player).getMySpawn(player)); + player.sendMessage("Inventory cleared & health restored"); + }else{ + player.sendMessage(ChatColor.RED+"Configure your myspawn first with /setmyspawn"); + } + } + if(split[0].equalsIgnoreCase("/spawn")){ + if(spawn != null){ + player.teleportTo(spawn); + player.sendMessage("Welcome to spawn, home of the feeble."); + return; + } + player.sendMessage("Spawn isn't configured. Have an OP set it with /setspawn"); + } } public void onPlayerChat(PlayerChatEvent event) { Player player = event.getPlayer(); @@ -97,7 +301,7 @@ public class mcPlayerListener extends PlayerListener { event.setCancelled(true); for(Player herp : plugin.getServer().getOnlinePlayers()){ if(mcUsers.getProfile(herp).inParty()){ - if(mcm.inSameParty(herp, player)){ + if(mcm.getInstance().inSameParty(herp, player)){ herp.sendMessage(x+event.getMessage()); } } diff --git a/mcMMO/com/bukkit/nossr50/mcMMO/mcm.java b/mcMMO/com/bukkit/nossr50/mcMMO/mcm.java index 827328189..0f58364ba 100644 --- a/mcMMO/com/bukkit/nossr50/mcMMO/mcm.java +++ b/mcMMO/com/bukkit/nossr50/mcMMO/mcm.java @@ -15,58 +15,13 @@ public class mcm { } return instance; } - - public boolean isPlayer(String playerName){ - for(Player herp : mcPlayerListener.getInstance().getPlayersOnline()){ - if(herp.getName().toLowerCase().equals(playerName.toLowerCase())){ - return true; - } - } - return false; - } - public int partyCount(Player player){ - Player players[] = mcPlayerListener.getInstance().getPlayersOnline(); - int x = 0; - for(Player hurrdurr: players){ - if(mcUsers.getProfile(player).getParty().equals(mcUsers.getProfile(hurrdurr).getParty())) - x++; - } - return x; - } - public static void informPartyMembers(Player player){ - int x = 0; - for(Player p : mcPlayerListener.getInstance().getPlayersOnline()){ - if(inSameParty(player, p) && !p.getName().equals(player.getName())){ - p.sendMessage(player.getName() + ChatColor.GREEN + " has joined your party"); - x++; - } - } - } - public static void informPartyMembersQuit(Player player){ - int x = 0; - for(Player p : mcPlayerListener.getInstance().getPlayersOnline()){ - if(inSameParty(player, p) && !p.getName().equals(player.getName())){ - p.sendMessage(player.getName() + ChatColor.GREEN + " has left your party"); - x++; - } - } - } - public static boolean inSameParty(Player playera, Player playerb){ + public boolean inSameParty(Player playera, Player playerb){ if(mcUsers.getProfile(playera).getParty().equals(mcUsers.getProfile(playerb).getParty())){ return true; } else { return false; } } - - public Player getPlayer(String playerName){ - for(Player herp : mcPlayerListener.getInstance().getPlayersOnline()){ - if(herp.getName().toLowerCase().equals(playerName.toLowerCase())){ - return herp; - } - } - return null; - } public boolean checkPlayerProcRepair(Player player){ if(mcUsers.getProfile(player).getRepairInt() >= 750){ if(Math.random() * 10 > 2){ diff --git a/mcMMO/plugin.yml b/mcMMO/plugin.yml index 70f9b5ced..94ba7cd87 100644 --- a/mcMMO/plugin.yml +++ b/mcMMO/plugin.yml @@ -1,3 +1,3 @@ name: mcMMO main: com.bukkit.nossr50.mcMMO.mcMMO -version: 0.2 \ No newline at end of file +version: 0.2.1 \ No newline at end of file