diff --git a/mcMMO/Changelog.txt b/mcMMO/Changelog.txt index 288d16da1..4ee122193 100644 --- a/mcMMO/Changelog.txt +++ b/mcMMO/Changelog.txt @@ -1,6 +1,8 @@ Changelog: #Versions without changelogs probably had very small misc fixes, like tweaks to the source code# Version 1.0 +Added Leaf Blower to WoodCutting +Different Trees give different WoodCutting XP Water changing Gravel to Clay removed Code Organized/Optimized further MySQL Support diff --git a/mcMMO/com/gmail/nossr50/Database.java b/mcMMO/com/gmail/nossr50/Database.java index edf72db99..d3f7f29f7 100644 --- a/mcMMO/com/gmail/nossr50/Database.java +++ b/mcMMO/com/gmail/nossr50/Database.java @@ -40,13 +40,13 @@ public class Database { } //Create the DB structure public void createStructure(){ - Write("CREATE TABLE IF NOT EXISTS `users` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT," + + Write("CREATE TABLE IF NOT EXISTS `"+LoadProperties.MySQLtablePrefix+"users` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT," + "`user` varchar(30) NOT NULL," + - "`lastlogin` int(10) unsigned NOT NULL," + + "`lastlogin` int(32) unsigned NOT NULL," + "`party` varchar(100) NOT NULL DEFAULT ''," + "PRIMARY KEY (`id`)," + "UNIQUE KEY `user` (`user`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;"); - Write("CREATE TABLE IF NOT EXISTS `skills` (`user_id` int(10) unsigned NOT NULL," + + Write("CREATE TABLE IF NOT EXISTS `"+LoadProperties.MySQLtablePrefix+"skills` (`user_id` int(10) unsigned NOT NULL," + "`taming` int(10) unsigned NOT NULL DEFAULT '0'," + "`mining` int(10) unsigned NOT NULL DEFAULT '0'," + "`woodcutting` int(10) unsigned NOT NULL DEFAULT '0'," + @@ -59,7 +59,7 @@ public class Database { "`axes` int(10) unsigned NOT NULL DEFAULT '0'," + "`acrobatics` int(10) unsigned NOT NULL DEFAULT '0'," + "PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;"); - Write("CREATE TABLE IF NOT EXISTS `experience` (`user_id` int(10) unsigned NOT NULL," + + Write("CREATE TABLE IF NOT EXISTS `"+LoadProperties.MySQLtablePrefix+"experience` (`user_id` int(10) unsigned NOT NULL," + "`taming` int(10) unsigned NOT NULL DEFAULT '0'," + "`mining` int(10) unsigned NOT NULL DEFAULT '0'," + "`woodcutting` int(10) unsigned NOT NULL DEFAULT '0'," + @@ -72,10 +72,10 @@ public class Database { "`axes` int(10) unsigned NOT NULL DEFAULT '0'," + "`acrobatics` int(10) unsigned NOT NULL DEFAULT '0'," + "PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;"); - Write("CREATE TABLE IF NOT EXISTS `spawn` (`user_id` int(10) NOT NULL," + - "`x` int(11) NOT NULL DEFAULT '0'," + - "`y` int(11) NOT NULL DEFAULT '0'," + - "`z` int(11) NOT NULL DEFAULT '0'," + + Write("CREATE TABLE IF NOT EXISTS `"+LoadProperties.MySQLtablePrefix+"spawn` (`user_id` int(10) NOT NULL," + + "`x` int(64) NOT NULL DEFAULT '0'," + + "`y` int(64) NOT NULL DEFAULT '0'," + + "`z` int(64) NOT NULL DEFAULT '0'," + "`world` varchar(50) NOT NULL DEFAULT ''," + "PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;"); } diff --git a/mcMMO/com/gmail/nossr50/config/LoadProperties.java b/mcMMO/com/gmail/nossr50/config/LoadProperties.java index 41e896aca..67061e8f0 100644 --- a/mcMMO/com/gmail/nossr50/config/LoadProperties.java +++ b/mcMMO/com/gmail/nossr50/config/LoadProperties.java @@ -4,7 +4,7 @@ import com.gmail.nossr50.mcMMO; public class LoadProperties { public static Boolean useMySQL, cocoabeans, archeryFireRateLimit, mushrooms, toolsLoseDurabilityFromAbilities, pvpxp, miningrequirespickaxe, woodcuttingrequiresaxe, pvp, eggs, apples, myspawnclearsinventory, cake, music, diamond, glowstone, slowsand, sulphur, netherrack, bones, coal, clay, anvilmessages; - public static String MySQLuserName, MySQLserverName, MySQLdbName, MySQLdbPass, mctop, addxp, mcability, mcmmo, mcc, mcrefresh, mcitem, mcgod, stats, mmoedit, ptp, party, myspawn, setmyspawn, whois, invite, accept, clearmyspawn; + public static String MySQLtablePrefix, MySQLuserName, MySQLserverName, MySQLdbName, MySQLdbPass, mctop, addxp, mcability, mcmmo, mcc, mcrefresh, mcitem, mcgod, stats, mmoedit, ptp, party, myspawn, setmyspawn, whois, invite, accept, clearmyspawn; public static int MySQLport, xpGainMultiplier, superBreakerCooldown, greenTerraCooldown, gigaDrillBreakerCooldown, treeFellerCooldown, berserkCooldown, serratedStrikeCooldown, skullSplitterCooldown, abilityDurabilityLoss, feathersConsumedByChimaeraWing, pvpxprewardmodifier, repairdiamondlevel, globalxpmodifier, tamingxpmodifier, miningxpmodifier, repairxpmodifier, woodcuttingxpmodifier, unarmedxpmodifier, herbalismxpmodifier, excavationxpmodifier, archeryxpmodifier, swordsxpmodifier, axesxpmodifier, acrobaticsxpmodifier; public static void loadMain(){ @@ -31,6 +31,7 @@ public class LoadProperties { MySQLdbPass = properties.getString("MySQLdbPass", "defaultdbpass"); MySQLdbName = properties.getString("MySQLdbName", "defaultdbname"); MySQLuserName = properties.getString("MySQLuserName", "defaultusername"); + MySQLtablePrefix = properties.getString("MySQLTablePrefix", "mcmmo_"); MySQLport = properties.getInteger("MySQLport", 3306); useMySQL = properties.getBoolean("mysql", false); @@ -39,7 +40,6 @@ public class LoadProperties { */ archeryFireRateLimit = properties.getBoolean("archeryFireRateLimit", true); - myspawnclearsinventory = properties.getBoolean("mySpawnClearsInventory", true); xpGainMultiplier = properties.getInteger("xpGainMultiplier", 1); toolsLoseDurabilityFromAbilities = properties.getBoolean("toolsLoseDurabilityFromAbilities", true); abilityDurabilityLoss = properties.getInteger("abilityDurabilityLoss", 2); diff --git a/mcMMO/com/gmail/nossr50/config/mcProperties.java b/mcMMO/com/gmail/nossr50/config/mcProperties.java index 08c213cce..af8f1fa54 100644 --- a/mcMMO/com/gmail/nossr50/config/mcProperties.java +++ b/mcMMO/com/gmail/nossr50/config/mcProperties.java @@ -7,58 +7,58 @@ import java.io.IOException; import java.util.Properties; public class mcProperties extends Properties{ -//private static volatile mcProperties instance; -private String fileName; -public mcProperties(String file) { - this.fileName = file; -} -public void load() { - File file = new File(this.fileName); - if(file.exists()) { - try { - load(new FileInputStream(this.fileName)); + //private static volatile mcProperties instance; + private String fileName; + public mcProperties(String file) { + this.fileName = file; + } + public void load() { + File file = new File(this.fileName); + if(file.exists()) { + try { + load(new FileInputStream(this.fileName)); + } catch (IOException ex) { + + } + } + } + public void save(String start){ + try{ + store(new FileOutputStream(this.fileName), start); } catch (IOException ex) { } } -} -public void save(String start){ - try{ - store(new FileOutputStream(this.fileName), start); - } catch (IOException ex) { - + public int getInteger(String key, int value){ + if(containsKey(key)){ + return Integer.parseInt(getProperty(key)); + } + put(key, String.valueOf(value)); + return value; } -} -public int getInteger(String key, int value){ - if(containsKey(key)){ - return Integer.parseInt(getProperty(key)); + public String getString(String key, String value){ + if(containsKey(key)){ + return getProperty(key); + } + put(key, value); + return value; } - put(key, String.valueOf(value)); - return value; -} -public String getString(String key, String value){ - if(containsKey(key)){ - return getProperty(key); + public Boolean getBoolean(String key, boolean value) { + if (containsKey(key)) { + String boolString = getProperty(key); + return (boolString.length() > 0) + && (boolString.toLowerCase().charAt(0) == 't'); + } + put(key, value ? "true" : "false"); + return value; } - put(key, value); - return value; -} -public Boolean getBoolean(String key, boolean value) { - if (containsKey(key)) { - String boolString = getProperty(key); - return (boolString.length() > 0) - && (boolString.toLowerCase().charAt(0) == 't'); - } - put(key, value ? "true" : "false"); - return value; -} -public double getDouble(String key, double value) { - if (containsKey(key)) { - return Double.parseDouble(getProperty(key)); + public double getDouble(String key, double value) { + if (containsKey(key)) { + return Double.parseDouble(getProperty(key)); + } + + put(key, String.valueOf(value)); + return value; } - put(key, String.valueOf(value)); - return value; -} - } diff --git a/mcMMO/com/gmail/nossr50/datatypes/PlayerProfile.java b/mcMMO/com/gmail/nossr50/datatypes/PlayerProfile.java index 06d8ae5c4..bb8b98ac3 100644 --- a/mcMMO/com/gmail/nossr50/datatypes/PlayerProfile.java +++ b/mcMMO/com/gmail/nossr50/datatypes/PlayerProfile.java @@ -67,23 +67,17 @@ public class PlayerProfile public boolean loadMySQL(Player p) { - /* returns a list of all the users ordered by their username - HashMap> userslist = mcMMO.database.Read("SELECT id, lastlogin, party FROM users ORDER BY user"); - for(int i=1;i<=userslist.size();i++) { - System.out.println("User: " + userslist.get(i).get(0) + ", Lastlogin: " + userslist.get(i).get(1)); - } - */ Integer id = 0; - id = mcMMO.database.GetInt("SELECT id FROM users WHERE user = '" + p.getName() + "'"); + id = mcMMO.database.GetInt("SELECT id FROM "+LoadProperties.MySQLtablePrefix+"users WHERE user = '" + p.getName() + "'"); this.userid = id; if (id > 0) { - HashMap> users = mcMMO.database.Read("SELECT lastlogin, party FROM users WHERE id = " + id); + HashMap> users = mcMMO.database.Read("SELECT lastlogin, party FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = " + id); lastlogin = Integer.parseInt(users.get(1).get(0)); party = users.get(1).get(1); - HashMap> spawn = mcMMO.database.Read("SELECT world, x, y, z FROM spawn WHERE user_id = " + id); + HashMap> spawn = mcMMO.database.Read("SELECT world, x, y, z FROM "+LoadProperties.MySQLtablePrefix+"spawn WHERE user_id = " + id); myspawnworld = spawn.get(1).get(0); myspawn = spawn.get(1).get(1) + "," + spawn.get(1).get(2) + "," + spawn.get(1).get(3); - HashMap> skills = mcMMO.database.Read("SELECT taming, mining, repair, woodcutting, unarmed, herbalism, excavation, archery, swords, axes, acrobatics FROM skills WHERE user_id = " + id); + HashMap> skills = mcMMO.database.Read("SELECT taming, mining, repair, woodcutting, unarmed, herbalism, excavation, archery, swords, axes, acrobatics FROM "+LoadProperties.MySQLtablePrefix+"skills WHERE user_id = " + id); taming = skills.get(1).get(0); mining = skills.get(1).get(1);; repair = skills.get(1).get(2);; @@ -95,7 +89,7 @@ public class PlayerProfile swords = skills.get(1).get(8); axes = skills.get(1).get(9); acrobatics = skills.get(1).get(10); - HashMap> experience = mcMMO.database.Read("SELECT taming, mining, repair, woodcutting, unarmed, herbalism, excavation, archery, swords, axes, acrobatics FROM experience WHERE user_id = " + id); + HashMap> experience = mcMMO.database.Read("SELECT taming, mining, repair, woodcutting, unarmed, herbalism, excavation, archery, swords, axes, acrobatics FROM "+LoadProperties.MySQLtablePrefix+"experience WHERE user_id = " + id); tamingXP = experience.get(1).get(0); miningXP = experience.get(1).get(1);; repairXP = experience.get(1).get(2);; @@ -115,13 +109,12 @@ public class PlayerProfile } public void addMySQLPlayer(Player p) { Integer id = 0; - mcMMO.database.Write("INSERT INTO users (user, lastlogin) VALUES ('" + p.getName() + "'," + System.currentTimeMillis() / 1000 +")"); - id = mcMMO.database.GetInt("SELECT id FROM users WHERE user = '" + p.getName() + "'"); - mcMMO.database.Write("INSERT INTO spawn (user_id) VALUES ("+id+")"); - mcMMO.database.Write("INSERT INTO skills (user_id) VALUES ("+id+")"); - mcMMO.database.Write("INSERT INTO experience (user_id) VALUES ("+id+")"); + mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"users (user, lastlogin) VALUES ('" + p.getName() + "'," + System.currentTimeMillis() / 1000 +")"); + id = mcMMO.database.GetInt("SELECT id FROM "+LoadProperties.MySQLtablePrefix+"users WHERE user = '" + p.getName() + "'"); + mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"spawn (user_id) VALUES ("+id+")"); + mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"skills (user_id) VALUES ("+id+")"); + mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"experience (user_id) VALUES ("+id+")"); this.userid = id; - } public boolean load() @@ -205,13 +198,12 @@ public class PlayerProfile public void save() { - Long timestamp = System.currentTimeMillis(); - + Long timestamp = System.currentTimeMillis()/1000; //Convert to seconds // if we are using mysql save to database if (LoadProperties.useMySQL) { - mcMMO.database.Write("UPDATE users SET lastlogin = " + timestamp.intValue() + " WHERE id = " + this.userid); - mcMMO.database.Write("UPDATE spawn SET world = '" + this.myspawnworld + "', x = " +getX()+", y = "+getY()+", z = "+getZ()+" WHERE user_id = "+this.userid); - mcMMO.database.Write("UPDATE skills SET " + mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"users SET lastlogin = " + timestamp.intValue() + " WHERE id = " + this.userid); + mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"spawn SET world = '" + this.myspawnworld + "', x = " +getX()+", y = "+getY()+", z = "+getZ()+" WHERE user_id = "+this.userid); + mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"skills SET " +" taming = "+taming +", mining = "+mining +", repair = "+repair @@ -224,7 +216,7 @@ public class PlayerProfile +", axes = "+axes +", acrobatics = "+acrobatics +" WHERE user_id = "+this.userid); - mcMMO.database.Write("UPDATE experience SET " + mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"experience SET " +" taming = "+tamingXP +", mining = "+miningXP +", repair = "+repairXP diff --git a/mcMMO/com/gmail/nossr50/m.java b/mcMMO/com/gmail/nossr50/m.java index 4e423ea4d..bbc3d4624 100644 --- a/mcMMO/com/gmail/nossr50/m.java +++ b/mcMMO/com/gmail/nossr50/m.java @@ -38,7 +38,6 @@ public class m { return false; } } - public static int getPowerLevel(Player player){ PlayerProfile PP = Users.getProfile(player); int x = 0; @@ -346,8 +345,13 @@ public class m { player.sendMessage(ChatColor.DARK_GRAY+"XP GAIN: "+ChatColor.WHITE+"Chopping down trees"); player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"EFFECTS"+ChatColor.RED+"[]---"); player.sendMessage(ChatColor.DARK_AQUA+"Tree Feller (ABILITY): "+ChatColor.GREEN+"Make trees explode"); + player.sendMessage(ChatColor.DARK_AQUA+"Leaf Blower: "+ChatColor.GREEN+"Blow Away Leaves"); player.sendMessage(ChatColor.DARK_AQUA+"Double Drops: "+ChatColor.YELLOW+ChatColor.GREEN+"Double the normal loot"); player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"YOUR STATS"+ChatColor.RED+"[]---"); + if(PP.getWoodCuttingInt() < 100) + player.sendMessage(ChatColor.GRAY+"LOCKED UNTIL 100+ SKILL (LEAF BLOWER)"); + else + player.sendMessage(ChatColor.RED+"Leaf Blower: "+ChatColor.YELLOW+"Blow away leaves"); player.sendMessage(ChatColor.RED+"Double Drop Chance: "+ChatColor.YELLOW+percentage+"%"); player.sendMessage(ChatColor.RED+"Tree Feller Length: "+ChatColor.YELLOW+ticks+"s"); } diff --git a/mcMMO/com/gmail/nossr50/mcBlockListener.java b/mcMMO/com/gmail/nossr50/mcBlockListener.java index 162ca3ff9..08862dd6b 100644 --- a/mcMMO/com/gmail/nossr50/mcBlockListener.java +++ b/mcMMO/com/gmail/nossr50/mcBlockListener.java @@ -96,13 +96,29 @@ public class mcBlockListener extends BlockListener { if(m.isAxes(inhand)){ if(!Config.getInstance().isBlockWatched(block)){ WoodCutting.woodCuttingProcCheck(player, block); - PP.addWoodcuttingXP(7 * LoadProperties.xpGainMultiplier); + //Default + if(block.getData() == (byte)0) + PP.addWoodcuttingXP(7 * LoadProperties.xpGainMultiplier); + //Spruce + if(block.getData() == (byte)1) + PP.addWoodcuttingXP(8 * LoadProperties.xpGainMultiplier); + //Birch + if(block.getData() == (byte)2) + PP.addWoodcuttingXP(9 * LoadProperties.xpGainMultiplier); } } } else { - if(block.getData() != 5){ + if(!Config.getInstance().isBlockWatched(block)){ WoodCutting.woodCuttingProcCheck(player, block); - PP.addWoodcuttingXP(7 * LoadProperties.xpGainMultiplier); + //Default + if(block.getData() == (byte)0) + PP.addWoodcuttingXP(7 * LoadProperties.xpGainMultiplier); + //Spruce + if(block.getData() == (byte)1) + PP.addWoodcuttingXP(8 * LoadProperties.xpGainMultiplier); + //Birch + if(block.getData() == (byte)2) + PP.addWoodcuttingXP(9 * LoadProperties.xpGainMultiplier); } } Skills.XpCheck(player); @@ -132,9 +148,11 @@ public class mcBlockListener extends BlockListener { } } if(blockx.getTypeId() == 18){ - mat = Material.getMaterial(6); - item = new ItemStack(mat, 1, (byte)0, (byte) 0); - if(Math.random() * 10 > 8) + mat = Material.SAPLING; + + item = new ItemStack(mat, 1, (short)0, blockx.getData()); + + if(Math.random() * 10 > 9) blockx.getLocation().getWorld().dropItemNaturally(blockx.getLocation(), item); } blockx.setType(Material.AIR); @@ -160,7 +178,7 @@ public class mcBlockListener extends BlockListener { Herbalism.herbalismProcCheck(block, player, event); //Change the byte back when broken - if(block.getData() == 5) + if(block.getData() == 5 && m.shouldBeWatched(block)) block.setData((byte) 0); } public void onBlockDamage(BlockDamageEvent event) { @@ -249,6 +267,19 @@ public class mcBlockListener extends BlockListener { } } + /* + * LEAF BLOWER + */ + if(block.getTypeId() == 18 && mcPermissions.getInstance().woodcutting(player) && PP.getWoodCuttingInt() >= 100 && m.isAxes(player.getItemInHand()) && m.blockBreakSimulate(block, player, plugin)) + { + m.damageTool(player, (short)1); + if(Math.random() * 10 > 9) + { + ItemStack x = new ItemStack(Material.SAPLING, 1, (short)0, block.getData()); + block.getLocation().getWorld().dropItemNaturally(block.getLocation(), x); + } + block.setType(Material.AIR); + } } public void onBlockFromTo(BlockFromToEvent event) { diff --git a/mcMMO/com/gmail/nossr50/mcMMO.java b/mcMMO/com/gmail/nossr50/mcMMO.java index 836ae9290..0c32dcf74 100644 --- a/mcMMO/com/gmail/nossr50/mcMMO.java +++ b/mcMMO/com/gmail/nossr50/mcMMO.java @@ -103,7 +103,7 @@ public class mcMMO extends JavaPlugin { mcLoadMySQL(); database.createStructure(); //Make Structure - Leaderboard.makeLeaderboards(); //Make the leaderboards + //Leaderboard.makeLeaderboards(); //Make the leaderboards System.out.println( pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" ); } diff --git a/mcMMO/com/gmail/nossr50/mcPlayerListener.java b/mcMMO/com/gmail/nossr50/mcPlayerListener.java index a0fc45e96..d9250bd05 100644 --- a/mcMMO/com/gmail/nossr50/mcPlayerListener.java +++ b/mcMMO/com/gmail/nossr50/mcPlayerListener.java @@ -1,5 +1,7 @@ package com.gmail.nossr50; +import java.util.ArrayList; +import java.util.HashMap; import java.util.logging.Level; import java.util.logging.Logger; @@ -99,6 +101,7 @@ public class mcPlayerListener extends PlayerListener { { Block targetBlock = player.getTargetBlock(null, 20); player.sendMessage("Target Block TypeID = "+targetBlock.getTypeId()); + player.sendMessage("Target Block Byte Data = "+targetBlock.getData()); } } if(player.getItemInHand().getTypeId() == 261 && LoadProperties.archeryFireRateLimit){ @@ -199,112 +202,185 @@ public class mcPlayerListener extends PlayerListener { PP.toggleAbilityUse(); } } + if(split[0].equalsIgnoreCase("/details")){ + event.setCancelled(true); + player.sendMessage("Material : "+player.getItemInHand().getType()); + player.sendMessage("Type ID : "+player.getItemInHand().getTypeId()); + player.sendMessage("Byte Data : "+player.getItemInHand().getDurability()); + } /* * LEADER BOARD COMMAND */ - if(split[0].equalsIgnoreCase("/"+LoadProperties.mctop)){ event.setCancelled(true); - //Format: /top - + if(LoadProperties.useMySQL == false){ + /* + * POWER LEVEL INFO RETRIEVAL + */ + if(split.length == 1){ + int p = 1; + String[] info = Leaderboard.retrieveInfo("powerlevel", p); + player.sendMessage(ChatColor.YELLOW+"--MMO"+ChatColor.BLUE+" Power Level "+ChatColor.YELLOW+"Leaderboard--"); + int n = 1 * p; //Position + for(String x : info){ + if(x != null){ + String digit = String.valueOf(n); + if(n < 10) + digit ="0"+String.valueOf(n); + String[] splitx = x.split(":"); + //Format: 1. Playername - skill value + player.sendMessage(digit+". "+ChatColor.GREEN+splitx[1]+" - "+ChatColor.WHITE+splitx[0]); + n++; + } + } + } + if(split.length >= 2 && Leaderboard.isInt(split[1])){ + int p = 1; + //Grab page value if specified + if(split.length >= 2){ + if(Leaderboard.isInt(split[1])){ + p = Integer.valueOf(split[1]); + } + } + int pt = p; + if(p > 1){ + pt -= 1; + pt += (pt * 10); + pt = 10; + } + String[] info = Leaderboard.retrieveInfo("powerlevel", p); + player.sendMessage("--MMO Power Level Leaderboard--"); + int n = 1 * pt; //Position + for(String x : info){ + if(x != null){ + String digit = String.valueOf(n); + if(n < 10) + digit ="0"+String.valueOf(n); + String[] splitx = x.split(":"); + //Format: 1. Playername - skill value + player.sendMessage(digit+". "+ChatColor.GREEN+splitx[1]+" - "+ChatColor.WHITE+splitx[0]); + n++; + } + } + } + /* + * SKILL SPECIFIED INFO RETRIEVAL + */ + if(split.length >= 2 && Skills.isSkill(split[1])){ + int p = 1; + //Grab page value if specified + if(split.length >= 3){ + if(Leaderboard.isInt(split[2])){ + p = Integer.valueOf(split[2]); + } + } + int pt = p; + if(p > 1){ + pt -= 1; + pt += (pt * 10); + pt = 10; + } + String firstLetter = split[1].substring(0,1); // Get first letter + String remainder = split[1].substring(1); // Get remainder of word. + String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase(); + + String[] info = Leaderboard.retrieveInfo(split[1].toLowerCase(), p); + player.sendMessage(ChatColor.YELLOW+"--MMO "+ChatColor.BLUE+capitalized+ChatColor.YELLOW+" Leaderboard--"); + int n = 1 * pt; //Position + for(String x : info){ + if(x != null){ + String digit = String.valueOf(n); + if(n < 10) + digit ="0"+String.valueOf(n); + String[] splitx = x.split(":"); + //Format: 1. Playername - skill value + player.sendMessage(digit+". "+ChatColor.GREEN+splitx[1]+" - "+ChatColor.WHITE+splitx[0]); + n++; + } + } + } + } else /* - * POWER LEVEL INFO RETRIEVAL - */ - if(split.length == 1){ - int p = 1; - String[] info = Leaderboard.retrieveInfo("powerlevel", p); - player.sendMessage(ChatColor.YELLOW+"--MMO"+ChatColor.BLUE+" Power Level "+ChatColor.YELLOW+"Leaderboard--"); - int n = 1 * p; //Position - for(String x : info){ - if(x != null){ - String digit = String.valueOf(n); - if(n < 10) - digit ="0"+String.valueOf(n); - String[] splitx = x.split(":"); - //Format: 1. Playername - skill value - player.sendMessage(digit+". "+ChatColor.GREEN+splitx[1]+" - "+ChatColor.WHITE+splitx[0]); - n++; - } + * MYSQL LEADERBOARDS + */ + { + if(split.length >= 2 && Skills.isSkill(split[1])) + { + /* + * Create a nice consistent capitalized leaderboard name + */ + String lowercase = split[1].toLowerCase(); //For the query + String firstLetter = split[1].substring(0,1); //Get first letter + String remainder = split[1].substring(1); //Get remainder of word. + String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase(); + + player.sendMessage(ChatColor.YELLOW+"--mcMMO "+ChatColor.BLUE+capitalized+ChatColor.YELLOW+" Leaderboard--"); + if(split.length >= 3 && m.isInt(split[2])) + { + int n = 1; //For the page number + int n2 = Integer.valueOf(split[2]); + if(n2 > 1) + { + //Figure out the 'page' here + n = 10; + n = n * (n2-1); + } + //If a page number is specified + HashMap> userslist = mcMMO.database.Read("SELECT "+lowercase+", user_id FROM " + +LoadProperties.MySQLtablePrefix+"skills ORDER BY `"+LoadProperties.MySQLtablePrefix+"skills`.`"+lowercase+"` DESC "); + + for(int i=n;i<=n+10;i++) + { + HashMap> username = mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'"); + player.sendMessage(String.valueOf(i)+". "+ChatColor.GREEN+userslist.get(i).get(0)+" - "+ChatColor.WHITE+username.get(1).get(0)); + } + return; + } + //If no page number is specified + HashMap> userslist = mcMMO.database.Read("SELECT "+lowercase+", user_id FROM " + +LoadProperties.MySQLtablePrefix+"skills ORDER BY `"+LoadProperties.MySQLtablePrefix+"skills`.`"+lowercase+"` DESC "); + for(int i=1;i<=10;i++) //i<=userslist.size() + { + HashMap> username = mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'"); + player.sendMessage(String.valueOf(i)+". "+ChatColor.GREEN+userslist.get(i).get(0)+" - "+ChatColor.WHITE+username.get(1).get(0)); + } } - } - if(split.length >= 2 && Leaderboard.isInt(split[1])){ - int p = 1; - //Grab page value if specified - if(split.length >= 2){ - if(Leaderboard.isInt(split[1])){ - p = Integer.valueOf(split[1]); - } - } - int pt = p; - if(p > 1){ - pt -= 1; - pt += (pt * 10); - pt = 10; - } - String[] info = Leaderboard.retrieveInfo("powerlevel", p); - player.sendMessage("--MMO Power Level Leaderboard--"); - int n = 1 * pt; //Position - for(String x : info){ - if(x != null){ - String digit = String.valueOf(n); - if(n < 10) - digit ="0"+String.valueOf(n); - String[] splitx = x.split(":"); - //Format: 1. Playername - skill value - player.sendMessage(digit+". "+ChatColor.GREEN+splitx[1]+" - "+ChatColor.WHITE+splitx[0]); - n++; - } - } - } - /* - * SKILL SPECIFIED INFO RETRIEVAL - */ - if(split.length >= 2 && Skills.isSkill(split[1])){ - int p = 1; - //Grab page value if specified - if(split.length >= 3){ - if(Leaderboard.isInt(split[2])){ - p = Integer.valueOf(split[2]); - } - } - int pt = p; - if(p > 1){ - pt -= 1; - pt += (pt * 10); - pt = 10; - } - String firstLetter = split[1].substring(0,1); // Get first letter - String remainder = split[1].substring(1); // Get remainder of word. - String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase(); - - String[] info = Leaderboard.retrieveInfo(split[1].toLowerCase(), p); - player.sendMessage(ChatColor.YELLOW+"--MMO "+ChatColor.BLUE+capitalized+ChatColor.YELLOW+" Leaderboard--"); - int n = 1 * pt; //Position - for(String x : info){ - if(x != null){ - String digit = String.valueOf(n); - if(n < 10) - digit ="0"+String.valueOf(n); - String[] splitx = x.split(":"); - //Format: 1. Playername - skill value - player.sendMessage(digit+". "+ChatColor.GREEN+splitx[1]+" - "+ChatColor.WHITE+splitx[0]); - n++; - } + if(split.length >= 1) + { + player.sendMessage(ChatColor.YELLOW+"--mcMMO "+ChatColor.BLUE+"Power Level"+ChatColor.YELLOW+" Leaderboard--"); + if(split.length >= 2 && m.isInt(split[1])) + { + int n = 1; //For the page number + int n2 = Integer.valueOf(split[1]); + if(n2 > 1) + { + //Figure out the 'page' here + n = 10; + n = n * (n2-1); + } + //If a page number is specified + HashMap> userslist = mcMMO.database.Read("SELECT taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics, user_id FROM " + +LoadProperties.MySQLtablePrefix+"skills ORDER BY taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics DESC "); + for(int i=n;i<=n+10;i++) + { + HashMap> username = mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'"); + player.sendMessage(String.valueOf(i)+". "+ChatColor.GREEN+userslist.get(i).get(0)+" - "+ChatColor.WHITE+username.get(1).get(0)); + } + return; + } + HashMap> userslist = mcMMO.database.Read("SELECT taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics, user_id FROM " + +LoadProperties.MySQLtablePrefix+"skills ORDER BY taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics DESC "); + for(int i=1;i<=10;i++) + { + HashMap> username = mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'"); + player.sendMessage(String.valueOf(i)+". "+ChatColor.GREEN+userslist.get(i).get(0)+" - "+ChatColor.WHITE+username.get(1).get(0)); + //System.out.println(username.get(1).get(0)); + //System.out.println("Mining : " + userslist.get(i).get(0) + ", User id : " + userslist.get(i).get(1)); + } } } } - - /* - if(split[0].equalsIgnoreCase("/mutechat")){ - event.setCancelled(true); - if(PP.getPartyChatOnlyToggle() == true) - player.sendMessage("Party Chat Only "+ChatColor.RED+"Off"); - if(PP.getPartyChatOnlyToggle() == false) - player.sendMessage("Party Chat Only "+ChatColor.RED+"On"); - PP.togglePartyChatOnly(); - } - */ if(mcPermissions.getInstance().mcAbility(player) && split[0].equalsIgnoreCase("/"+LoadProperties.mcrefresh)){ event.setCancelled(true); if(!mcPermissions.getInstance().mcrefresh(player)){ @@ -460,14 +536,14 @@ public class mcPlayerListener extends PlayerListener { player.sendMessage("That is not a valid player"); } if(isPlayer(split[1])){ - Player target = getPlayer(split[1]); - PlayerProfile PPt = Users.getProfile(target); - if(PP.getParty().equals(PPt.getParty())){ - player.teleportTo(target); - player.sendMessage(ChatColor.GREEN+"You have teleported to "+target.getName()); - target.sendMessage(ChatColor.GREEN+player.getName() + " has teleported to you."); - } - } + Player target = getPlayer(split[1]); + PlayerProfile PPt = Users.getProfile(target); + if(PP.getParty().equals(PPt.getParty())){ + player.teleportTo(target); + player.sendMessage(ChatColor.GREEN+"You have teleported to "+target.getName()); + target.sendMessage(ChatColor.GREEN+player.getName() + " has teleported to you."); + } + } } /* * WHOIS COMMAND diff --git a/mcMMO/com/gmail/nossr50/mcTimer.java b/mcMMO/com/gmail/nossr50/mcTimer.java index 0377f78da..da66762ac 100644 --- a/mcMMO/com/gmail/nossr50/mcTimer.java +++ b/mcMMO/com/gmail/nossr50/mcTimer.java @@ -38,12 +38,12 @@ public class mcTimer extends TimerTask{ /* * PLAYER BLEED MONITORING */ - if(thecount % 2 == 0 && player != null && PP.getBleedTicks() >= 1){ + if(thecount % 2 == 0 && player != null && PP != null && PP.getBleedTicks() >= 1){ player.damage(2); PP.decreaseBleedTicks(); } - if(mcPermissions.getInstance().regeneration(player) && System.currentTimeMillis() >= PP.getRecentlyHurt() + 60000){ + if(mcPermissions.getInstance().regeneration(player) && PP != null && System.currentTimeMillis() >= PP.getRecentlyHurt() + 60000){ if(thecount == 10 || thecount == 20 || thecount == 30 || thecount == 40){ if(player != null && player.getHealth() > 0 && player.getHealth() < 20