diff --git a/mcMMO/com/bukkit/nossr50/mcMMO/mcConfig.java b/mcMMO/com/bukkit/nossr50/mcMMO/mcConfig.java index b42fbfb2f..81e076581 100644 --- a/mcMMO/com/bukkit/nossr50/mcMMO/mcConfig.java +++ b/mcMMO/com/bukkit/nossr50/mcMMO/mcConfig.java @@ -1,7 +1,7 @@ package com.bukkit.nossr50.mcMMO; import java.util.ArrayList; - +import java.util.logging.Logger; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; @@ -9,7 +9,9 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; public class mcConfig { - private static volatile mcConfig instance; + private static volatile mcConfig instance; + String location = "mcmmo.properties"; + protected static final Logger log = Logger.getLogger("Minecraft"); static ArrayList adminChatList = new ArrayList(); static ArrayList blockWatchList = new ArrayList(); static ArrayList partyChatList = new ArrayList(); diff --git a/mcMMO/com/bukkit/nossr50/mcMMO/mcEntityListener.java b/mcMMO/com/bukkit/nossr50/mcMMO/mcEntityListener.java index 0a0ea6853..2574e702c 100644 --- a/mcMMO/com/bukkit/nossr50/mcMMO/mcEntityListener.java +++ b/mcMMO/com/bukkit/nossr50/mcMMO/mcEntityListener.java @@ -88,13 +88,13 @@ public class mcEntityListener extends EntityListener { defender.setHealth(calculateDamage(defender, 8)); } //XP - if(x instanceof Skeleton && Math.random() * 10 > 8){ + if(x instanceof Skeleton && Math.random() * 100 > 95){ if(defender.getHealth() != 0){ mcUsers.getProfile(attacker).skillUpUnarmed(1); attacker.sendMessage(ChatColor.YELLOW+"Unarmed skill increased by 1. Total ("+mcUsers.getProfile(attacker).getUnarmed()+")"); } } - if(x instanceof Spider&& Math.random() * 10 > 7){ + if(x instanceof Spider&& Math.random() * 10 > 9){ if(defender.getHealth() != 0){ mcUsers.getProfile(attacker).skillUpUnarmed(1); attacker.sendMessage(ChatColor.YELLOW+"Unarmed skill increased by 1. Total ("+mcUsers.getProfile(attacker).getUnarmed()+")"); @@ -106,7 +106,7 @@ public class mcEntityListener extends EntityListener { attacker.sendMessage(ChatColor.YELLOW+"Unarmed skill increased by 1. Total ("+mcUsers.getProfile(attacker).getUnarmed()+")"); } } - if(x instanceof Creeper && Math.random() * 10 > 7){ + if(x instanceof Creeper && Math.random() * 100 > 90){ if(defender.getHealth() != 0){ mcUsers.getProfile(attacker).skillUpUnarmed(2); attacker.sendMessage(ChatColor.YELLOW+"Unarmed skill increased by 2. Total ("+mcUsers.getProfile(attacker).getUnarmed()+")"); diff --git a/mcMMO/com/bukkit/nossr50/mcMMO/mcMMO.java b/mcMMO/com/bukkit/nossr50/mcMMO/mcMMO.java index aaa0e1ad3..4ce123a11 100644 --- a/mcMMO/com/bukkit/nossr50/mcMMO/mcMMO.java +++ b/mcMMO/com/bukkit/nossr50/mcMMO/mcMMO.java @@ -2,6 +2,8 @@ package com.bukkit.nossr50.mcMMO; import com.nijikokun.bukkit.Permissions.Permissions; import com.nijiko.Messaging; import com.nijiko.permissions.PermissionHandler; +import com.nijiko.permissions.Control; +import com.nijikokun.bukkit.Permissions.Permissions; import org.bukkit.plugin.Plugin; import java.io.File; import java.io.IOException; @@ -26,7 +28,8 @@ public class mcMMO extends JavaPlugin { private final mcEntityListener entityListener = new mcEntityListener(this); private final HashMap debugees = new HashMap(); private final String name = "mcMMO"; - public static PermissionHandler Permissions = null; + public static PermissionHandler PermissionsHandler = null; + private Permissions permissions; public mcMMO(PluginLoader pluginLoader, Server instance, PluginDescriptionFile desc, File folder, File plugin, ClassLoader cLoader) { super(pluginLoader, instance, desc, folder, plugin, cLoader); @@ -50,21 +53,23 @@ public class mcMMO extends JavaPlugin { pm.registerEvent(Event.Type.PLAYER_ITEM_HELD, playerListener, Priority.Normal, this); //Displays a message when plugin is loaded PluginDescriptionFile pdfFile = this.getDescription(); + mcPermissions.initialize(getServer()); 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(this.PermissionsHandler == null) { if(test != null) { - this.Permissions = ((Permissions)test).getHandler(); + this.PermissionsHandler = ((Permissions)test).getHandler(); } else { log.info(Messaging.bracketize(name) + " Permission system not enabled. Disabling plugin."); this.getServer().getPluginManager().disablePlugin(this); } } } + public Permissions getPermissions() { + return permissions; + } public void onDisable() { System.out.println("mcMMO disabled."); } diff --git a/mcMMO/com/bukkit/nossr50/mcMMO/mcPermissions.java b/mcMMO/com/bukkit/nossr50/mcMMO/mcPermissions.java new file mode 100644 index 000000000..abcb86f6c --- /dev/null +++ b/mcMMO/com/bukkit/nossr50/mcMMO/mcPermissions.java @@ -0,0 +1,87 @@ +package com.bukkit.nossr50.mcMMO; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.bukkit.Server; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; +import com.nijikokun.bukkit.Permissions.Permissions; + +public class mcPermissions { + //Thanks to myWarp source code for helping me figure this shit out! + private static Permissions permissionsPlugin; + private static boolean permissionsEnabled = false; + private static volatile mcPermissions instance; + + public static void initialize(Server server) { + Plugin test = server.getPluginManager().getPlugin("Permissions"); + if (test != null) { + Logger log = Logger.getLogger("Minecraft"); + permissionsPlugin = ((Permissions) test); + permissionsEnabled = true; + log.log(Level.INFO, "[mcMMO] Permissions enabled."); + } else { + Logger log = Logger.getLogger("Minecraft"); + log.log(Level.SEVERE, "[mcMMO] Permissions isn't loaded, there are no restrictions."); + } + } + private boolean permission(Player player, String string) { + return permissionsPlugin.Security.permission(player, string); + } + public boolean motd(Player player) { + if (permissionsEnabled) { + return permission(player, "mcmmo.motd"); + } else { + return true; + } + } + public boolean mySpawn(Player player) { + if (permissionsEnabled) { + return permission(player, "mcmmo.commands.myspawn"); + } else { + return true; + } + } + public boolean partyChat(Player player) { + if (permissionsEnabled) { + return permission(player, "mcmmo.chat.partychat"); + } else { + return true; + } + } + public boolean partyTeleport(Player player) { + if (permissionsEnabled) { + return permission(player, "mcmmo.commands.ptp"); + } else { + return true; + } + } + public boolean whois(Player player) { + if (permissionsEnabled) { + return permission(player, "mcmmo.commands.whois"); + } else { + return true; + } + } + public boolean party(Player player) { + if (permissionsEnabled) { + return permission(player, "mcmmo.commands.party"); + } else { + return true; + } + } + public boolean adminChat(Player player) { + if (permissionsEnabled) { + return permission(player, "mcmmo.chat.adminchat"); + } else { + return true; + } + } + public static mcPermissions getInstance() { + if (instance == null) { + instance = new mcPermissions(); + } + return instance; + } +} diff --git a/mcMMO/com/bukkit/nossr50/mcMMO/mcPlayerListener.java b/mcMMO/com/bukkit/nossr50/mcMMO/mcPlayerListener.java index 21970d3d4..2debbc511 100644 --- a/mcMMO/com/bukkit/nossr50/mcMMO/mcPlayerListener.java +++ b/mcMMO/com/bukkit/nossr50/mcMMO/mcPlayerListener.java @@ -12,6 +12,8 @@ import org.bukkit.event.player.PlayerListener; import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.inventory.ItemStack; +import com.nijikokun.bukkit.Permissions.Permissions; + public class mcPlayerListener extends PlayerListener { public Location spawn = null; private mcMMO plugin; @@ -21,10 +23,10 @@ public class mcPlayerListener extends PlayerListener { } public void onPlayerRespawn(PlayerRespawnEvent event) { Player player = event.getPlayer(); + if(mcPermissions.getInstance().mySpawn(player)){ if(mcUsers.getProfile(player).getMySpawn(player) != null); event.setRespawnLocation(mcUsers.getProfile(player).getMySpawn(player)); - if(spawn != null) - event.setRespawnLocation(spawn); + } } public Player[] getPlayersOnline() { return plugin.getServer().getOnlinePlayers(); @@ -74,8 +76,10 @@ public class mcPlayerListener extends PlayerListener { public void onPlayerJoin(PlayerEvent event) { Player player = event.getPlayer(); mcUsers.addUser(player); + if(mcPermissions.getInstance().motd(player)){ player.sendMessage(ChatColor.BLUE + "This server is running mcMMO "+plugin.getDescription().getVersion()+" type "+ChatColor.YELLOW+"/mcmmo "+ChatColor.BLUE+ "for help."); - player.sendMessage(ChatColor.RED+"WARNING: "+ChatColor.DARK_GRAY+ "Using /myspawn will clear your inventory!"); + player.sendMessage(ChatColor.RED+"WARNING: "+ChatColor.DARK_GRAY+ "Using /myspawn will clear your inventory!"); + } } //Check if string is a player @@ -168,7 +172,7 @@ public class mcPlayerListener extends PlayerListener { player.sendMessage(ChatColor.GREEN+"Gaining Skill: "+ChatColor.DARK_GRAY+"Chop down trees."); player.sendMessage(ChatColor.GREEN+"~~EFFECTS~~"); player.sendMessage(ChatColor.GRAY+"Double Drops start to happen at 10 woodcutting skill"); - player.sendMessage(ChatColor.GRAY+"it gets more frequent from there."); + player.sendMessage(ChatColor.GRAY+"and it gets more frequent from there."); } if(split[0].equalsIgnoreCase("/mining")){ event.setCancelled(true); @@ -197,7 +201,7 @@ public class mcPlayerListener extends PlayerListener { player.sendMessage(ChatColor.GREEN+"~~EFFECTS~~"); player.sendMessage(ChatColor.GRAY+"Damage scales with unarmed skill. The first damage increase"); player.sendMessage(ChatColor.DARK_GRAY+"happens at 50 skill. At very high skill levels, you will"); - player.sendMessage(ChatColor.DARK_GRAY+"gain a proc to disarm opponents on hit"); + player.sendMessage(ChatColor.DARK_GRAY+"gain a proc to disarm player opponents on hit"); } if(split[0].equalsIgnoreCase("/herbalism")){ event.setCancelled(true); @@ -253,11 +257,15 @@ public class mcPlayerListener extends PlayerListener { player.sendMessage(ChatColor.GRAY+"/mining - displays info about the skill"); player.sendMessage(ChatColor.GRAY+"/repair - displays info about the skill"); player.sendMessage(ChatColor.GRAY+"/unarmed - displays info about the skill"); - player.sendMessage(ChatColor.GRAY+"/herbalist - displays info about the skill"); + player.sendMessage(ChatColor.GRAY+"/herbalism - displays info about the skill"); player.sendMessage(ChatColor.GRAY+"/excavation - displays info about the skill"); } if(mcUsers.getProfile(player).inParty() && split[0].equalsIgnoreCase("/ptp")){ event.setCancelled(true); + if(!mcPermissions.getInstance().partyTeleport(player)){ + player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +" Insufficient permissions."); + return; + } if(split.length < 2){ player.sendMessage(ChatColor.RED+"Usage is /ptp "); return; @@ -271,7 +279,7 @@ public class mcPlayerListener extends PlayerListener { } } } - if(player.isOp() && split[0].equalsIgnoreCase("/whois")){ + if((player.isOp() || mcPermissions.getInstance().whois(player)) && split[0].equalsIgnoreCase("/whois")){ event.setCancelled(true); if(split.length < 2){ player.sendMessage(ChatColor.RED + "Proper usage is /whois "); @@ -304,6 +312,10 @@ public class mcPlayerListener extends PlayerListener { } } if(split[0].equalsIgnoreCase("/setmyspawn")){ + if(!mcPermissions.getInstance().mySpawn(player)){ + player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +" Insufficient permissions."); + return; + } event.setCancelled(true); double x = player.getLocation().getX(); double y = player.getLocation().getY(); @@ -311,11 +323,6 @@ public class mcPlayerListener extends PlayerListener { 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")){ - event.setCancelled(true); - spawn = player.getLocation(); - player.sendMessage("Spawn set to current location"); - } if(split[0].equalsIgnoreCase("/stats")){ event.setCancelled(true); player.sendMessage(ChatColor.DARK_GREEN + "mcMMO stats"); @@ -328,6 +335,10 @@ public class mcPlayerListener extends PlayerListener { } //Party command if(split[0].equalsIgnoreCase("/party")){ + if(!mcPermissions.getInstance().party(player)){ + player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +" Insufficient permissions."); + return; + } event.setCancelled(true); if(split.length == 1 && !mcUsers.getProfile(player).inParty()){ player.sendMessage("Proper usage is /party or 'q' to quit"); @@ -365,6 +376,10 @@ public class mcPlayerListener extends PlayerListener { } } if(split[0].equalsIgnoreCase("/p")){ + if(!mcPermissions.getInstance().party(player)){ + player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +" Insufficient permissions."); + return; + } event.setCancelled(true); if(mcConfig.getInstance().isAdminToggled(player.getName())) mcConfig.getInstance().toggleAdminChat(playerName); @@ -375,7 +390,11 @@ public class mcPlayerListener extends PlayerListener { player.sendMessage(ChatColor.GREEN + "Party Chat Toggled " + ChatColor.RED + "Off"); } } - if(split[0].equalsIgnoreCase("/a") && player.isOp()){ + if(split[0].equalsIgnoreCase("/a") && (player.isOp() || mcPermissions.getInstance().adminChat(player))){ + if(!mcPermissions.getInstance().adminChat(player)){ + player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +" Insufficient permissions."); + return; + } event.setCancelled(true); if(mcConfig.getInstance().isPartyToggled(player.getName())) mcConfig.getInstance().togglePartyChat(playerName); @@ -387,6 +406,10 @@ public class mcPlayerListener extends PlayerListener { } } if(split[0].equalsIgnoreCase("/myspawn")){ + if(!mcPermissions.getInstance().mySpawn(player)){ + player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +" Insufficient permissions."); + return; + } event.setCancelled(true); if(mcUsers.getProfile(player).getMySpawn(player) != null){ player.getInventory().clear(); @@ -397,15 +420,6 @@ public class mcPlayerListener extends PlayerListener { player.sendMessage(ChatColor.RED+"Configure your myspawn first with /setmyspawn"); } } - if(split[0].equalsIgnoreCase("/spawn")){ - event.setCancelled(true); - 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 onItemHeldChange(PlayerItemHeldEvent event) { Player player = event.getPlayer(); @@ -430,7 +444,7 @@ public class mcPlayerListener extends PlayerListener { } return; } - if(player.isOp() && mcConfig.getInstance().isAdminToggled(player.getName())){ + if((player.isOp() || mcPermissions.getInstance().adminChat(player)) && mcConfig.getInstance().isAdminToggled(player.getName())){ event.setCancelled(true); for(Player herp : plugin.getServer().getOnlinePlayers()){ if(herp.isOp()){ @@ -439,12 +453,5 @@ public class mcPlayerListener extends PlayerListener { } return; } - if(player.isOp()){ - event.setCancelled(true); - for(Player derp : plugin.getServer().getOnlinePlayers()){ - String z = ChatColor.RED + "<" + ChatColor.WHITE + player.getName() + ChatColor.RED + "> "+ChatColor.WHITE; - derp.sendMessage(z+event.getMessage()); - } - } } } \ No newline at end of file diff --git a/mcMMO/com/bukkit/nossr50/mcMMO/mcm.java b/mcMMO/com/bukkit/nossr50/mcMMO/mcm.java index b45feb7f5..2e937514e 100644 --- a/mcMMO/com/bukkit/nossr50/mcMMO/mcm.java +++ b/mcMMO/com/bukkit/nossr50/mcMMO/mcm.java @@ -358,7 +358,7 @@ public class mcm { } //DIRT SAND OR GRAVEL if(type == 3 || type == 13 || type == 2){ - if(Math.random() * 10 > 9){ + if(Math.random() * 100 > 95){ mcUsers.getProfile(player).skillUpExcavation(1); player.sendMessage(ChatColor.YELLOW+"Excavation skill increased by 1. Total ("+mcUsers.getProfile(player).getExcavationInt()+")"); @@ -411,14 +411,6 @@ public class mcm { is = new ItemStack(mat, 1, (byte)0, (byte)0); loc.getWorld().dropItemNaturally(loc, is); } - //CHANCE TO GET COAL - if(mcUsers.getProfile(player).getExcavationInt() > 125){ - if(Math.random() * 2000 > 1999){ - mat = Material.getMaterial(263); - is = new ItemStack(mat, 1, (byte)0, (byte)0); - loc.getWorld().dropItemNaturally(loc, is); - } - } } //GRASS OR DIRT if((type == 2 || type == 3) && mcUsers.getProfile(player).getExcavationInt() > 25){ @@ -446,6 +438,14 @@ public class mcm { loc.getWorld().dropItemNaturally(loc, is); } } + //CHANCE TO GET COAL + if(mcUsers.getProfile(player).getExcavationInt() > 125){ + if(Math.random() * 100 > 99){ + mat = Material.getMaterial(263); + is = new ItemStack(mat, 1, (byte)0, (byte)0); + loc.getWorld().dropItemNaturally(loc, is); + } + } } } public void woodCuttingProcCheck(Player player, Block block, Location loc){ diff --git a/mcMMO/plugin.yml b/mcMMO/plugin.yml index 97e610712..1fc3b319e 100644 --- a/mcMMO/plugin.yml +++ b/mcMMO/plugin.yml @@ -1,3 +1,3 @@ name: mcMMO main: com.bukkit.nossr50.mcMMO.mcMMO -version: 0.3.4 \ No newline at end of file +version: 0.4.1 \ No newline at end of file