diff --git a/mcMMO/Changelog.txt b/mcMMO/Changelog.txt index ad9ce6441..06ea6638c 100644 --- a/mcMMO/Changelog.txt +++ b/mcMMO/Changelog.txt @@ -5,6 +5,7 @@ Leaderboards ignore players with the respective stat at 0 Reconnecting to MySQL will reload player data Fixed a NPE with MySQL's Leaderboards Removed "Loop iteration" debug message from mcMMO +Added more repair customization by solarcloud7 Version 1.0.06 MySQL will attempt to reconnect if the connection is closed diff --git a/mcMMO/com/gmail/nossr50/Combat.java b/mcMMO/com/gmail/nossr50/Combat.java index 7a3d2578b..23f688f86 100644 --- a/mcMMO/com/gmail/nossr50/Combat.java +++ b/mcMMO/com/gmail/nossr50/Combat.java @@ -373,12 +373,12 @@ public class Combat { } if(PPa.getArcheryInt() >= 1000){ if(Math.random() * 1000 <= 500){ - defender.teleportTo(loc); + defender.teleport(loc); defender.sendMessage(ChatColor.DARK_RED+"Touched Fuzzy. Felt Dizzy."); attacker.sendMessage("Target was "+ChatColor.DARK_RED+"Dazed"); } } else if(Math.random() * 2000 <= PPa.getArcheryInt()){ - defender.teleportTo(loc); + defender.teleport(loc); defender.sendMessage(ChatColor.DARK_RED+"Touched Fuzzy. Felt Dizzy."); attacker.sendMessage("Target was "+ChatColor.DARK_RED+"Dazed"); } diff --git a/mcMMO/com/gmail/nossr50/Database.java b/mcMMO/com/gmail/nossr50/Database.java index 962555853..06f5443a8 100644 --- a/mcMMO/com/gmail/nossr50/Database.java +++ b/mcMMO/com/gmail/nossr50/Database.java @@ -12,6 +12,7 @@ import java.sql.PreparedStatement; import org.bukkit.entity.Player; +import com.avaje.ebeaninternal.server.lib.sql.DataSourceException; import com.gmail.nossr50.config.LoadProperties; @@ -27,7 +28,7 @@ public class Database { try { Class.forName("com.mysql.jdbc.Driver").newInstance(); } catch (Exception ex) { - // handle the error + throw new DataSourceException("Failed to initialize JDBC driver"); } // make the connection diff --git a/mcMMO/com/gmail/nossr50/Item.java b/mcMMO/com/gmail/nossr50/Item.java index d40c71992..52b512b74 100644 --- a/mcMMO/com/gmail/nossr50/Item.java +++ b/mcMMO/com/gmail/nossr50/Item.java @@ -51,7 +51,7 @@ public class Item { if(player != null){ if(player.getLocation().getWorld().getBlockAt(block.getX(), y, block.getZ()).getType() != Material.AIR){ player.sendMessage("**CHIMAERA WING FAILED!**"); - player.teleportTo(player.getLocation().getWorld().getBlockAt(block.getX(), (y - 1), block.getZ()).getLocation()); + player.teleport(player.getLocation().getWorld().getBlockAt(block.getX(), (y - 1), block.getZ()).getLocation()); return; } } @@ -61,11 +61,11 @@ public class Item { if(mySpawn != null && plugin.getServer().getWorld(PP.getMySpawnWorld(plugin)) != null) mySpawn.setWorld(plugin.getServer().getWorld(PP.getMySpawnWorld(plugin))); if(mySpawn != null){ - player.teleportTo(mySpawn);//Do it twice to prevent weird stuff - player.teleportTo(mySpawn); + player.teleport(mySpawn);//Do it twice to prevent weird stuff + player.teleport(mySpawn); } } else { - player.teleportTo(player.getWorld().getSpawnLocation()); + player.teleport(player.getWorld().getSpawnLocation()); } player.sendMessage("**CHIMAERA WING**"); } else if (!Skills.cooldownOver(player, PP.getRecentlyHurt(), 60) && is.getAmount() >= 10) { diff --git a/mcMMO/com/gmail/nossr50/config/LoadProperties.java b/mcMMO/com/gmail/nossr50/config/LoadProperties.java index b61dfd396..f9d05def4 100644 --- a/mcMMO/com/gmail/nossr50/config/LoadProperties.java +++ b/mcMMO/com/gmail/nossr50/config/LoadProperties.java @@ -4,8 +4,8 @@ import com.gmail.nossr50.mcMMO; public class LoadProperties { public static Boolean enableCobbleToMossy, useMySQL, cocoabeans, archeryFireRateLimit, mushrooms, toolsLoseDurabilityFromAbilities, pvpxp, miningrequirespickaxe, woodcuttingrequiresaxe, pvp, eggs, apples, cake, music, diamond, glowstone, slowsand, sulphur, netherrack, bones, coal, clay, anvilmessages; - 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 String MySQLtablePrefix, MySQLuserName, MySQLserverName, MySQLdbName, MySQLdbPass, mctop, addxp, mcability, mcmmo, mcc, mcrefresh, mcitem, mcgod, stats, mmoedit, ptp, party, myspawn, setmyspawn, whois, invite, accept, clearmyspawn, nWood, nStone, nIron, nGold, nDiamond;; + 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, rWood, rStone, rIron, rGold, rDiamond;; public static void loadMain(){ String propertiesFile = mcMMO.maindirectory + "mcmmo.properties"; @@ -73,6 +73,20 @@ public class LoadProperties { * ANVIL MESSAGES */ anvilmessages = properties.getBoolean("anvilMessages", true); + + /* + * ANVIL REPAIR (REQUIRED ITEM) AND (NAME OF ITEM) + */ + rGold = properties.getInteger("GoldRepairItemNumber", 266); + nGold = properties.getString("GoldItemRepairName", "Gold Bars"); + rStone = properties.getInteger("CobblestoneRepairItemNumber", 4); + nStone = properties.getString("CobblestoneItemRepairName", "Cobblestone"); + rWood = properties.getInteger("WoodRepairItemNumber", 5); + nWood = properties.getString("WoodItemRepairName", "Wood Planks"); + rDiamond = properties.getInteger("DiamondRepairItemNumber", 264); + nDiamond = properties.getString("DiamondItemRepairName", "Diamond Ore"); + rIron = properties.getInteger("IronRepairItemNumber", 265); + nIron = properties.getString("IronItemRepairName", "Iron Bars"); /* * EXCAVATION LOOT TOGGLES */ diff --git a/mcMMO/com/gmail/nossr50/datatypes/FakeBlockBreakEvent.java b/mcMMO/com/gmail/nossr50/datatypes/FakeBlockBreakEvent.java index 205190502..46a608e9a 100644 --- a/mcMMO/com/gmail/nossr50/datatypes/FakeBlockBreakEvent.java +++ b/mcMMO/com/gmail/nossr50/datatypes/FakeBlockBreakEvent.java @@ -5,6 +5,8 @@ import org.bukkit.entity.Player; import org.bukkit.event.block.BlockBreakEvent; public class FakeBlockBreakEvent extends BlockBreakEvent { + private static final long serialVersionUID = 1L; + public FakeBlockBreakEvent(Block theBlock, Player player) { super(theBlock, player); } diff --git a/mcMMO/com/gmail/nossr50/mcPlayerListener.java b/mcMMO/com/gmail/nossr50/mcPlayerListener.java index 45ddf1ad2..a5e5ad0b8 100644 --- a/mcMMO/com/gmail/nossr50/mcPlayerListener.java +++ b/mcMMO/com/gmail/nossr50/mcPlayerListener.java @@ -9,10 +9,7 @@ import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; -import org.bukkit.entity.CreatureType; -import org.bukkit.entity.Entity; import org.bukkit.entity.Player; -import org.bukkit.entity.Wolf; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerChatEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; @@ -31,7 +28,6 @@ import com.gmail.nossr50.party.Party; import com.gmail.nossr50.skills.Herbalism; import com.gmail.nossr50.skills.Repair; import com.gmail.nossr50.skills.Skills; -import com.gmail.nossr50.skills.Taming; public class mcPlayerListener extends PlayerListener { @@ -557,7 +553,7 @@ public class mcPlayerListener extends PlayerListener { Player target = getPlayer(split[1]); PlayerProfile PPt = Users.getProfile(target); if(PP.getParty().equals(PPt.getParty())){ - player.teleportTo(target); + player.teleport(target); player.sendMessage(ChatColor.GREEN+"You have teleported to "+target.getName()); target.sendMessage(ChatColor.GREEN+player.getName() + " has teleported to you."); } @@ -837,8 +833,8 @@ public class mcPlayerListener extends PlayerListener { //player.sendMessage("MMO DEBUG CODE 5"); mySpawn.setWorld(plugin.getServer().getWorlds().get(0)); } - player.teleportTo(mySpawn); //It's done twice because teleporting from one world to another is weird - player.teleportTo(mySpawn); + player.teleport(mySpawn); //It's done twice because teleporting from one world to another is weird + player.teleport(mySpawn); } else { player.sendMessage(ChatColor.RED+"Configure your myspawn first with a bed."); } diff --git a/mcMMO/com/gmail/nossr50/skills/Repair.java b/mcMMO/com/gmail/nossr50/skills/Repair.java index e1cc60adf..879776bcf 100644 --- a/mcMMO/com/gmail/nossr50/skills/Repair.java +++ b/mcMMO/com/gmail/nossr50/skills/Repair.java @@ -19,6 +19,21 @@ public class Repair { plugin = instance; } private static volatile Repair instance; + + /* + * Repair requirements for each material + */ + private static int rGold = LoadProperties.rGold; + private static String nGold = LoadProperties.nGold; + private static int rStone = LoadProperties.rStone; + private static String nStone = LoadProperties.nStone; + private static int rWood = LoadProperties.rWood; + private static String nWood = LoadProperties.nWood; + private static int rDiamond = LoadProperties.rDiamond; + private static String nDiamond = LoadProperties.nDiamond; + private static int rIron = LoadProperties.rIron; + private static String nIron = LoadProperties.nIron; + public static void repairCheck(Player player, ItemStack is, Block block){ PlayerProfile PP = Users.getProfile(player); @@ -35,8 +50,8 @@ public class Repair { /* * DIAMOND ARMOR */ - if(isDiamondArmor(is) && hasItem(player, 264) && PP.getRepairInt() >= LoadProperties.repairdiamondlevel){ - removeItem(player, 264); + if(isDiamondArmor(is) && hasItem(player, rDiamond) && PP.getRepairInt() >= LoadProperties.repairdiamondlevel){ + removeItem(player, rDiamond); player.getItemInHand().setDurability(getRepairAmount(is, player)); durabilityAfter = player.getItemInHand().getDurability(); player.sendMessage(String.valueOf(durabilityBefore - durabilityAfter)); @@ -44,19 +59,19 @@ public class Repair { dif = (short) (dif * 6); //Boost XP PP.addRepairXP(dif * LoadProperties.xpGainMultiplier); } - else if (isIronArmor(is) && hasItem(player, 265)){ + else if (isIronArmor(is) && hasItem(player, rIron)){ /* * IRON ARMOR */ - removeItem(player, 265); + removeItem(player, rIron); player.getItemInHand().setDurability(getRepairAmount(is, player)); durabilityAfter = player.getItemInHand().getDurability(); dif = (short) (durabilityBefore - durabilityAfter); dif = (short) (dif * 2); //Boost XP PP.addRepairXP(dif * LoadProperties.xpGainMultiplier); //GOLD ARMOR - } else if (isGoldArmor(is) && hasItem(player, 266)){ - removeItem(player, 266); + } else if (isGoldArmor(is) && hasItem(player, rGold)){ + removeItem(player, rGold); player.getItemInHand().setDurability(getRepairAmount(is, player)); durabilityAfter = player.getItemInHand().getDurability(); dif = (short) (durabilityBefore - durabilityAfter); @@ -70,8 +85,8 @@ public class Repair { * TOOLS */ if(isTools(is)){ - if(isStoneTools(is) && hasItem(player, 4)){ - removeItem(player, 4); + if(isStoneTools(is) && hasItem(player, rStone)){ + removeItem(player, rStone); /* * Repair Durability and calculate dif */ @@ -88,8 +103,8 @@ public class Repair { dif = (short) (dif / 2); PP.addRepairXP(dif * LoadProperties.xpGainMultiplier); - } else if(isWoodTools(is) && hasItem(player, 5)){ - removeItem(player, 5); + } else if(isWoodTools(is) && hasItem(player,rWood)){ + removeItem(player,rWood); /* * Repair Durability and calculate dif */ @@ -106,8 +121,8 @@ public class Repair { dif = (short) (dif / 2); PP.addRepairXP(dif * LoadProperties.xpGainMultiplier); - } else if(isIronTools(is) && hasItem(player, 265)){ - removeItem(player, 265); + } else if(isIronTools(is) && hasItem(player, rIron)){ + removeItem(player, rIron); /* * Repair Durability and calculate dif */ @@ -121,12 +136,12 @@ public class Repair { if(m.isHoe(is)) dif = (short) (dif / 2); PP.addRepairXP(dif * LoadProperties.xpGainMultiplier); - } else if (isDiamondTools(is) && hasItem(player, 264) && PP.getRepairInt() >= LoadProperties.repairdiamondlevel){ //Check if its diamond and the player has diamonds + } else if (isDiamondTools(is) && hasItem(player, rDiamond) && PP.getRepairInt() >= LoadProperties.repairdiamondlevel){ //Check if its diamond and the player has diamonds /* * DIAMOND TOOLS */ player.getItemInHand().setDurability(getRepairAmount(is, player)); - removeItem(player, 264); + removeItem(player, rDiamond); durabilityAfter = player.getItemInHand().getDurability(); dif = (short) (durabilityBefore - durabilityAfter); if(m.isShovel(is)) @@ -136,9 +151,9 @@ public class Repair { if(m.isHoe(is)) dif = (short) (dif / 2); PP.addRepairXP(dif * LoadProperties.xpGainMultiplier); - } else if(isGoldTools(is) && hasItem(player, 266)){ + } else if(isGoldTools(is) && hasItem(player, rGold)){ player.getItemInHand().setDurability(getRepairAmount(is, player)); - removeItem(player, 266); + removeItem(player, rGold); durabilityAfter = player.getItemInHand().getDurability(); dif = (short) (durabilityBefore - durabilityAfter); dif = (short) (dif * 7.6); //Boost XP for Gold to that of around Iron @@ -279,7 +294,9 @@ public class Repair { if(checkPlayerProcRepair(player)){ ramt = (short) (ramt * 2); } + //player.sendMessage(ChatColor.DARK_RED + "test " +ChatColor.BLUE+ ); durability-=ramt; + // player.sendMessage(ChatColor.DARK_RED + "durability " +ChatColor.BLUE+ durability); if(durability < 0){ durability = 0; } @@ -431,23 +448,23 @@ public class Repair { PlayerProfile PP = Users.getProfile(player); if ((isDiamondTools(is) || isDiamondArmor(is)) && PP.getRepairInt() < LoadProperties.repairdiamondlevel){ player.sendMessage(ChatColor.DARK_RED +"You're not adept enough to repair Diamond"); - } else if (isDiamondTools(is) && !hasItem(player, 264) || isIronTools(is) && !hasItem(player, 265) || isGoldTools(is) && !hasItem(player, 266)){ - if(isDiamondTools(is) && !hasItem(player, 264)) - player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.BLUE+ "Diamonds"); - if(isIronTools(is) && !hasItem(player, 265)) - player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GRAY+ "Iron"); - if(isGoldTools(is) && !hasItem(player, 266)) - player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GOLD+"Gold"); - if(isWoodTools(is) && !hasItem(player, 5)) - player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.DARK_GREEN+"Wood"); - if(isStoneTools(is) && !hasItem(player, 4)) - player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GRAY+"Stone"); - } else if (isDiamondArmor(is) && !hasItem(player, 264)){ - player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.BLUE+ "Diamonds"); - } else if (isIronArmor(is) && !hasItem(player, 265)){ - player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GRAY+ "Iron"); - } else if (isGoldArmor(is) && !hasItem(player, 266)){ - player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GOLD+"Gold"); + } else if (isDiamondTools(is) && !hasItem(player, rDiamond) || isIronTools(is) && !hasItem(player, rIron) || isGoldTools(is) && !hasItem(player, rGold)){ + if(isDiamondTools(is) && !hasItem(player, rDiamond)) + player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.BLUE+ nDiamond); + if(isIronTools(is) && !hasItem(player, rIron)) + player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GRAY+ nIron); + if(isGoldTools(is) && !hasItem(player, rGold)) + player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GOLD+nGold); + if(isWoodTools(is) && !hasItem(player,rWood)) + player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.DARK_GREEN+ nWood); + if(isStoneTools(is) && !hasItem(player, rStone)) + player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GRAY+nStone); + } else if (isDiamondArmor(is) && !hasItem(player, rDiamond)){ + player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.BLUE+ nDiamond); + } else if (isIronArmor(is) && !hasItem(player, rIron)){ + player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GRAY+ nIron); + } else if (isGoldArmor(is) && !hasItem(player, rGold)){ + player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GOLD+ nGold); } else if (is.getAmount() > 1) player.sendMessage(ChatColor.DARK_RED+"You can't repair stacked items"); }