Another WIP, some tweaks to WoodCutting and a working version of Leaderboards for MySQL.

This commit is contained in:
nossr50 2011-04-25 21:10:38 -07:00
parent d1a7e5b661
commit 947174c34e
10 changed files with 297 additions and 192 deletions

View File

@ -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

View File

@ -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;");
}

View File

@ -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);

View File

@ -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;
}
}

View File

@ -67,23 +67,17 @@ public class PlayerProfile
public boolean loadMySQL(Player p) {
/* returns a list of all the users ordered by their username
HashMap<Integer, ArrayList<String>> 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<Integer, ArrayList<String>> users = mcMMO.database.Read("SELECT lastlogin, party FROM users WHERE id = " + id);
HashMap<Integer, ArrayList<String>> 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<Integer, ArrayList<String>> spawn = mcMMO.database.Read("SELECT world, x, y, z FROM spawn WHERE user_id = " + id);
HashMap<Integer, ArrayList<String>> 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<Integer, ArrayList<String>> skills = mcMMO.database.Read("SELECT taming, mining, repair, woodcutting, unarmed, herbalism, excavation, archery, swords, axes, acrobatics FROM skills WHERE user_id = " + id);
HashMap<Integer, ArrayList<String>> 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<Integer, ArrayList<String>> experience = mcMMO.database.Read("SELECT taming, mining, repair, woodcutting, unarmed, herbalism, excavation, archery, swords, axes, acrobatics FROM experience WHERE user_id = " + id);
HashMap<Integer, ArrayList<String>> 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

View File

@ -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");
}

View File

@ -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) {

View File

@ -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!" );
}

View File

@ -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 <skillname> <pagenumber>
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<Integer, ArrayList<String>> 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<Integer, ArrayList<String>> 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<Integer, ArrayList<String>> 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<Integer, ArrayList<String>> 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<Integer, ArrayList<String>> 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<Integer, ArrayList<String>> 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<Integer, ArrayList<String>> 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<Integer, ArrayList<String>> 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

View File

@ -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