diff --git a/src/main/java/com/gmail/nossr50/Combat.java b/src/main/java/com/gmail/nossr50/Combat.java
index 8ceee7735..45b0f08d2 100644
--- a/src/main/java/com/gmail/nossr50/Combat.java
+++ b/src/main/java/com/gmail/nossr50/Combat.java
@@ -84,7 +84,7 @@ public class Combat {
}
else if (itemInHand.getType().equals(Material.AIR) && mcPermissions.getInstance().unarmed(attacker)) {
Unarmed.unarmedBonus(attacker, event);
-
+
if (PPa.getBerserkMode()) {
event.setDamage(damage + (damage / 2));
}
@@ -187,7 +187,7 @@ public class Combat {
else if (Math.random() * 1000 <= (PPd.getSkillLevel(SkillType.UNARMED) / 2)) {
deflect = true;
}
-
+
if (deflect) {
event.setCancelled(true);
defender.sendMessage(mcLocale.getString("Combat.ArrowDeflect"));
diff --git a/src/main/java/com/gmail/nossr50/listeners/mcBlockListener.java b/src/main/java/com/gmail/nossr50/listeners/mcBlockListener.java
index 5023ae91c..5eb93c4a7 100644
--- a/src/main/java/com/gmail/nossr50/listeners/mcBlockListener.java
+++ b/src/main/java/com/gmail/nossr50/listeners/mcBlockListener.java
@@ -1,5 +1,6 @@
package com.gmail.nossr50.listeners;
+import com.gmail.nossr50.BlockChecks;
import com.gmail.nossr50.ItemChecks;
import com.gmail.nossr50.Users;
import com.gmail.nossr50.m;
@@ -56,7 +57,7 @@ public class mcBlockListener implements Listener
Material mat = block.getType();
//Check if the blocks placed should be monitored so they do not give out XP in the future
- if(m.shouldBeWatched(mat))
+ if(BlockChecks.shouldBeWatched(mat))
{
//Only needed for blocks that use their block data (wood, pumpkins, etc.)
boolean shouldBeChanged = true;
@@ -171,7 +172,7 @@ public class mcBlockListener implements Listener
}
//Change the byte back when broken
- if(block.getData() == 5 && m.shouldBeWatched(block.getType()))
+ if(block.getData() == 5 && BlockChecks.shouldBeWatched(block.getType()))
{
block.setData((byte) 0);
if(plugin.misc.blockWatchList.contains(block))
@@ -192,7 +193,7 @@ public class mcBlockListener implements Listener
/*
* ABILITY PREPARATION CHECKS
*/
- if(m.abilityBlockCheck(mat))
+ if(BlockChecks.abilityBlockCheck(mat))
{
if(PP.getHoePreparationMode() && Herbalism.canBeGreenTerra(block))
Skills.abilityCheck(player, SkillType.HERBALISM);
@@ -300,7 +301,7 @@ public class mcBlockListener implements Listener
{
Block blockFrom = event.getBlock();
Block blockTo = event.getToBlock();
- if(m.shouldBeWatched(blockFrom.getType()) && blockFrom.getData() == (byte)5)
- blockTo.setData((byte)5);
- }
+ if(BlockChecks.shouldBeWatched(blockFrom.getType()) && blockFrom.getData() == (byte)5)
+ blockTo.setData((byte)5);
+ }
}
diff --git a/src/main/java/com/gmail/nossr50/listeners/mcPlayerListener.java b/src/main/java/com/gmail/nossr50/listeners/mcPlayerListener.java
index c57bccad3..a913ed1bf 100644
--- a/src/main/java/com/gmail/nossr50/listeners/mcPlayerListener.java
+++ b/src/main/java/com/gmail/nossr50/listeners/mcPlayerListener.java
@@ -28,6 +28,7 @@ import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.ItemStack;
+import com.gmail.nossr50.BlockChecks;
import com.gmail.nossr50.Combat;
import com.gmail.nossr50.Item;
import com.gmail.nossr50.ItemChecks;
@@ -177,7 +178,7 @@ public class mcPlayerListener implements Listener
player.updateInventory();
}
- if(LoadProperties.enableAbilities && m.abilityBlockCheck(mat))
+ if(LoadProperties.enableAbilities && BlockChecks.abilityBlockCheck(mat))
{
if(block != null && ItemChecks.isHoe(is) && !mat.equals(Material.DIRT) && !mat.equals(Material.GRASS) && !mat.equals(Material.SOIL))
Skills.activationCheck(player, SkillType.HERBALISM);
@@ -247,7 +248,7 @@ public class mcPlayerListener implements Listener
*/
if(action == Action.RIGHT_CLICK_AIR)
Item.itemchecks(player);
- if(action == Action.RIGHT_CLICK_BLOCK && m.abilityBlockCheck(mat))
+ if(action == Action.RIGHT_CLICK_BLOCK && BlockChecks.abilityBlockCheck(mat))
Item.itemchecks(player);
if(player.isSneaking() && mcPermissions.getInstance().taming(player) && (action == Action.LEFT_CLICK_AIR || action == Action.LEFT_CLICK_BLOCK))
@@ -337,4 +338,4 @@ public class mcPlayerListener implements Listener
event.getPlayer().chat(message.replaceFirst(command, plugin.aliasMap.get(command)));
}
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/gmail/nossr50/m.java b/src/main/java/com/gmail/nossr50/m.java
index 310954cca..7bd12b52a 100644
--- a/src/main/java/com/gmail/nossr50/m.java
+++ b/src/main/java/com/gmail/nossr50/m.java
@@ -7,7 +7,6 @@ import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.Location;
-import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.*;
import org.bukkit.event.entity.EntityDamageEvent;
@@ -73,54 +72,6 @@ public class m {
}
}
- /**
- * Checks to see if a block type awards XP.
- *
- * @param material Block type to check
- * @return true if the block type awards XP, false otherwise
- */
- public static boolean shouldBeWatched(Material material) {
- switch (material) {
- case BROWN_MUSHROOM:
- case CACTUS:
- case CLAY:
- case COAL_ORE:
- case DIAMOND_ORE:
- case DIRT:
- case ENDER_STONE:
- case GLOWING_REDSTONE_ORE:
- case GLOWSTONE:
- case GOLD_ORE:
- case GRASS:
- case GRAVEL:
- case IRON_ORE:
- case JACK_O_LANTERN:
- case LAPIS_ORE:
- case LOG:
- case MELON_BLOCK:
- case MOSSY_COBBLESTONE:
- case MYCEL:
- case NETHERRACK:
- case OBSIDIAN:
- case PUMPKIN:
- case RED_MUSHROOM:
- case RED_ROSE:
- case REDSTONE_ORE:
- case SAND:
- case SANDSTONE:
- case SOUL_SAND:
- case STONE:
- case SUGAR_CANE_BLOCK:
- case VINE:
- case WATER_LILY:
- case YELLOW_FLOWER:
- return true;
-
- default:
- return false;
- }
- }
-
/**
* Gets the power level of a player.
*
@@ -173,199 +124,282 @@ public class m {
* @param inHand The item to check the tier of
* @return the tier of the item
*/
- public static Integer getTier(ItemStack inHand)
- {
- if(Repair.isWoodTools(inHand))
- return 1;
- if(Repair.isStoneTools(inHand))
- return 2;
- if(Repair.isIronTools(inHand))
- return 3;
- if(Repair.isGoldTools(inHand))
- return 1;
- if(Repair.isDiamondTools(inHand))
- return 4;
-
- return 1;
+ public static Integer getTier(ItemStack inHand) {
+ int tier = 0;
+
+ if (Repair.isWoodTools(inHand)) {
+ tier = 1;
+ }
+ else if (Repair.isStoneTools(inHand)) {
+ tier = 2;
+ }
+ else if (Repair.isIronTools(inHand)) {
+ tier = 3;
+ }
+ else if(Repair.isGoldTools(inHand)) {
+ tier = 1;
+ }
+ else if(Repair.isDiamondTools(inHand))
+ tier = 4;
+
+ return tier;
}
-
+
+ /**
+ * Determine if two locations are near each other.
+ *
+ * @param first The first location
+ * @param second The second location
+ * @param maxDistance The max distance apart
+ * @return true if the distance between first
and second
is less than maxDistance
, false otherwise
+ */
public static boolean isNear(Location first, Location second, int maxDistance) {
double relX = first.getX() - second.getX();
double relY = first.getY() - second.getY();
double relZ = first.getZ() - second.getZ();
- double dist = relX * relX + relY * relY + relZ * relZ;
-
- if (dist < maxDistance * maxDistance)
+ double dist = (relX * relX) + (relY * relY) + (relZ * relZ);
+
+ if (dist < maxDistance * maxDistance) {
return true;
-
- return false;
- }
-
- public static boolean abilityBlockCheck(Material material)
- {
- switch(material){
- case BED_BLOCK:
- case BREWING_STAND:
- case BOOKSHELF:
- case BURNING_FURNACE:
- case CAKE_BLOCK:
- case CHEST:
- case DISPENSER:
- case ENCHANTMENT_TABLE:
- case FENCE_GATE:
- case FURNACE:
- case IRON_DOOR_BLOCK:
- case JUKEBOX:
- case LEVER:
- case NOTE_BLOCK:
- case STONE_BUTTON:
- case TRAP_DOOR:
- case WALL_SIGN:
- case WOODEN_DOOR:
- case WORKBENCH:
+ }
+ else {
return false;
}
-
- if(Material.getMaterial(LoadProperties.anvilID).equals(material))
- return false;
-
- return true;
}
-
- public static boolean isInt(String string)
- {
- try
- {
+
+ /**
+ * Determine if a string represents an Integer
+ *
+ * @param string String to check
+ * @return true if the string is an Integer, false otherwise
+ */
+ public static boolean isInt(String string) {
+ try {
Integer.parseInt(string);
+ return true;
}
- catch(NumberFormatException nFE)
- {
+ catch (NumberFormatException nFE) {
return false;
}
- return true;
}
-
- public static void mcDropItems(Location location, ItemStack is, int quantity)
- {
- for(int i = 0; i < quantity; i++)
+
+ /**
+ * Drop items at a given location.
+ *
+ * @param location The location to drop the items at
+ * @param is The items to drop
+ * @param quantity The amount of items to drop
+ */
+ public static void mcDropItems(Location location, ItemStack is, int quantity) {
+ 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)
+
+ /**
+ * Randomly drop an item at a given location.
+ *
+ * @param location The location to drop the items at
+ * @param is The item to drop
+ * @param chance The percentage chance for the item to drop
+ */
+ public static void mcRandomDropItem(Location location, ItemStack is, double 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++)
+
+ /**
+ * Randomly drop items at a given location.
+ *
+ * @param location The location to drop the items at
+ * @param is The item to drop
+ * @param chance The percentage chance for the item to drop
+ * @param quantity The amount of items to drop
+ */
+ public static void mcRandomDropItems(Location location, ItemStack is, int chance, int quantity) {
+ for(int i = 0; i < quantity; i++) {
mcRandomDropItem(location, is, chance);
+ }
}
-
+
+ /**
+ * Drop an item at a given location.
+ *
+ * @param location The location to drop the item at
+ * @param itemStack The item to drop
+ */
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);
+
+ if (event.isCancelled()) {
+ return;
+ }
+ else {
+ location.getWorld().dropItemNaturally(location, itemStack);
+ }
}
- public static boolean isOre(Block block)
- {
- switch (block.getType()) {
- case COAL_ORE:
- case DIAMOND_ORE:
- case GLOWING_REDSTONE_ORE:
- case GOLD_ORE:
- case IRON_ORE:
- case LAPIS_ORE:
- case REDSTONE_ORE:
- return true;
- }
- return false;
- }
-
- public static void convertToMySQL()
- {
- if(!LoadProperties.useMySQL)
+ /**
+ * Convert FlatFile data to MySQL data.
+ */
+ public static void convertToMySQL() {
+ if (!LoadProperties.useMySQL) {
return;
-
- Bukkit.getScheduler().scheduleAsyncDelayedTask(Bukkit.getServer().getPluginManager().getPlugin("mcMMO"), new Runnable(){
+ }
+
+ Bukkit.getScheduler().scheduleAsyncDelayedTask(Bukkit.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;
+ String playerName = null;
+ String party = null;
+ String mining = null;
+ String woodcutting = null;
+ String repair = null;
+ String unarmed = null;
+ String herbalism = null;
+ String excavation = null;
+ String archery = null;
+ String swords = null;
+ String axes = null;
+ String acrobatics = null;
+ String taming = null;
+ String fishing = null;
+ String miningXP = null;
+ String woodCuttingXP = null;
+ String repairXP = null;
+ String unarmedXP = null;
+ String herbalismXP = null;
+ String excavationXP = null;
+ String archeryXP = null;
+ String swordsXP = null;
+ String axesXP = null;
+ String acrobaticsXP = null;
+ String tamingXP = null;
+ String fishingXP = null;
+ int id = 0;
+ int 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)
+ //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;
+ }
+
+ if (character.length > 1) {
mining = character[1];
- //Party
- if (character.length > 3)
+ }
+
+ if (character.length > 3) {
party = character[3];
- //Mining XP
- if (character.length > 4)
+ }
+
+ if (character.length > 4) {
miningXP = character[4];
- if (character.length > 5)
+ }
+
+ if (character.length > 5) {
woodcutting = character[5];
- if (character.length > 6)
+ }
+
+ if (character.length > 6) {
woodCuttingXP = character[6];
- if (character.length > 7)
+ }
+
+ if (character.length > 7) {
repair = character[7];
- if (character.length > 8)
+ }
+
+ if (character.length > 8) {
unarmed = character[8];
- if (character.length > 9)
+ }
+
+ if (character.length > 9) {
herbalism = character[9];
- if (character.length > 10)
+ }
+
+ if (character.length > 10) {
excavation = character[10];
- if (character.length > 11)
+ }
+
+ if (character.length > 11) {
archery = character[11];
- if (character.length > 12)
+ }
+
+ if (character.length > 12) {
swords = character[12];
- if (character.length > 13)
+ }
+
+ if (character.length > 13) {
axes = character[13];
- if (character.length > 14)
+ }
+
+ if (character.length > 14) {
acrobatics = character[14];
- if (character.length > 15)
+ }
+
+ if (character.length > 15) {
repairXP = character[15];
- if (character.length > 16)
+ }
+
+ if (character.length > 16) {
unarmedXP = character[16];
- if (character.length > 17)
+ }
+
+ if (character.length > 17) {
herbalismXP = character[17];
- if (character.length > 18)
+ }
+
+ if (character.length > 18) {
excavationXP = character[18];
- if (character.length > 19)
+ }
+
+ if (character.length > 19) {
archeryXP = character[19];
- if (character.length > 20)
+ }
+
+ if (character.length > 20) {
swordsXP = character[20];
- if (character.length > 21)
+ }
+
+ if (character.length > 21) {
axesXP = character[21];
- if (character.length > 22)
+ }
+
+ if (character.length > 22) {
acrobaticsXP = character[22];
- if (character.length > 24)
+ }
+
+ if (character.length > 24) {
taming = character[24];
- if (character.length > 25)
+ }
+
+ if (character.length > 25) {
tamingXP = character[25];
- if (character.length > 34)
+ }
+
+ if (character.length > 34) {
fishing = character[34];
- if (character.length > 35)
+ }
+
+ if (character.length > 35) {
fishingXP = character[35];
+ }
//Check to see if the user is in the DB
id = mcMMO.database.getInt("SELECT id FROM "
@@ -374,6 +408,7 @@ public class m {
if (id > 0) {
theCount++;
+
//Update the skill values
mcMMO.database.write("UPDATE "
+ LoadProperties.MySQLtablePrefix
@@ -415,8 +450,10 @@ public class m {
+ getInt(acrobaticsXP) + ", fishing = "
+ getInt(fishingXP) + " WHERE user_id = "
+ id);
- } else {
+ }
+ else {
theCount++;
+
//Create the user in the DB
mcMMO.database.write("INSERT INTO "
+ LoadProperties.MySQLtablePrefix
@@ -478,16 +515,14 @@ public class m {
+ id);
}
}
- System.out
- .println("[mcMMO] MySQL Updated from users file, "
- + theCount
- + " items added/updated to MySQL DB");
+
+ 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);
+ }
+ catch (Exception e) {
+ log.log(Level.SEVERE, "Exception while reading " + location + " (Are you sure you formatted it correctly?)", e);
}
}
}, 1);
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/gmail/nossr50/mcMMO.java b/src/main/java/com/gmail/nossr50/mcMMO.java
index 935204fcc..f99e09008 100644
--- a/src/main/java/com/gmail/nossr50/mcMMO.java
+++ b/src/main/java/com/gmail/nossr50/mcMMO.java
@@ -17,8 +17,6 @@ import com.gmail.nossr50.locale.mcLocale;
import com.gmail.nossr50.party.Party;
import com.gmail.nossr50.skills.*;
-import org.bukkit.Bukkit;
-
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
@@ -35,6 +33,7 @@ import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
+import org.bukkit.Bukkit;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPlugin;
@@ -46,367 +45,437 @@ import org.bukkit.entity.Player;
import org.getspout.spoutapi.SpoutManager;
import org.getspout.spoutapi.player.FileManager;
+public class mcMMO extends JavaPlugin {
-public class mcMMO extends JavaPlugin
-{
-
- public static String maindirectory = "plugins" + File.separator + "mcMMO";
- File file = new File(maindirectory + File.separator + "config.yml");
- static File versionFile = new File(maindirectory + File.separator + "VERSION");
- public static final Logger log = Logger.getLogger("Minecraft");
-
- private final mcPlayerListener playerListener = new mcPlayerListener(this);
- private final mcBlockListener blockListener = new mcBlockListener(this);
- private final mcEntityListener entityListener = new mcEntityListener(this);
-
- //Queue for block data change for R2+ fix
- public ArrayDeque changeQueue = new ArrayDeque();
- public ArrayDeque fastChangeQueue = new ArrayDeque();
+ public static String maindirectory = "plugins" + File.separator + "mcMMO";
+ public static File file = new File(maindirectory + File.separator + "config.yml");
+ public static File versionFile = new File(maindirectory + File.separator + "VERSION");
+ public static final Logger log = Logger.getLogger("Minecraft");
- private Runnable mcMMO_Timer = new mcTimer(this); //BLEED AND REGENERATION
- private Runnable mcMMO_SaveTimer = new mcSaveTimer(this); //Periodic saving of Player Data
- private Runnable ChangeDataValueTimer = new ChangeDataValueTimer(changeQueue); //R2 block place workaround
- private Runnable FastChangeDataValueTimer = new ChangeDataValueTimer(fastChangeQueue);
+ private final mcPlayerListener playerListener = new mcPlayerListener(this);
+ private final mcBlockListener blockListener = new mcBlockListener(this);
+ private final mcEntityListener entityListener = new mcEntityListener(this);
- //Alias - Command
- public HashMap aliasMap = new HashMap();
-
- public static Database database = null;
- public Misc misc = new Misc(this);
+ //Queue for block data change for R2+ fix
+ public ArrayDeque changeQueue = new ArrayDeque();
+ public ArrayDeque fastChangeQueue = new ArrayDeque();
- //Config file stuff
- LoadProperties config;
- LoadTreasures config2;
-
- //Jar stuff
- public static File mcmmo;
+ private Runnable mcMMO_Timer = new mcTimer(this); //BLEED AND REGENERATION
+ private Runnable mcMMO_SaveTimer = new mcSaveTimer(this); //Periodic saving of Player Data
+ private Runnable ChangeDataValueTimer = new ChangeDataValueTimer(changeQueue); //R2 block place workaround
+ private Runnable FastChangeDataValueTimer = new ChangeDataValueTimer(fastChangeQueue); //R2 block place workaround for instant-break stuff
- public void onEnable()
- {
- final Plugin thisPlugin = this;
- mcmmo = this.getFile();
- new File(maindirectory).mkdir();
-
- if(!versionFile.exists())
- {
- updateVersion();
- } else
- {
- String vnum = readVersion();
- //This will be changed to whatever version preceded when we actually need updater code.
- //Version 1.0.48 is the first to implement this, no checking before that version can be done.
- if(vnum.equalsIgnoreCase("1.0.48")) {
- updateFrom(1);
- }
- //Just add in more else if blocks for versions that need updater code. Increment the updateFrom age int as we do so.
- //Catch all for versions not matching and no specific code being needed
- else if(!vnum.equalsIgnoreCase(this.getDescription().getVersion())) updateFrom(-1);
- }
-
- this.config = new LoadProperties(this);
- this.config.load();
-
- this.config2 = new LoadTreasures(this);
- this.config2.load();
-
- Party.getInstance().loadParties();
- new Party(this);
-
- if(!LoadProperties.useMySQL)
- Users.getInstance().loadUsers(); //Load Users file
- /*
- * REGISTER EVENTS
- */
+ //Alias - Command
+ public HashMap aliasMap = new HashMap();
- PluginManager pm = getServer().getPluginManager();
+ public static Database database = null;
+ public Misc misc = new Misc(this);
- if(pm.getPlugin("Spout") != null)
- LoadProperties.spoutEnabled = true;
- else
- LoadProperties.spoutEnabled = false;
-
- //Register events
- pm.registerEvents(playerListener, this);
- pm.registerEvents(blockListener, this);
- pm.registerEvents(entityListener, this);
+ //Config file stuff
+ LoadProperties config;
+ LoadTreasures config2;
- PluginDescriptionFile pdfFile = this.getDescription();
+ //Jar stuff
+ public static File mcmmo;
- if(LoadProperties.useMySQL)
- {
- database = new Database(this);
- database.createStructure();
- } else
- Leaderboard.makeLeaderboards(); //Make the leaderboards
+ /**
+ * Things to be run when the plugin is enabled.
+ */
+ public void onEnable() {
+ final Plugin thisPlugin = this;
+ mcmmo = this.getFile();
+ new File(maindirectory).mkdir();
- for(Player player : getServer().getOnlinePlayers()){Users.addUser(player);} //In case of reload add all users back into PlayerProfile
- System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" );
-
- //Periodic save timer (Saves every 10 minutes)
- Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, mcMMO_SaveTimer, 0, LoadProperties.saveInterval * 1200);
-
- Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, mcMMO_Timer, 0, 20);
- //R2+ block place fix
- Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, ChangeDataValueTimer, 0, 10);
- Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, FastChangeDataValueTimer, 0, 1);
-
- registerCommands();
-
- //Spout Stuff
- if(LoadProperties.spoutEnabled)
- {
- SpoutStuff.setupSpoutConfigs();
- SpoutStuff.registerCustomEvent();
- SpoutStuff.extractFiles(); //Extract source materials
-
- FileManager FM = SpoutManager.getFileManager();
- FM.addToPreLoginCache(this, SpoutStuff.getFiles());
- }
-
- if(LoadProperties.statsTracking) {
- //Plugin Metrics running in a new thread
- new Thread(new Runnable() {
- public void run() {
- try {
- // create a new metrics object
- Metrics metrics = new Metrics();
-
- // 'this' in this context is the Plugin object
- metrics.beginMeasuringPlugin(thisPlugin);
- } catch (IOException e) {
- // Failed to submit the stats :-(
- }
- }
- }).start();
- }
- }
+ if (!versionFile.exists()) {
+ updateVersion();
+ }
+ else {
+ String vnum = readVersion();
- public PlayerProfile getPlayerProfile(Player player)
- {
- return Users.getProfile(player);
- }
-
- public void checkXp(Player player, SkillType skillType)
- {
- if(skillType == SkillType.ALL)
- Skills.XpCheckAll(player);
- else
- Skills.XpCheckSkill(skillType, player);
- }
-
- public boolean inSameParty(Player playera, Player playerb)
- {
- if(Users.getProfile(playera).inParty() && Users.getProfile(playerb).inParty()){
- if(Users.getProfile(playera).getParty().equals(Users.getProfile(playerb).getParty())){
- return true;
- } else {
- return false;
- }
- } else {
- return false;
- }
- }
- public ArrayList getParties(){
- String location = "plugins/mcMMO/mcmmo.users";
- ArrayList parties = new ArrayList();
- try {
- //Open the users file
- FileReader file = new FileReader(location);
- BufferedReader in = new BufferedReader(file);
- String line = "";
- while((line = in.readLine()) != null)
- {
- String[] character = line.split(":");
- String theparty = null;
- //Party
- if(character.length > 3)
- theparty = character[3];
- if(!parties.contains(theparty))
- parties.add(theparty);
- }
- in.close();
- } catch (Exception e) {
- log.log(Level.SEVERE, "Exception while reading "
- + location + " (Are you sure you formatted it correctly?)", e);
- }
- return parties;
- }
- public static String getPartyName(Player player){
- PlayerProfile PP = Users.getProfile(player);
- return PP.getParty();
- }
- public static boolean inParty(Player player){
- PlayerProfile PP = Users.getProfile(player);
- return PP.inParty();
- }
+ //This will be changed to whatever version preceded when we actually need updater code.
+ //Version 1.0.48 is the first to implement this, no checking before that version can be done.
+ if (vnum.equalsIgnoreCase("1.0.48")) {
+ updateFrom(1);
+ }
- public void onDisable()
- {
- //Make sure to save player information if the server shuts down
- for(Player x : Bukkit.getServer().getOnlinePlayers())
- {
- Users.getProfile(x).save();
- }
-
- Bukkit.getServer().getScheduler().cancelTasks(this); //This removes our tasks
-
- System.out.println("mcMMO was disabled."); //How informative!
- }
-
- private void registerCommands() {
- //Register aliases with the aliasmap (used in the playercommandpreprocessevent to ugly alias them to actual commands)
- //Skills commands
- aliasMap.put(mcLocale.getString("m.SkillAcrobatics").toLowerCase(), "acrobatics");
- aliasMap.put(mcLocale.getString("m.SkillArchery").toLowerCase(), "archery");
- aliasMap.put(mcLocale.getString("m.SkillAxes").toLowerCase(), "axes");
- aliasMap.put(mcLocale.getString("m.SkillExcavation").toLowerCase(), "excavation");
- aliasMap.put(mcLocale.getString("m.SkillFishing").toLowerCase(), "fishing");
- aliasMap.put(mcLocale.getString("m.SkillHerbalism").toLowerCase(), "herbalism");
- aliasMap.put(mcLocale.getString("m.SkillMining").toLowerCase(), "mining");
- aliasMap.put(mcLocale.getString("m.SkillRepair").toLowerCase(), "repair");
- aliasMap.put(mcLocale.getString("m.SkillSwords").toLowerCase(), "swords");
- aliasMap.put(mcLocale.getString("m.SkillTaming").toLowerCase(), "taming");
- aliasMap.put(mcLocale.getString("m.SkillUnarmed").toLowerCase(), "unarmed");
- aliasMap.put(mcLocale.getString("m.SkillWoodCutting").toLowerCase(), "woodcutting");
-
-
- //Register commands
- //Skills commands
- getCommand("acrobatics").setExecutor(new AcrobaticsCommand());
- getCommand("archery").setExecutor(new ArcheryCommand());
- getCommand("axes").setExecutor(new AxesCommand());
- getCommand("excavation").setExecutor(new ExcavationCommand());
- getCommand("fishing").setExecutor(new FishingCommand());
- getCommand("herbalism").setExecutor(new HerbalismCommand());
- getCommand("mining").setExecutor(new MiningCommand());
- getCommand("repair").setExecutor(new RepairCommand());
- getCommand("swords").setExecutor(new SwordsCommand());
- getCommand("taming").setExecutor(new TamingCommand());
- getCommand("unarmed").setExecutor(new UnarmedCommand());
- getCommand("woodcutting").setExecutor(new WoodcuttingCommand());
-
- //Mc* commands
- if(LoadProperties.mcremoveEnable) getCommand("mcremove").setExecutor(new McremoveCommand());
- if(LoadProperties.mcabilityEnable) getCommand("mcability").setExecutor(new McabilityCommand());
- if(LoadProperties.mccEnable) getCommand("mcc").setExecutor(new MccCommand());
- if(LoadProperties.mcgodEnable) getCommand("mcgod").setExecutor(new McgodCommand());
- if(LoadProperties.mcmmoEnable) getCommand("mcmmo").setExecutor(new McmmoCommand());
- if(LoadProperties.mcrefreshEnable) getCommand("mcrefresh").setExecutor(new McrefreshCommand(this));
- if(LoadProperties.mctopEnable) getCommand("mctop").setExecutor(new MctopCommand());
-
- //Party commands
- if(LoadProperties.acceptEnable) getCommand("accept").setExecutor(new AcceptCommand());
- if(LoadProperties.aEnable) getCommand("a").setExecutor(new ACommand());
- if(LoadProperties.inviteEnable) getCommand("invite").setExecutor(new InviteCommand(this));
- if(LoadProperties.partyEnable) getCommand("party").setExecutor(new PartyCommand());
- if(LoadProperties.pEnable) getCommand("p").setExecutor(new PCommand());
- if(LoadProperties.ptpEnable) getCommand("ptp").setExecutor(new PtpCommand(this));
-
- //Other commands
- if(LoadProperties.addxpEnable) getCommand("addxp").setExecutor(new AddxpCommand(this));
- if(LoadProperties.addlevelsEnable) getCommand("addlevels").setExecutor(new AddlevelsCommand(this));
- if(LoadProperties.mmoeditEnable) getCommand("mmoedit").setExecutor(new MmoeditCommand(this));
- getCommand("mmoupdate").setExecutor(new MmoupdateCommand());
- if(LoadProperties.mcstatsEnable) getCommand("mcstats").setExecutor(new McstatsCommand());
- if(LoadProperties.inspectEnable) getCommand("inspect").setExecutor(new InspectCommand(this));
- if(LoadProperties.xprateEnable) getCommand("xprate").setExecutor(new XprateCommand());
-
- //Spout commands
- getCommand("mchud").setExecutor(new MchudCommand());
- if(LoadProperties.xplockEnable) getCommand("xplock").setExecutor(new XplockCommand());
-
- }
+ //Just add in more else if blocks for versions that need updater code. Increment the updateFrom age int as we do so.
+ //Catch all for versions not matching and no specific code being needed
+ else if (!vnum.equalsIgnoreCase(this.getDescription().getVersion())) {
+ updateFrom(-1);
+ }
+ }
- /*
- * It is important to always assume that you are updating from the lowest possible version.
- * Thus, every block of updater code should be complete and self-contained; finishing all
- * SQL transactions and closing all file handlers, such that the next block of updater code
- * if called will handle updating as expected.
- */
- public void updateFrom(int age) {
- //No updater code needed, just update the version.
- if(age == -1) {
- updateVersion();
- return;
- }
- //Updater code from age 1 goes here
- if(age <= 1) {
- //Since age 1 is an example for now, we will just let it do nothing.
-
- }
- //If we are updating from age 1 but we need more to reach age 2, this will run too.
- if(age <= 2) {
-
- }
- updateVersion();
- }
-
- public void updateVersion() {
- try {
- versionFile.createNewFile();
- BufferedWriter vout = new BufferedWriter(new FileWriter(versionFile));
- vout.write(this.getDescription().getVersion());
- vout.close();
- } catch (IOException ex) {
- ex.printStackTrace();
- } catch (SecurityException ex) {
- ex.printStackTrace();
- }
- }
+ this.config = new LoadProperties(this);
+ this.config.load();
- public String readVersion() {
- byte[] buffer = new byte[(int) versionFile.length()];
- BufferedInputStream f = null;
- try {
- f = new BufferedInputStream(new FileInputStream(versionFile));
- f.read(buffer);
- } catch (FileNotFoundException ex) {
- ex.printStackTrace();
- } catch (IOException ex) {
- ex.printStackTrace();
- } finally {
- if (f != null) try { f.close(); } catch (IOException ignored) { }
- }
-
- return new String(buffer);
- }
-
- /*
- * Boilerplate Custom Config Stuff
- */
-
- private FileConfiguration treasuresConfig = null;
- private File treasuresConfigFile = null;
-
- public void reloadTreasuresConfig() {
- if (treasuresConfigFile == null) {
- treasuresConfigFile = new File(getDataFolder(), "treasures.yml");
- }
- treasuresConfig = YamlConfiguration.loadConfiguration(treasuresConfigFile);
-
- // Look for defaults in the jar
- InputStream defConfigStream = getResource("treasures.yml");
- if (defConfigStream != null) {
- YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);
- treasuresConfig.setDefaults(defConfig);
- }
- }
-
- public FileConfiguration getTreasuresConfig() {
- if (treasuresConfig == null) {
- reloadTreasuresConfig();
- }
- return treasuresConfig;
- }
-
- public void saveTreasuresConfig() {
- if (treasuresConfig == null || treasuresConfigFile == null) {
- return;
- }
- try {
- treasuresConfig.save(treasuresConfigFile);
- } catch (IOException ex) {
- Logger.getLogger(JavaPlugin.class.getName()).log(Level.SEVERE, "Could not save config to " + treasuresConfigFile, ex);
- }
- }
+ this.config2 = new LoadTreasures(this);
+ this.config2.load();
+
+ Party.getInstance().loadParties();
+ new Party(this);
+
+ if (!LoadProperties.useMySQL) {
+ Users.getInstance().loadUsers();
+ }
+
+ PluginManager pm = getServer().getPluginManager();
+
+ if (pm.getPlugin("Spout") != null) {
+ LoadProperties.spoutEnabled = true;
+ }
+ else {
+ LoadProperties.spoutEnabled = false;
+ }
+
+ //Register events
+ pm.registerEvents(playerListener, this);
+ pm.registerEvents(blockListener, this);
+ pm.registerEvents(entityListener, this);
+
+ PluginDescriptionFile pdfFile = this.getDescription();
+
+ //Setup the leaderboards
+ if (LoadProperties.useMySQL) {
+ database = new Database(this);
+ database.createStructure();
+ }
+ else {
+ Leaderboard.makeLeaderboards();
+ }
+
+ for (Player player : getServer().getOnlinePlayers()) {
+ Users.addUser(player); //In case of reload add all users back into PlayerProfile
+ }
+
+ System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" );
+
+ //Periodic save timer (Saves every 10 minutes)
+ Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, mcMMO_SaveTimer, 0, LoadProperties.saveInterval * 1200);
+
+ //Bleed & Regen timer (Runs every 20 seconds)
+ Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, mcMMO_Timer, 0, 20);
+
+ //R2+ block place fix
+ Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, ChangeDataValueTimer, 0, 10);
+ Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, FastChangeDataValueTimer, 0, 1);
+
+ registerCommands();
+
+ //Spout Stuff
+ if (LoadProperties.spoutEnabled) {
+ SpoutStuff.setupSpoutConfigs();
+ SpoutStuff.registerCustomEvent();
+ SpoutStuff.extractFiles(); //Extract source materials
+
+ FileManager FM = SpoutManager.getFileManager();
+ FM.addToPreLoginCache(this, SpoutStuff.getFiles());
+ }
+
+ if (LoadProperties.statsTracking) {
+ //Plugin Metrics running in a new thread
+ new Thread(new Runnable() {
+ public void run() {
+ try {
+ // create a new metrics object
+ Metrics metrics = new Metrics();
+
+ // 'this' in this context is the Plugin object
+ metrics.beginMeasuringPlugin(thisPlugin);
+ }
+ catch (IOException e) {
+ System.out.println("Failed to submit stats.");
+ }
+ }
+ }).start();
+ }
+ }
+
+ /**
+ * Get profile of the player.
+ *
+ * This function is designed for API usage.
+ *
+ * @param player Player whose profile to get
+ * @return the PlayerProfile object
+ */
+ public PlayerProfile getPlayerProfile(Player player) {
+ return Users.getProfile(player);
+ }
+
+ /**
+ * Check the XP of a player.
+ *
+ * This function is designed for API usage.
+ *
+ * @param player
+ * @param skillType
+ */
+ public void checkXp(Player player, SkillType skillType) {
+ if (skillType == SkillType.ALL) {
+ Skills.XpCheckAll(player);
+ }
+ else {
+ Skills.XpCheckSkill(skillType, player);
+ }
+ }
+
+ /**
+ * Check if two players are in the same party.
+ *
+ * This function is designed for API usage.
+ *
+ * @param playera The first player to check
+ * @param playerb The second player to check
+ * @return true if the two players are in the same party, false otherwise
+ */
+ public boolean inSameParty(Player playera, Player playerb) {
+ if (Users.getProfile(playera).inParty() && Users.getProfile(playerb).inParty()) {
+ if (Users.getProfile(playera).getParty().equals(Users.getProfile(playerb).getParty())) {
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+ else {
+ return false;
+ }
+ }
+
+ /**
+ * Get a list of all current party names.
+ *
+ * This function is designed for API usage.
+ *
+ * @return the list of parties.
+ */
+ public ArrayList getParties() {
+ String location = "plugins/mcMMO/mcmmo.users";
+ ArrayList parties = new ArrayList();
+
+ try {
+
+ //Open the users file
+ FileReader file = new FileReader(location);
+ BufferedReader in = new BufferedReader(file);
+ String line = "";
+
+ while((line = in.readLine()) != null) {
+ String[] character = line.split(":");
+ String theparty = null;
+
+ //Party
+ if (character.length > 3) {
+ theparty = character[3];
+ }
+
+ if (!parties.contains(theparty)) {
+ parties.add(theparty);
+ }
+ }
+ in.close();
+ }
+ catch (Exception e) {
+ log.log(Level.SEVERE, "Exception while reading " + location + " (Are you sure you formatted it correctly?)", e);
+ }
+ return parties;
+ }
+
+ /**
+ * Get the name of the party a player is in.
+ *
+ * This function is designed for API usage.
+ *
+ * @param player The player to check the party name of
+ * @return the name of the player's party
+ */
+ public static String getPartyName(Player player) {
+ PlayerProfile PP = Users.getProfile(player);
+ return PP.getParty();
+ }
+
+ /**
+ * Checks if a player is in a party.
+ *
+ * This function is designed for API usage.
+ *
+ * @param player The player to check
+ * @return true if the player is in a party, false otherwise
+ */
+ public static boolean inParty(Player player) {
+ PlayerProfile PP = Users.getProfile(player);
+ return PP.inParty();
+ }
+
+ /**
+ * Things to be run when the plugin is disabled.
+ */
+ public void onDisable() {
+
+ //Make sure to save player information if the server shuts down
+ for(Player x : Bukkit.getOnlinePlayers()) {
+ Users.getProfile(x).save();
+ }
+
+ Bukkit.getServer().getScheduler().cancelTasks(this); //This removes our tasks
+
+ System.out.println("mcMMO was disabled."); //How informative!
+ }
+
+ private void registerCommands() {
+ //Register aliases with the aliasmap (used in the playercommandpreprocessevent to ugly alias them to actual commands)
+ //Skills commands
+ aliasMap.put(mcLocale.getString("m.SkillAcrobatics").toLowerCase(), "acrobatics");
+ aliasMap.put(mcLocale.getString("m.SkillArchery").toLowerCase(), "archery");
+ aliasMap.put(mcLocale.getString("m.SkillAxes").toLowerCase(), "axes");
+ aliasMap.put(mcLocale.getString("m.SkillExcavation").toLowerCase(), "excavation");
+ aliasMap.put(mcLocale.getString("m.SkillFishing").toLowerCase(), "fishing");
+ aliasMap.put(mcLocale.getString("m.SkillHerbalism").toLowerCase(), "herbalism");
+ aliasMap.put(mcLocale.getString("m.SkillMining").toLowerCase(), "mining");
+ aliasMap.put(mcLocale.getString("m.SkillRepair").toLowerCase(), "repair");
+ aliasMap.put(mcLocale.getString("m.SkillSwords").toLowerCase(), "swords");
+ aliasMap.put(mcLocale.getString("m.SkillTaming").toLowerCase(), "taming");
+ aliasMap.put(mcLocale.getString("m.SkillUnarmed").toLowerCase(), "unarmed");
+ aliasMap.put(mcLocale.getString("m.SkillWoodCutting").toLowerCase(), "woodcutting");
+
+
+ //Register commands
+ //Skills commands
+ getCommand("acrobatics").setExecutor(new AcrobaticsCommand());
+ getCommand("archery").setExecutor(new ArcheryCommand());
+ getCommand("axes").setExecutor(new AxesCommand());
+ getCommand("excavation").setExecutor(new ExcavationCommand());
+ getCommand("fishing").setExecutor(new FishingCommand());
+ getCommand("herbalism").setExecutor(new HerbalismCommand());
+ getCommand("mining").setExecutor(new MiningCommand());
+ getCommand("repair").setExecutor(new RepairCommand());
+ getCommand("swords").setExecutor(new SwordsCommand());
+ getCommand("taming").setExecutor(new TamingCommand());
+ getCommand("unarmed").setExecutor(new UnarmedCommand());
+ getCommand("woodcutting").setExecutor(new WoodcuttingCommand());
+
+ //Mc* commands
+ if(LoadProperties.mcremoveEnable) getCommand("mcremove").setExecutor(new McremoveCommand());
+ if(LoadProperties.mcabilityEnable) getCommand("mcability").setExecutor(new McabilityCommand());
+ if(LoadProperties.mccEnable) getCommand("mcc").setExecutor(new MccCommand());
+ if(LoadProperties.mcgodEnable) getCommand("mcgod").setExecutor(new McgodCommand());
+ if(LoadProperties.mcmmoEnable) getCommand("mcmmo").setExecutor(new McmmoCommand());
+ if(LoadProperties.mcrefreshEnable) getCommand("mcrefresh").setExecutor(new McrefreshCommand(this));
+ if(LoadProperties.mctopEnable) getCommand("mctop").setExecutor(new MctopCommand());
+
+ //Party commands
+ if(LoadProperties.acceptEnable) getCommand("accept").setExecutor(new AcceptCommand());
+ if(LoadProperties.aEnable) getCommand("a").setExecutor(new ACommand());
+ if(LoadProperties.inviteEnable) getCommand("invite").setExecutor(new InviteCommand(this));
+ if(LoadProperties.partyEnable) getCommand("party").setExecutor(new PartyCommand());
+ if(LoadProperties.pEnable) getCommand("p").setExecutor(new PCommand());
+ if(LoadProperties.ptpEnable) getCommand("ptp").setExecutor(new PtpCommand(this));
+
+ //Other commands
+ if(LoadProperties.addxpEnable) getCommand("addxp").setExecutor(new AddxpCommand(this));
+ if(LoadProperties.addlevelsEnable) getCommand("addlevels").setExecutor(new AddlevelsCommand(this));
+ if(LoadProperties.mmoeditEnable) getCommand("mmoedit").setExecutor(new MmoeditCommand(this));
+ getCommand("mmoupdate").setExecutor(new MmoupdateCommand());
+ if(LoadProperties.mcstatsEnable) getCommand("mcstats").setExecutor(new McstatsCommand());
+ if(LoadProperties.inspectEnable) getCommand("inspect").setExecutor(new InspectCommand(this));
+ if(LoadProperties.xprateEnable) getCommand("xprate").setExecutor(new XprateCommand());
+
+ //Spout commands
+ getCommand("mchud").setExecutor(new MchudCommand());
+ if(LoadProperties.xplockEnable) getCommand("xplock").setExecutor(new XplockCommand());
+
+ }
+
+ /*
+ * It is important to always assume that you are updating from the lowest possible version.
+ * Thus, every block of updater code should be complete and self-contained; finishing all
+ * SQL transactions and closing all file handlers, such that the next block of updater code
+ * if called will handle updating as expected.
+ */
+ public void updateFrom(int age) {
+ //No updater code needed, just update the version.
+ if(age == -1) {
+ updateVersion();
+ return;
+ }
+ //Updater code from age 1 goes here
+ if(age <= 1) {
+ //Since age 1 is an example for now, we will just let it do nothing.
+
+ }
+ //If we are updating from age 1 but we need more to reach age 2, this will run too.
+ if(age <= 2) {
+
+ }
+ updateVersion();
+ }
+
+ public void updateVersion() {
+ try {
+ versionFile.createNewFile();
+ BufferedWriter vout = new BufferedWriter(new FileWriter(versionFile));
+ vout.write(this.getDescription().getVersion());
+ vout.close();
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ } catch (SecurityException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ public String readVersion() {
+ byte[] buffer = new byte[(int) versionFile.length()];
+ BufferedInputStream f = null;
+ try {
+ f = new BufferedInputStream(new FileInputStream(versionFile));
+ f.read(buffer);
+ } catch (FileNotFoundException ex) {
+ ex.printStackTrace();
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ } finally {
+ if (f != null) try { f.close(); } catch (IOException ignored) { }
+ }
+
+ return new String(buffer);
+ }
+
+ /*
+ * Boilerplate Custom Config Stuff
+ */
+
+ private FileConfiguration treasuresConfig = null;
+ private File treasuresConfigFile = null;
+
+ public void reloadTreasuresConfig() {
+ if (treasuresConfigFile == null) {
+ treasuresConfigFile = new File(getDataFolder(), "treasures.yml");
+ }
+ treasuresConfig = YamlConfiguration.loadConfiguration(treasuresConfigFile);
+
+ // Look for defaults in the jar
+ InputStream defConfigStream = getResource("treasures.yml");
+ if (defConfigStream != null) {
+ YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);
+ treasuresConfig.setDefaults(defConfig);
+ }
+ }
+
+ public FileConfiguration getTreasuresConfig() {
+ if (treasuresConfig == null) {
+ reloadTreasuresConfig();
+ }
+ return treasuresConfig;
+ }
+
+ public void saveTreasuresConfig() {
+ if (treasuresConfig == null || treasuresConfigFile == null) {
+ return;
+ }
+ try {
+ treasuresConfig.save(treasuresConfigFile);
+ } catch (IOException ex) {
+ Logger.getLogger(JavaPlugin.class.getName()).log(Level.SEVERE, "Could not save config to " + treasuresConfigFile, ex);
+ }
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/gmail/nossr50/skills/BlastMining.java b/src/main/java/com/gmail/nossr50/skills/BlastMining.java
index 10eb09a6b..334b2a864 100644
--- a/src/main/java/com/gmail/nossr50/skills/BlastMining.java
+++ b/src/main/java/com/gmail/nossr50/skills/BlastMining.java
@@ -10,8 +10,8 @@ import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.ExplosionPrimeEvent;
+import com.gmail.nossr50.BlockChecks;
import com.gmail.nossr50.Users;
-import com.gmail.nossr50.m;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.datatypes.SkillType;
@@ -89,7 +89,7 @@ public class BlastMining{
while(iterator.hasNext())
{
Block temp = iterator.next();
- if(m.isOre(temp))
+ if(BlockChecks.isOre(temp.getType()))
ores.add(temp);
else
debris.add(temp);