2012-01-09 20:00:13 +01:00
/ *
This file is part of mcMMO .
mcMMO is free software : you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation , either version 3 of the License , or
( at your option ) any later version .
mcMMO is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with mcMMO . If not , see < http : //www.gnu.org/licenses/>.
* /
package com.gmail.nossr50 ;
import java.io.BufferedReader ;
import java.io.FileReader ;
import java.util.logging.Level ;
import java.util.logging.Logger ;
import org.bukkit.Bukkit ;
import org.bukkit.Location ;
import org.bukkit.block.Block ;
import org.bukkit.entity.* ;
import org.bukkit.inventory.ItemStack ;
import com.gmail.nossr50.config.* ;
import com.gmail.nossr50.datatypes.PlayerProfile ;
import com.gmail.nossr50.datatypes.SkillType ;
2012-02-15 22:57:48 +01:00
import com.gmail.nossr50.events.FakeBlockBreakEvent ;
2012-01-29 08:51:59 +01:00
import com.gmail.nossr50.events.McMMOItemSpawnEvent ;
2012-01-09 20:00:13 +01:00
public class m
{
public static final Logger log = Logger . getLogger ( " Minecraft " ) ;
/ *
* I ' m storing my misc functions / methods in here in an unorganized manner . Spheal with it .
* This is probably the most embarrassing part of my code for mcMMO
* I really should find an organized place for these things !
* /
public static String getCapitalized ( String target )
{
String firstLetter = target . substring ( 0 , 1 ) ;
String remainder = target . substring ( 1 ) ;
String capitalized = firstLetter . toUpperCase ( ) + remainder . toLowerCase ( ) ;
return capitalized ;
}
public static int getInt ( String string )
{
if ( isInt ( string ) )
{
return Integer . parseInt ( string ) ;
}
else
{
return 0 ;
}
}
public static boolean isDouble ( String string )
{
try
{
Double . parseDouble ( string ) ;
}
catch ( NumberFormatException nFE ) {
return false ;
}
return true ;
}
public static boolean shouldBeWatched ( Block block )
{
int id = block . getTypeId ( ) ;
2012-01-30 16:09:45 +01:00
return shouldBeWatched ( id ) ;
}
public static boolean shouldBeWatched ( int id ) {
2012-02-01 08:00:53 +01:00
return id = = 2 | | id = = 3 | | id = = 12 | | id = = 13 | | id = = 82 | | //Excavation
2012-02-01 16:23:36 +01:00
id = = 1 | | id = = 14 | | id = = 15 | | id = = 16 | | id = = 21 | | id = = 24 | | id = = 49 | | id = = 56 | | id = = 73 | | id = = 74 | | id = = 87 | | id = = 89 | | id = = 112 | | id = = 121 | | id = = 48 | | id = = 98 | | //Mining
2012-02-01 08:00:53 +01:00
id = = 17 | | id = = 37 | | id = = 38 | | id = = 39 | | id = = 40 | | id = = 81 | | id = = 83 | | id = = 86 | | id = = 91 | | id = = 103 | | id = = 106 | | id = = 111 | | //Woodcutting & Herbalism
2012-02-05 18:38:06 +01:00
id = = LoadProperties . anvilID ; //Anvil
2012-01-09 20:00:13 +01:00
}
public static int getPowerLevel ( Player player )
{
PlayerProfile PP = Users . getProfile ( player ) ;
int x = 0 ;
if ( mcPermissions . getInstance ( ) . taming ( player ) )
x + = PP . getSkillLevel ( SkillType . TAMING ) ;
if ( mcPermissions . getInstance ( ) . mining ( player ) )
x + = PP . getSkillLevel ( SkillType . MINING ) ;
if ( mcPermissions . getInstance ( ) . woodcutting ( player ) )
x + = PP . getSkillLevel ( SkillType . WOODCUTTING ) ;
if ( mcPermissions . getInstance ( ) . unarmed ( player ) )
x + = PP . getSkillLevel ( SkillType . UNARMED ) ;
if ( mcPermissions . getInstance ( ) . herbalism ( player ) )
x + = PP . getSkillLevel ( SkillType . HERBALISM ) ;
if ( mcPermissions . getInstance ( ) . excavation ( player ) )
x + = PP . getSkillLevel ( SkillType . EXCAVATION ) ;
if ( mcPermissions . getInstance ( ) . archery ( player ) )
x + = PP . getSkillLevel ( SkillType . ARCHERY ) ;
if ( mcPermissions . getInstance ( ) . swords ( player ) )
x + = PP . getSkillLevel ( SkillType . SWORDS ) ;
if ( mcPermissions . getInstance ( ) . axes ( player ) )
x + = PP . getSkillLevel ( SkillType . AXES ) ;
if ( mcPermissions . getInstance ( ) . acrobatics ( player ) )
x + = PP . getSkillLevel ( SkillType . ACROBATICS ) ;
if ( mcPermissions . getInstance ( ) . repair ( player ) )
x + = PP . getSkillLevel ( SkillType . REPAIR ) ;
if ( mcPermissions . getInstance ( ) . fishing ( player ) )
x + = PP . getSkillLevel ( SkillType . FISHING ) ;
return x ;
}
public static boolean blockBreakSimulate ( Block block , Player player )
{
FakeBlockBreakEvent event = new FakeBlockBreakEvent ( block , player ) ;
if ( block ! = null & & player ! = null ) {
Bukkit . getServer ( ) . getPluginManager ( ) . callEvent ( event ) ;
if ( ! event . isCancelled ( ) )
{
return true ; //Return true if not cancelled
} else {
return false ; //Return false if cancelled
}
} else {
return false ; //Return false if something went wrong
}
}
2012-02-14 19:33:49 +01:00
2012-01-09 20:00:13 +01:00
public static Integer getTier ( Player player )
{
int i = player . getItemInHand ( ) . getTypeId ( ) ;
if ( i = = 268 | | i = = 269 | | i = = 270 | | i = = 271 | | i = = 290 ) {
return 1 ; //WOOD
} else if ( i = = 272 | | i = = 273 | | i = = 274 | | i = = 275 | | i = = 291 ) {
return 2 ; //STONE
} else if ( i = = 256 | | i = = 257 | | i = = 258 | | i = = 267 | | i = = 292 ) {
return 3 ; //IRON
} else if ( i = = 283 | | i = = 284 | | i = = 285 | | i = = 286 | | i = = 294 ) {
return 1 ; //GOLD
} else if ( i = = 276 | | i = = 277 | | i = = 278 | | i = = 279 | | i = = 293 ) {
return 4 ; //DIAMOND
} else {
return 1 ; //UNRECOGNIZED
}
}
public static double getDistance ( Location loca , Location locb )
{
return Math . sqrt ( Math . pow ( loca . getX ( ) - locb . getX ( ) , 2 ) + Math . pow ( loca . getY ( ) - locb . getY ( ) , 2 )
+ Math . pow ( loca . getZ ( ) - locb . getZ ( ) , 2 ) ) ;
}
public static boolean abilityBlockCheck ( Block block )
{
int i = block . getTypeId ( ) ;
2012-02-05 18:38:06 +01:00
if ( i = = 107 | | i = = 117 | | i = = 116 | | i = = 96 | | i = = 68 | | i = = 355 | | i = = 26 | | i = = 323 | | i = = 25 | | i = = 54 | | i = = 69 | | i = = 92 | | i = = 77 | | i = = 58 | | i = = 61 | | i = = 62 | | i = = LoadProperties . anvilID | | i = = 71 | | i = = 64 | | i = = 84 | | i = = 324 | | i = = 330 ) {
2012-01-09 20:00:13 +01:00
return false ;
} else {
return true ;
}
}
2012-02-14 19:33:49 +01:00
2012-01-09 20:00:13 +01:00
public static boolean isInt ( String string )
{
try
{
Integer . parseInt ( string ) ;
}
catch ( NumberFormatException nFE )
{
return false ;
}
return true ;
}
2012-02-14 19:33:49 +01:00
2012-02-24 04:26:20 +01:00
public static void mcDropItems ( Location location , ItemStack is , int quantity )
2012-01-09 20:00:13 +01:00
{
2012-02-24 04:26:20 +01:00
for ( int i = 0 ; i < quantity ; i + + )
mcDropItem ( location , is ) ;
}
public static void mcRandomDropItem ( Location location , ItemStack is , int chance )
{
if ( Math . random ( ) * 100 < chance )
mcDropItem ( location , is ) ;
}
public static void mcRandomDropItems ( Location location , ItemStack is , int chance , int quantity )
{
for ( int i = 0 ; i < quantity ; i + + )
mcRandomDropItem ( location , is , chance ) ;
2012-01-29 08:51:59 +01:00
}
public static void mcDropItem ( Location location , ItemStack itemStack ) {
// We can't get the item until we spawn it and we want to make it cancellable, so we have a custom event.
McMMOItemSpawnEvent event = new McMMOItemSpawnEvent ( location , itemStack ) ;
Bukkit . getPluginManager ( ) . callEvent ( event ) ;
if ( event . isCancelled ( ) ) return ;
location . getWorld ( ) . dropItemNaturally ( location , itemStack ) ;
2012-01-09 20:00:13 +01:00
}
public static boolean isSwords ( ItemStack is )
{
2012-01-26 18:31:52 +01:00
int id = is . getTypeId ( ) ;
return id = = 268 | | id = = 267 | | id = = 272 | | id = = 283 | | id = = 276 ;
2012-01-09 20:00:13 +01:00
}
public static boolean isHoe ( ItemStack is )
{
int id = is . getTypeId ( ) ;
return id = = 290 | | id = = 291 | | id = = 292 | | id = = 293 | | id = = 294 ;
}
2012-01-26 18:31:52 +01:00
public static boolean isShovel ( ItemStack is )
{
int id = is . getTypeId ( ) ;
return id = = 269 | | id = = 273 | | id = = 277 | | id = = 284 | | id = = 256 ;
2012-01-09 20:00:13 +01:00
}
2012-01-26 18:31:52 +01:00
public static boolean isAxes ( ItemStack is )
{
int id = is . getTypeId ( ) ;
return id = = 271 | | id = = 258 | | id = = 286 | | id = = 279 | | id = = 275 ;
2012-01-09 20:00:13 +01:00
}
2012-01-26 18:31:52 +01:00
2012-01-09 20:00:13 +01:00
public static boolean isMiningPick ( ItemStack is )
{
2012-01-26 18:31:52 +01:00
int id = is . getTypeId ( ) ;
return id = = 270 | | id = = 274 | | id = = 285 | | id = = 257 | | id = = 278 ;
2012-01-09 20:00:13 +01:00
}
2012-02-14 19:33:49 +01:00
2012-02-24 00:32:12 +01:00
public static boolean isHelmet ( ItemStack is )
{
int id = is . getTypeId ( ) ;
return id = = 298 | | id = = 306 | | id = = 310 | | id = = 314 ;
}
public static boolean isChestplate ( ItemStack is )
{
int id = is . getTypeId ( ) ;
return id = = 299 | | id = = 307 | | id = = 311 | | id = = 315 ;
}
public static boolean isPants ( ItemStack is )
{
int id = is . getTypeId ( ) ;
return id = = 300 | | id = = 308 | | id = = 312 | | id = = 316 ;
}
public static boolean isBoots ( ItemStack is )
{
int id = is . getTypeId ( ) ;
return id = = 301 | | id = = 305 | | id = = 313 | | id = = 317 ;
}
2012-01-09 20:00:13 +01:00
public static void convertToMySQL ( )
{
if ( ! LoadProperties . useMySQL )
return ;
Bukkit . getScheduler ( ) . scheduleAsyncDelayedTask ( Bukkit . getServer ( ) . getPluginManager ( ) . getPlugin ( " mcMMO " ) , new Runnable ( ) {
public void run ( ) {
String location = " plugins/mcMMO/FlatFileStuff/mcmmo.users " ;
try {
//Open the user file
FileReader file = new FileReader ( location ) ;
BufferedReader in = new BufferedReader ( file ) ;
String line = " " ;
String playerName = null , mining = null , party = null , miningXP = null , woodcutting = null , woodCuttingXP = null , repair = null , unarmed = null , herbalism = null , excavation = null , archery = null , swords = null , axes = null , acrobatics = null , repairXP = null , unarmedXP = null , herbalismXP = null , excavationXP = null , archeryXP = null , swordsXP = null , axesXP = null , acrobaticsXP = null , taming = null , tamingXP = null , fishing = null , fishingXP = null ;
int id = 0 , theCount = 0 ;
while ( ( line = in . readLine ( ) ) ! = null ) {
//Find if the line contains the player we want.
String [ ] character = line . split ( " : " ) ;
playerName = character [ 0 ] ;
//Check for things we don't want put in the DB
if ( playerName = = null
| | playerName . equals ( " null " )
| | playerName
. equals ( " #Storage place for user information " ) )
continue ;
//Get Mining
if ( character . length > 1 )
mining = character [ 1 ] ;
//Party
if ( character . length > 3 )
party = character [ 3 ] ;
//Mining XP
if ( character . length > 4 )
miningXP = character [ 4 ] ;
if ( character . length > 5 )
woodcutting = character [ 5 ] ;
if ( character . length > 6 )
woodCuttingXP = character [ 6 ] ;
if ( character . length > 7 )
repair = character [ 7 ] ;
if ( character . length > 8 )
unarmed = character [ 8 ] ;
if ( character . length > 9 )
herbalism = character [ 9 ] ;
if ( character . length > 10 )
excavation = character [ 10 ] ;
if ( character . length > 11 )
archery = character [ 11 ] ;
if ( character . length > 12 )
swords = character [ 12 ] ;
if ( character . length > 13 )
axes = character [ 13 ] ;
if ( character . length > 14 )
acrobatics = character [ 14 ] ;
if ( character . length > 15 )
repairXP = character [ 15 ] ;
if ( character . length > 16 )
unarmedXP = character [ 16 ] ;
if ( character . length > 17 )
herbalismXP = character [ 17 ] ;
if ( character . length > 18 )
excavationXP = character [ 18 ] ;
if ( character . length > 19 )
archeryXP = character [ 19 ] ;
if ( character . length > 20 )
swordsXP = character [ 20 ] ;
if ( character . length > 21 )
axesXP = character [ 21 ] ;
if ( character . length > 22 )
acrobaticsXP = character [ 22 ] ;
if ( character . length > 24 )
taming = character [ 24 ] ;
if ( character . length > 25 )
tamingXP = character [ 25 ] ;
if ( character . length > 34 )
fishing = character [ 34 ] ;
if ( character . length > 35 )
fishingXP = character [ 35 ] ;
//Check to see if the user is in the DB
id = mcMMO . database . GetInt ( " SELECT id FROM "
+ LoadProperties . MySQLtablePrefix
+ " users WHERE user = ' " + playerName + " ' " ) ;
if ( id > 0 ) {
theCount + + ;
//Update the skill values
mcMMO . database . Write ( " UPDATE "
+ LoadProperties . MySQLtablePrefix
+ " users SET lastlogin = " + 0
+ " WHERE id = " + id ) ;
//if(getDouble(x) > 0 && getDouble(y) > 0 && getDouble(z) > 0)
//mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"spawn SET world = '" + myspawnworld + "', x = " +getDouble(x)+", y = "+getDouble(y)+", z = "+getDouble(z)+" WHERE user_id = "+id);
mcMMO . database . Write ( " UPDATE "
+ LoadProperties . MySQLtablePrefix
+ " skills SET " + " taming = taming+ "
+ getInt ( taming ) + " , mining = mining+ "
+ getInt ( mining ) + " , repair = repair+ "
+ getInt ( repair )
+ " , woodcutting = woodcutting+ "
+ getInt ( woodcutting )
+ " , unarmed = unarmed+ " + getInt ( unarmed )
+ " , herbalism = herbalism+ "
+ getInt ( herbalism )
+ " , excavation = excavation+ "
+ getInt ( excavation )
+ " , archery = archery+ " + getInt ( archery )
+ " , swords = swords+ " + getInt ( swords )
+ " , axes = axes+ " + getInt ( axes )
+ " , acrobatics = acrobatics+ "
+ getInt ( acrobatics )
+ " , fishing = fishing+ " + getInt ( fishing )
+ " WHERE user_id = " + id ) ;
mcMMO . database . Write ( " UPDATE "
+ LoadProperties . MySQLtablePrefix
+ " experience SET " + " taming = "
+ getInt ( tamingXP ) + " , mining = "
+ getInt ( miningXP ) + " , repair = "
+ getInt ( repairXP ) + " , woodcutting = "
+ getInt ( woodCuttingXP ) + " , unarmed = "
+ getInt ( unarmedXP ) + " , herbalism = "
+ getInt ( herbalismXP ) + " , excavation = "
+ getInt ( excavationXP ) + " , archery = "
+ getInt ( archeryXP ) + " , swords = "
+ getInt ( swordsXP ) + " , axes = "
+ getInt ( axesXP ) + " , acrobatics = "
+ getInt ( acrobaticsXP ) + " , fishing = "
+ getInt ( fishingXP ) + " WHERE user_id = "
+ id ) ;
} else {
theCount + + ;
//Create the user in the DB
mcMMO . database . Write ( " INSERT INTO "
+ LoadProperties . MySQLtablePrefix
+ " users (user, lastlogin) VALUES (' "
+ playerName + " ', "
+ System . currentTimeMillis ( ) / 1000 + " ) " ) ;
id = mcMMO . database
. GetInt ( " SELECT id FROM "
+ LoadProperties . MySQLtablePrefix
+ " users WHERE user = ' "
+ playerName + " ' " ) ;
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
+ " ) " ) ;
//Update the skill values
mcMMO . database . Write ( " UPDATE "
+ LoadProperties . MySQLtablePrefix
+ " users SET lastlogin = " + 0
+ " WHERE id = " + id ) ;
mcMMO . database . Write ( " UPDATE "
+ LoadProperties . MySQLtablePrefix
+ " users SET party = ' " + party
+ " ' WHERE id = " + id ) ;
/ *
if ( getDouble ( x ) > 0 & & getDouble ( y ) > 0 & & getDouble ( z ) > 0 )
mcMMO . database . Write ( " UPDATE " + LoadProperties . MySQLtablePrefix + " spawn SET world = ' " + myspawnworld + " ', x = " + getDouble ( x ) + " , y = " + getDouble ( y ) + " , z = " + getDouble ( z ) + " WHERE user_id = " + id ) ;
* /
mcMMO . database . Write ( " UPDATE "
+ LoadProperties . MySQLtablePrefix
+ " skills SET " + " taming = "
+ getInt ( taming ) + " , mining = "
+ getInt ( mining ) + " , repair = "
+ getInt ( repair ) + " , woodcutting = "
+ getInt ( woodcutting ) + " , unarmed = "
+ getInt ( unarmed ) + " , herbalism = "
+ getInt ( herbalism ) + " , excavation = "
+ getInt ( excavation ) + " , archery = "
+ getInt ( archery ) + " , swords = "
+ getInt ( swords ) + " , axes = "
+ getInt ( axes ) + " , acrobatics = "
+ getInt ( acrobatics ) + " , fishing = "
+ getInt ( fishing ) + " WHERE user_id = "
+ id ) ;
mcMMO . database . Write ( " UPDATE "
+ LoadProperties . MySQLtablePrefix
+ " experience SET " + " taming = "
+ getInt ( tamingXP ) + " , mining = "
+ getInt ( miningXP ) + " , repair = "
+ getInt ( repairXP ) + " , woodcutting = "
+ getInt ( woodCuttingXP ) + " , unarmed = "
+ getInt ( unarmedXP ) + " , herbalism = "
+ getInt ( herbalismXP ) + " , excavation = "
+ getInt ( excavationXP ) + " , archery = "
+ getInt ( archeryXP ) + " , swords = "
+ getInt ( swordsXP ) + " , axes = "
+ getInt ( axesXP ) + " , acrobatics = "
+ getInt ( acrobaticsXP ) + " , fishing = "
+ getInt ( fishingXP ) + " WHERE user_id = "
+ id ) ;
}
}
System . out
. println ( " [mcMMO] MySQL Updated from users file, "
+ theCount
+ " items added/updated to MySQL DB " ) ;
in . close ( ) ;
} catch ( Exception e ) {
log . log ( Level . SEVERE , " Exception while reading " + location
+ " (Are you sure you formatted it correctly?) " , e ) ;
}
}
} , 1 ) ;
}
2012-02-14 19:33:49 +01:00
}