diff --git a/mcMMO/Changelog.txt b/mcMMO/Changelog.txt index 679f49c3b..efb6acb54 100644 --- a/mcMMO/Changelog.txt +++ b/mcMMO/Changelog.txt @@ -1,5 +1,27 @@ Changelog: #Versions without changelogs probably had very small misc fixes, like tweaks to the source code# + +Version 0.9.10 +Party invites now show who they are from +Mushrooms added to Dirt/Grass excavation loot tables, drops with 500+ skill +mcMMO configuration files property setting names have been changed for readability +Fixed bug where Gold and Iron wouldn't drop anything during Super Breaker +Added /mcability info to /mcc +Potentially fixed NPE error when checking players for being in same party for PVP XP +Removed sand specific diamond drop from sand excavation loot table, Diamonds can still drop globally for sand +Added a global XP gain multiplier, increase it to increase XP gained +Reduced PVE XP for Unarmed, now identical to Axes/Swords +Changed Chat priority in mcMMO to be higher, this should help plugin conflicts +Mushroom XP raised to 40 from 10 +Flower XP raised to 10 from 3 + +Version 0.9.9 +Fixed problem where entities never got removed from the arrow retrieval list of entities + +Version 0.9.8 +EntityLiving shouldn't be cast to entities that are not an instance of EntityLiving +Added a null check in the timer for players being null before proceeding + Version 0.9.7 Procs/XP Gain will no longer happen when the Entity is immune to damage (Thanks EdwardHand!) Axes critical damage versus players reduced to 150% damage from 200% damage diff --git a/mcMMO/com/gmail/nossr50/mcAcrobatics.java b/mcMMO/com/gmail/nossr50/mcAcrobatics.java index 48f1c5828..a9535f289 100644 --- a/mcMMO/com/gmail/nossr50/mcAcrobatics.java +++ b/mcMMO/com/gmail/nossr50/mcAcrobatics.java @@ -19,7 +19,7 @@ public class mcAcrobatics { if(!mcConfig.getInstance().isBlockWatched(loc.getWorld().getBlockAt(xx, y, z)) && mcPermissions.getInstance().acrobatics(player)){ if(!event.isCancelled()) - mcUsers.getProfile(player).addAcrobaticsGather(event.getDamage() * 8); + mcUsers.getProfile(player).addAcrobaticsGather((event.getDamage() * 8) * mcLoadProperties.xpGainMultiplier); mcSkills.getInstance().XpCheck(player); event.setCancelled(true); } @@ -32,7 +32,7 @@ public class mcAcrobatics { && mcPermissions.getInstance().acrobatics(player)){ if(!event.isCancelled()) mcUsers.getProfile(player).addAcrobaticsGather(event.getDamage() * 8); - mcUsers.getProfile(player).addAcrobaticsGather(event.getDamage() * 12); + mcUsers.getProfile(player).addAcrobaticsGather((event.getDamage() * 12) * mcLoadProperties.xpGainMultiplier); mcSkills.getInstance().XpCheck(player); mcConfig.getInstance().addBlockWatch(loc.getWorld().getBlockAt(xx, y, z)); if(player.getHealth() - event.getDamage() <= 0){ diff --git a/mcMMO/com/gmail/nossr50/mcBlockListener.java b/mcMMO/com/gmail/nossr50/mcBlockListener.java index 033a2a617..5aedf2a25 100644 --- a/mcMMO/com/gmail/nossr50/mcBlockListener.java +++ b/mcMMO/com/gmail/nossr50/mcBlockListener.java @@ -15,8 +15,6 @@ import org.bukkit.event.block.BlockRightClickEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.Plugin; -import com.sk89q.worldguard.bukkit.WorldGuardPlugin; - public class mcBlockListener extends BlockListener { private final mcMMO plugin; @@ -143,11 +141,11 @@ public class mcBlockListener extends BlockListener { if(mcLoadProperties.woodcuttingrequiresaxe){ if(mcm.getInstance().isAxes(inhand)){ mcWoodCutting.getInstance().woodCuttingProcCheck(player, block, loc); - mcUsers.getProfile(player).addWoodcuttingGather(7); + mcUsers.getProfile(player).addWoodcuttingGather(7 * mcLoadProperties.xpGainMultiplier); } } else { mcWoodCutting.getInstance().woodCuttingProcCheck(player, block, loc); - mcUsers.getProfile(player).addWoodcuttingGather(7); + mcUsers.getProfile(player).addWoodcuttingGather(7 * mcLoadProperties.xpGainMultiplier); } mcSkills.getInstance().XpCheck(player); /* diff --git a/mcMMO/com/gmail/nossr50/mcCombat.java b/mcMMO/com/gmail/nossr50/mcCombat.java index e7a08772f..b273520cb 100644 --- a/mcMMO/com/gmail/nossr50/mcCombat.java +++ b/mcMMO/com/gmail/nossr50/mcCombat.java @@ -92,7 +92,9 @@ public class mcCombat { /* * PVP XP */ - if(attacker != null && defender != null && mcLoadProperties.pvpxp && !mcParty.getInstance().inSameParty(attacker, defender)){ + if(attacker != null && defender != null && mcLoadProperties.pvpxp){ + if(mcUsers.getProfile(defender).inParty() && mcUsers.getProfile(attacker).inParty() && mcParty.getInstance().inSameParty(attacker, defender)) + return; if(mcm.getInstance().isAxes(attacker.getItemInHand())) mcUsers.getProfile(attacker).addAxesGather((event.getDamage() * 3) * mcLoadProperties.pvpxprewardmodifier); if(mcm.getInstance().isSwords(attacker.getItemInHand())) @@ -113,13 +115,13 @@ public class mcCombat { } Squid defender = (Squid)event.getEntity(); if(mcm.getInstance().isSwords(attacker.getItemInHand()) && defender.getHealth() > 0 && mcPermissions.getInstance().swords(attacker)){ - mcUsers.getProfile(attacker).addSwordsGather(10); + mcUsers.getProfile(attacker).addSwordsGather(10 * mcLoadProperties.xpGainMultiplier); } mcSkills.getInstance().XpCheck(attacker); if(mcm.getInstance().isAxes(attacker.getItemInHand()) && defender.getHealth() > 0 && mcPermissions.getInstance().axes(attacker)){ - mcUsers.getProfile(attacker).addAxesGather(10); + mcUsers.getProfile(attacker).addAxesGather(10 * mcLoadProperties.xpGainMultiplier); mcSkills.getInstance().XpCheck(attacker); } if(mcm.getInstance().isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){ @@ -152,7 +154,7 @@ public class mcCombat { } //XP if(defender.getHealth() != 0){ - mcUsers.getProfile(attacker).addUnarmedGather(10); + mcUsers.getProfile(attacker).addUnarmedGather(10 * mcLoadProperties.xpGainMultiplier); mcSkills.getInstance().XpCheck(attacker); } } @@ -207,15 +209,15 @@ public class mcCombat { && mcPermissions.getInstance().swords(attacker)){ if(!mcConfig.getInstance().isMobSpawnTracked(x)){ if(x instanceof Creeper) - mcUsers.getProfile(attacker).addSwordsGather(10); + mcUsers.getProfile(attacker).addSwordsGather(10 * mcLoadProperties.xpGainMultiplier); if(x instanceof Spider) - mcUsers.getProfile(attacker).addSwordsGather(7); + mcUsers.getProfile(attacker).addSwordsGather(7 * mcLoadProperties.xpGainMultiplier); if(x instanceof Skeleton) - mcUsers.getProfile(attacker).addSwordsGather(5); + mcUsers.getProfile(attacker).addSwordsGather(5 * mcLoadProperties.xpGainMultiplier); if(x instanceof Zombie) - mcUsers.getProfile(attacker).addSwordsGather(3); + mcUsers.getProfile(attacker).addSwordsGather(3 * mcLoadProperties.xpGainMultiplier); if(x instanceof PigZombie) - mcUsers.getProfile(attacker).addSwordsGather(7); + mcUsers.getProfile(attacker).addSwordsGather(7 * mcLoadProperties.xpGainMultiplier); } mcSkills.getInstance().XpCheck(attacker); } @@ -223,17 +225,16 @@ public class mcCombat { && defender.getHealth() > 0 && mcPermissions.getInstance().axes(attacker)){ if(!mcConfig.getInstance().isMobSpawnTracked(x)){ - mcUsers.getProfile(attacker).addAxesGather(1); if(x instanceof Creeper) - mcUsers.getProfile(attacker).addAxesGather(10); + mcUsers.getProfile(attacker).addAxesGather(10 * mcLoadProperties.xpGainMultiplier); if(x instanceof Spider) - mcUsers.getProfile(attacker).addAxesGather(7); + mcUsers.getProfile(attacker).addAxesGather(7 * mcLoadProperties.xpGainMultiplier); if(x instanceof Skeleton) - mcUsers.getProfile(attacker).addAxesGather(5); + mcUsers.getProfile(attacker).addAxesGather(5 * mcLoadProperties.xpGainMultiplier); if(x instanceof Zombie) - mcUsers.getProfile(attacker).addAxesGather(3); + mcUsers.getProfile(attacker).addAxesGather(3 * mcLoadProperties.xpGainMultiplier); if(x instanceof PigZombie) - mcUsers.getProfile(attacker).addAxesGather(7); + mcUsers.getProfile(attacker).addAxesGather(7 * mcLoadProperties.xpGainMultiplier); } mcSkills.getInstance().XpCheck(attacker); } @@ -268,15 +269,15 @@ public class mcCombat { //XP if(!mcConfig.getInstance().isMobSpawnTracked(x)){ if(x instanceof Creeper) - mcUsers.getProfile(attacker).addUnarmedGather(20); + mcUsers.getProfile(attacker).addUnarmedGather(10 * mcLoadProperties.xpGainMultiplier); if(x instanceof Spider) - mcUsers.getProfile(attacker).addUnarmedGather(15); + mcUsers.getProfile(attacker).addUnarmedGather(7 * mcLoadProperties.xpGainMultiplier); if(x instanceof Skeleton) - mcUsers.getProfile(attacker).addUnarmedGather(10); + mcUsers.getProfile(attacker).addUnarmedGather(5 * mcLoadProperties.xpGainMultiplier); if(x instanceof Zombie) - mcUsers.getProfile(attacker).addUnarmedGather(5); + mcUsers.getProfile(attacker).addUnarmedGather(3 * mcLoadProperties.xpGainMultiplier); if(x instanceof PigZombie) - mcUsers.getProfile(attacker).addUnarmedGather(15); + mcUsers.getProfile(attacker).addUnarmedGather(7 * mcLoadProperties.xpGainMultiplier); } mcSkills.getInstance().XpCheck(attacker); } @@ -358,22 +359,21 @@ public class mcCombat { //XP if(!mcConfig.getInstance().isMobSpawnTracked(x)){ if(x instanceof Creeper) - mcUsers.getProfile(attacker).addArcheryGather(10); + mcUsers.getProfile(attacker).addArcheryGather(10 * mcLoadProperties.xpGainMultiplier); if(x instanceof Spider) - mcUsers.getProfile(attacker).addArcheryGather(7); + mcUsers.getProfile(attacker).addArcheryGather(7 * mcLoadProperties.xpGainMultiplier); if(x instanceof Skeleton) - mcUsers.getProfile(attacker).addArcheryGather(5); + mcUsers.getProfile(attacker).addArcheryGather(5 * mcLoadProperties.xpGainMultiplier); if(x instanceof Zombie) - mcUsers.getProfile(attacker).addArcheryGather(3); + mcUsers.getProfile(attacker).addArcheryGather(3 * mcLoadProperties.xpGainMultiplier); if(x instanceof PigZombie) - mcUsers.getProfile(attacker).addArcheryGather(7); + mcUsers.getProfile(attacker).addArcheryGather(7 * mcLoadProperties.xpGainMultiplier); } } /* * Defender is Animals */ if(x instanceof Animals){ - Animals defender = (Animals)x; if(mcUsers.getProfile(attacker).getArcheryInt() >= 50 && mcUsers.getProfile(attacker).getArcheryInt() < 250) event.setDamage(calculateDamage(event, 1)); if(mcUsers.getProfile(attacker).getArcheryInt() >= 250 && mcUsers.getProfile(attacker).getArcheryInt() < 575) diff --git a/mcMMO/com/gmail/nossr50/mcConfig.java b/mcMMO/com/gmail/nossr50/mcConfig.java index 4a640c7d6..9f6546103 100644 --- a/mcMMO/com/gmail/nossr50/mcConfig.java +++ b/mcMMO/com/gmail/nossr50/mcConfig.java @@ -31,6 +31,11 @@ public class mcConfig { public ArrayList getBleedTracked() {return bleedTracker;} public void addArrowTrack(Entity entity, Integer arrowcount) {arrowTracker.put(entity, arrowcount);} public Integer getArrowCount(Entity entity) {return arrowTracker.get(entity);} + public void removeArrowTracked(Entity entity){ + if(arrowTracker.containsKey(entity)){ + arrowTracker.remove(entity); + } + } public void removeBleedTrack(Entity entity){ bleedTracker.remove(entity); } diff --git a/mcMMO/com/gmail/nossr50/mcEntityListener.java b/mcMMO/com/gmail/nossr50/mcEntityListener.java index f2caf38f5..dfd0b0163 100644 --- a/mcMMO/com/gmail/nossr50/mcEntityListener.java +++ b/mcMMO/com/gmail/nossr50/mcEntityListener.java @@ -39,9 +39,14 @@ public class mcEntityListener extends EntityListener { } } public void onEntityDamage(EntityDamageEvent event) { + /* + * CHECK FOR INVULNERABILITY + */ + if(event.getEntity() instanceof CraftEntity){ CraftEntity cEntity = (CraftEntity)event.getEntity(); - EntityLiving entity = (EntityLiving)cEntity.getHandle(); - if(entity.noDamageTicks < entity.maxNoDamageTicks/2.0F){ + if(cEntity.getHandle() instanceof EntityLiving){ + EntityLiving entityliving = (EntityLiving)cEntity.getHandle(); + if(entityliving.noDamageTicks < entityliving.maxNoDamageTicks/2.0F){ Entity x = event.getEntity(); DamageCause type = event.getCause(); /* @@ -161,6 +166,8 @@ public class mcEntityListener extends EntityListener { mcUsers.getProfile(herpderp).setRecentlyHurt(30); } } + } + } } public void onEntityDeath(EntityDeathEvent event) { Entity x = event.getEntity(); diff --git a/mcMMO/com/gmail/nossr50/mcExcavation.java b/mcMMO/com/gmail/nossr50/mcExcavation.java index ab16565f9..87013724a 100644 --- a/mcMMO/com/gmail/nossr50/mcExcavation.java +++ b/mcMMO/com/gmail/nossr50/mcExcavation.java @@ -68,20 +68,22 @@ public class mcExcavation { Location loc = block.getLocation(); ItemStack is = null; Material mat = null; - if(type == 2 && mcUsers.getProfile(player).getExcavationInt() > 250){ - //CHANCE TO GET EGGS - if(mcLoadProperties.eggs == true && Math.random() * 100 > 99){ - mcUsers.getProfile(player).addExcavationGather(10); - mat = Material.getMaterial(344); - is = new ItemStack(mat, 1, (byte)0, (byte)0); - loc.getWorld().dropItemNaturally(loc, is); - } - //CHANCE TO GET APPLES - if(mcLoadProperties.apples == true && Math.random() * 100 > 99){ - mcUsers.getProfile(player).addExcavationGather(10); - mat = Material.getMaterial(260); - is = new ItemStack(mat, 1, (byte)0, (byte)0); - loc.getWorld().dropItemNaturally(loc, is); + if(type == 2){ + if(mcUsers.getProfile(player).getExcavationInt() > 250){ + //CHANCE TO GET EGGS + if(mcLoadProperties.eggs == true && Math.random() * 100 > 99){ + mcUsers.getProfile(player).addExcavationGather(10 * mcLoadProperties.xpGainMultiplier); + mat = Material.getMaterial(344); + is = new ItemStack(mat, 1, (byte)0, (byte)0); + loc.getWorld().dropItemNaturally(loc, is); + } + //CHANCE TO GET APPLES + if(mcLoadProperties.apples == true && Math.random() * 100 > 99){ + mcUsers.getProfile(player).addExcavationGather(10 * mcLoadProperties.xpGainMultiplier); + mat = Material.getMaterial(260); + is = new ItemStack(mat, 1, (byte)0, (byte)0); + loc.getWorld().dropItemNaturally(loc, is); + } } } //DIRT SAND OR GRAVEL @@ -90,7 +92,7 @@ public class mcExcavation { if(mcUsers.getProfile(player).getExcavationInt() > 750){ //CHANCE TO GET CAKE if(mcLoadProperties.cake == true && Math.random() * 2000 > 1999){ - mcUsers.getProfile(player).addExcavationGather(300); + mcUsers.getProfile(player).addExcavationGather(300 * mcLoadProperties.xpGainMultiplier); mat = Material.getMaterial(354); is = new ItemStack(mat, 1, (byte)0, (byte)0); loc.getWorld().dropItemNaturally(loc, is); @@ -99,7 +101,7 @@ public class mcExcavation { if(mcUsers.getProfile(player).getExcavationInt() > 350){ //CHANCE TO GET DIAMOND if(mcLoadProperties.diamond == true && Math.random() * 750 > 749){ - mcUsers.getProfile(player).addExcavationGather(100); + mcUsers.getProfile(player).addExcavationGather(100 * mcLoadProperties.xpGainMultiplier); mat = Material.getMaterial(264); is = new ItemStack(mat, 1, (byte)0, (byte)0); loc.getWorld().dropItemNaturally(loc, is); @@ -108,7 +110,7 @@ public class mcExcavation { if(mcUsers.getProfile(player).getExcavationInt() > 250){ //CHANCE TO GET YELLOW MUSIC if(mcLoadProperties.music == true && Math.random() * 2000 > 1999){ - mcUsers.getProfile(player).addExcavationGather(300); + mcUsers.getProfile(player).addExcavationGather(300 * mcLoadProperties.xpGainMultiplier); mat = Material.getMaterial(2256); is = new ItemStack(mat, 1, (byte)0, (byte)0); loc.getWorld().dropItemNaturally(loc, is); @@ -118,7 +120,7 @@ public class mcExcavation { if(mcUsers.getProfile(player).getExcavationInt() > 350){ //CHANCE TO GET GREEN MUSIC if(mcLoadProperties.music == true && Math.random() * 2000 > 1999){ - mcUsers.getProfile(player).addExcavationGather(300); + mcUsers.getProfile(player).addExcavationGather(300 * mcLoadProperties.xpGainMultiplier); mat = Material.getMaterial(2257); is = new ItemStack(mat, 1, (byte)0, (byte)0); loc.getWorld().dropItemNaturally(loc, is); @@ -129,31 +131,35 @@ public class mcExcavation { if(type == 12){ //CHANCE TO GET GLOWSTONE if(mcLoadProperties.glowstone == true && mcUsers.getProfile(player).getExcavationInt() > 50 && Math.random() * 100 > 95){ - mcUsers.getProfile(player).addExcavationGather(8); + mcUsers.getProfile(player).addExcavationGather(8 * mcLoadProperties.xpGainMultiplier); mat = Material.getMaterial(348); is = new ItemStack(mat, 1, (byte)0, (byte)0); loc.getWorld().dropItemNaturally(loc, is); } //CHANCE TO GET SLOWSAND if(mcLoadProperties.slowsand == true && mcUsers.getProfile(player).getExcavationInt() > 650 && Math.random() * 200 > 199){ - mcUsers.getProfile(player).addExcavationGather(8); + mcUsers.getProfile(player).addExcavationGather(8 * mcLoadProperties.xpGainMultiplier); mat = Material.getMaterial(88); is = new ItemStack(mat, 1, (byte)0, (byte)0); loc.getWorld().dropItemNaturally(loc, is); } - //CHANCE TO GET DIAMOND - if(mcLoadProperties.diamond == true && mcUsers.getProfile(player).getExcavationInt() > 500 && Math.random() * 500 > 499){ - mcUsers.getProfile(player).addExcavationGather(100); - mat = Material.getMaterial(264); - is = new ItemStack(mat, 1, (byte)0, (byte)0); - loc.getWorld().dropItemNaturally(loc, is); - } } //GRASS OR DIRT - if((type == 2 || type == 3) && mcUsers.getProfile(player).getExcavationInt() > 25){ + if(type == 2 || type == 3){ + //CHANCE FOR SHROOMS + if(mcLoadProperties.mushrooms == true && mcUsers.getProfile(player).getExcavationInt() > 500 && Math.random() * 200 > 199){ + mcUsers.getProfile(player).addExcavationGather(8 * mcLoadProperties.xpGainMultiplier); + if(Math.random() * 10 > 5){ + mat = Material.getMaterial(39); + } else { + mat = Material.getMaterial(40); + } + is = new ItemStack(mat, 1, (byte)0, (byte)0); + loc.getWorld().dropItemNaturally(loc, is); + } //CHANCE TO GET GLOWSTONE - if(mcLoadProperties.glowstone == true && Math.random() * 100 > 95){ - mcUsers.getProfile(player).addExcavationGather(8); + if(mcLoadProperties.glowstone == true && mcUsers.getProfile(player).getExcavationInt() > 25 && Math.random() * 100 > 95){ + mcUsers.getProfile(player).addExcavationGather(8 * mcLoadProperties.xpGainMultiplier); mat = Material.getMaterial(348); is = new ItemStack(mat, 1, (byte)0, (byte)0); loc.getWorld().dropItemNaturally(loc, is); @@ -163,7 +169,7 @@ public class mcExcavation { if(type == 13){ //CHANCE TO GET NETHERRACK if(mcLoadProperties.netherrack == true && mcUsers.getProfile(player).getExcavationInt() > 850 && Math.random() * 200 > 199){ - mcUsers.getProfile(player).addExcavationGather(3); + mcUsers.getProfile(player).addExcavationGather(3 * mcLoadProperties.xpGainMultiplier); mat = Material.getMaterial(87); is = new ItemStack(mat, 1, (byte)0, (byte)0); loc.getWorld().dropItemNaturally(loc, is); @@ -171,7 +177,7 @@ public class mcExcavation { //CHANCE TO GET SULPHUR if(mcLoadProperties.sulphur == true && mcUsers.getProfile(player).getExcavationInt() > 75){ if(Math.random() * 10 > 9){ - mcUsers.getProfile(player).addExcavationGather(3); + mcUsers.getProfile(player).addExcavationGather(3 * mcLoadProperties.xpGainMultiplier); mat = Material.getMaterial(289); is = new ItemStack(mat, 1, (byte)0, (byte)0); loc.getWorld().dropItemNaturally(loc, is); @@ -180,7 +186,7 @@ public class mcExcavation { //CHANCE TO GET BONES if(mcLoadProperties.bones == true && mcUsers.getProfile(player).getExcavationInt() > 175){ if(Math.random() * 10 > 9){ - mcUsers.getProfile(player).addExcavationGather(3); + mcUsers.getProfile(player).addExcavationGather(3 * mcLoadProperties.xpGainMultiplier); mat = Material.getMaterial(352); is = new ItemStack(mat, 1, (byte)0, (byte)0); loc.getWorld().dropItemNaturally(loc, is); diff --git a/mcMMO/com/gmail/nossr50/mcHerbalism.java b/mcMMO/com/gmail/nossr50/mcHerbalism.java index 7ef77aaa4..f71d0a657 100644 --- a/mcMMO/com/gmail/nossr50/mcHerbalism.java +++ b/mcMMO/com/gmail/nossr50/mcHerbalism.java @@ -27,7 +27,7 @@ public class mcHerbalism { if(type == 59 && block.getData() == (byte) 0x7){ mat = Material.getMaterial(296); is = new ItemStack(mat, 1, (byte)0, (byte)0); - mcUsers.getProfile(player).addHerbalismGather(5); + mcUsers.getProfile(player).addHerbalismGather(5 * mcLoadProperties.xpGainMultiplier); if(player != null){ if(Math.random() * 1000 <= mcUsers.getProfile(player).getHerbalismInt()){ loc.getWorld().dropItemNaturally(loc, is); @@ -38,6 +38,7 @@ public class mcHerbalism { * We need to check not-wheat stuff for if it was placed by the player or not */ if(!mcConfig.getInstance().isBlockWatched(block)){ + //Mushroom if(type == 39 || type == 40){ mat = Material.getMaterial(block.getTypeId()); is = new ItemStack(mat, 1, (byte)0, (byte)0); @@ -46,8 +47,9 @@ public class mcHerbalism { loc.getWorld().dropItemNaturally(loc, is); } } - mcUsers.getProfile(player).addHerbalismGather(10); + mcUsers.getProfile(player).addHerbalismGather(40 * mcLoadProperties.xpGainMultiplier); } + //Flower if(type == 37 || type == 38){ mat = Material.getMaterial(block.getTypeId()); is = new ItemStack(mat, 1, (byte)0, (byte)0); @@ -56,7 +58,7 @@ public class mcHerbalism { loc.getWorld().dropItemNaturally(loc, is); } } - mcUsers.getProfile(player).addHerbalismGather(3); + mcUsers.getProfile(player).addHerbalismGather(10 * mcLoadProperties.xpGainMultiplier); } } mcSkills.getInstance().XpCheck(player); diff --git a/mcMMO/com/gmail/nossr50/mcLoadProperties.java b/mcMMO/com/gmail/nossr50/mcLoadProperties.java index 3bf8669d8..b9d972e9a 100644 --- a/mcMMO/com/gmail/nossr50/mcLoadProperties.java +++ b/mcMMO/com/gmail/nossr50/mcLoadProperties.java @@ -1,9 +1,9 @@ package com.gmail.nossr50; public class mcLoadProperties { - public static Boolean toolsLoseDurabilityFromAbilities, pvpxp, miningrequirespickaxe, woodcuttingrequiresaxe, pvp, eggs, apples, myspawnclearsinventory, cake, music, diamond, glowstone, slowsand, sulphur, netherrack, bones, coal, clay, anvilmessages; + public static Boolean mushrooms, toolsLoseDurabilityFromAbilities, pvpxp, miningrequirespickaxe, woodcuttingrequiresaxe, pvp, eggs, apples, myspawnclearsinventory, cake, music, diamond, glowstone, slowsand, sulphur, netherrack, bones, coal, clay, anvilmessages; public static String mcability, mcmmo, mcc, mcrefresh, mcitem, mcgod, stats, mmoedit, ptp, party, myspawn, setmyspawn, whois, invite, accept, clearmyspawn; - public static int superBreakerCooldown, gigaDrillBreakerCooldown, treeFellerCooldown, berserkCooldown, serratedStrikeCooldown, skullSplitterCooldown, abilityDurabilityLoss, feathersConsumedByChimaeraWing, pvpxprewardmodifier, repairdiamondlevel, globalxpmodifier, miningxpmodifier, repairxpmodifier, woodcuttingxpmodifier, unarmedxpmodifier, herbalismxpmodifier, excavationxpmodifier, archeryxpmodifier, swordsxpmodifier, axesxpmodifier, acrobaticsxpmodifier; + public static int xpGainMultiplier, superBreakerCooldown, gigaDrillBreakerCooldown, treeFellerCooldown, berserkCooldown, serratedStrikeCooldown, skullSplitterCooldown, abilityDurabilityLoss, feathersConsumedByChimaeraWing, pvpxprewardmodifier, repairdiamondlevel, globalxpmodifier, miningxpmodifier, repairxpmodifier, woodcuttingxpmodifier, unarmedxpmodifier, herbalismxpmodifier, excavationxpmodifier, archeryxpmodifier, swordsxpmodifier, axesxpmodifier, acrobaticsxpmodifier; public static void loadMain(){ String propertiesFile = mcMMO.maindirectory + "mcmmo.properties"; @@ -22,6 +22,8 @@ public class mcLoadProperties { /* * OTHER */ + myspawnclearsinventory = properties.getBoolean("mySpawnClearsInventory", true); + xpGainMultiplier = properties.getInteger("xpGainMultiplier", 1); toolsLoseDurabilityFromAbilities = properties.getBoolean("toolsLoseDurabilityFromAbilities", true); abilityDurabilityLoss = properties.getInteger("abilityDurabilityLoss", 2); feathersConsumedByChimaeraWing = properties.getInteger("feathersConsumedByChimaeraWing", 10); @@ -29,44 +31,44 @@ public class mcLoadProperties { pvpxprewardmodifier = properties.getInteger("pvpXpRewardModifier", 1); miningrequirespickaxe = properties.getBoolean("miningRequiresPickaxe", true); woodcuttingrequiresaxe = properties.getBoolean("woodcuttingRequiresAxe", true); - repairdiamondlevel = properties.getInteger("repairdiamondlevel", 50); + repairdiamondlevel = properties.getInteger("repairDiamondLevel", 50); /* * EXPERIENCE RATE MODIFIER */ - globalxpmodifier = properties.getInteger("globalxpmodifier", 1); - miningxpmodifier = properties.getInteger("miningxpmodifier", 2); - repairxpmodifier = properties.getInteger("repairxpmodifier", 2); - woodcuttingxpmodifier = properties.getInteger("woodcuttingxpmodifier", 2); - unarmedxpmodifier = properties.getInteger("unarmedxpmodifier", 2); - herbalismxpmodifier = properties.getInteger("herbalismxpmodifier", 2); - excavationxpmodifier = properties.getInteger("excavationxpmodifier", 2); - archeryxpmodifier = properties.getInteger("archeryxpmodifier", 2); - swordsxpmodifier = properties.getInteger("swordsxpmodifier", 2); - axesxpmodifier = properties.getInteger("axesxpmodifier", 2); - acrobaticsxpmodifier = properties.getInteger("acrobaticsxpmodifier", 2); + globalxpmodifier = properties.getInteger("globalXpModifier", 1); + miningxpmodifier = properties.getInteger("miningXpModifier", 2); + repairxpmodifier = properties.getInteger("repairXpModifier", 2); + woodcuttingxpmodifier = properties.getInteger("woodcuttingXpModifier", 2); + unarmedxpmodifier = properties.getInteger("unarmedXpModifier", 2); + herbalismxpmodifier = properties.getInteger("herbalismXpModifier", 2); + excavationxpmodifier = properties.getInteger("excavationXpModifier", 2); + archeryxpmodifier = properties.getInteger("archeryXpModifier", 2); + swordsxpmodifier = properties.getInteger("swordsXpModifier", 2); + axesxpmodifier = properties.getInteger("axesXpModifier", 2); + acrobaticsxpmodifier = properties.getInteger("acrobaticsXpModifier", 2); /* * TOGGLE CLAY */ - clay = properties.getBoolean("graveltoclay", true); + clay = properties.getBoolean("gravelToClay", true); /* * ANVIL MESSAGES */ - anvilmessages = properties.getBoolean("anvilmessages", true); + anvilmessages = properties.getBoolean("anvilMessages", true); /* * EXCAVATION LOOT TOGGLES */ - myspawnclearsinventory = properties.getBoolean("myspawnclearsinventory", true); - glowstone = properties.getBoolean("canexcavateglowstone", true); + mushrooms = properties.getBoolean("canExcavateMushrooms", true); + glowstone = properties.getBoolean("canExcavateGlowstone", true); pvp = properties.getBoolean("pvp", true); - eggs = properties.getBoolean("canexcavateeggs", true); - apples = properties.getBoolean("canexcavateapples", true); - cake = properties.getBoolean("canexcavatecake", true); - music = properties.getBoolean("canexcavatemusic", true); - diamond = properties.getBoolean("canexcavatediamond", true); - slowsand = properties.getBoolean("canexcavateslowsand", true); - sulphur = properties.getBoolean("canexcavatesulphur", true); - netherrack = properties.getBoolean("canexcavatenetherrack", true); - bones = properties.getBoolean("canexcavatebones", true); + eggs = properties.getBoolean("canExcavateEggs", true); + apples = properties.getBoolean("canExcavateApples", true); + cake = properties.getBoolean("canExcavateCake", true); + music = properties.getBoolean("canExcavateMusic", true); + diamond = properties.getBoolean("canExcavateDiamond", true); + slowsand = properties.getBoolean("canExcavateSlowSand", true); + sulphur = properties.getBoolean("canExcavateSulphur", true); + netherrack = properties.getBoolean("canExcavateNetherrack", true); + bones = properties.getBoolean("canExcavateBones", true); /* * CUSTOM COMMANDS diff --git a/mcMMO/com/gmail/nossr50/mcMMO.java b/mcMMO/com/gmail/nossr50/mcMMO.java index 11c973927..eb04218f3 100644 --- a/mcMMO/com/gmail/nossr50/mcMMO.java +++ b/mcMMO/com/gmail/nossr50/mcMMO.java @@ -67,7 +67,7 @@ public class mcMMO extends JavaPlugin { pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Normal, this); pm.registerEvent(Event.Type.PLAYER_LOGIN, playerListener, Priority.Normal, this); pm.registerEvent(Event.Type.BLOCK_DAMAGED, blockListener, Priority.Highest, this); - pm.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Priority.Low, this); + pm.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Priority.Highest, this); pm.registerEvent(Event.Type.PLAYER_COMMAND_PREPROCESS, playerListener, Priority.Normal, this); pm.registerEvent(Event.Type.ENTITY_DEATH, entityListener, Priority.Normal, this); pm.registerEvent(Event.Type.BLOCK_FLOW, blockListener, Priority.Normal, this); diff --git a/mcMMO/com/gmail/nossr50/mcMining.java b/mcMMO/com/gmail/nossr50/mcMining.java index ca0a9c0a3..61f1d8e8a 100644 --- a/mcMMO/com/gmail/nossr50/mcMining.java +++ b/mcMMO/com/gmail/nossr50/mcMining.java @@ -110,50 +110,52 @@ public class mcMining { } } public void miningBlockCheck(Player player, Block block){ + int xp = 0; if(block.getTypeId() == 1 || block.getTypeId() == 24){ - mcUsers.getProfile(player).addMiningGather(3); + xp += 3; blockProcCheck(block, player); } //NETHERRACK if(block.getTypeId() == 87){ - mcUsers.getProfile(player).addMiningGather(3); + xp += 3; blockProcCheck(block, player); } //GLOWSTONE if(block.getTypeId() == 89){ - mcUsers.getProfile(player).addMiningGather(3); + xp += 3; blockProcCheck(block, player); } //COAL if(block.getTypeId() == 16){ - mcUsers.getProfile(player).addMiningGather(10); + xp += 10; blockProcCheck(block, player); } //GOLD if(block.getTypeId() == 14){ - mcUsers.getProfile(player).addMiningGather(35); + xp += 35; blockProcCheck(block, player); } //DIAMOND if(block.getTypeId() == 56){ - mcUsers.getProfile(player).addMiningGather(75); + xp += 75; blockProcCheck(block, player); } //IRON if(block.getTypeId() == 15){ - mcUsers.getProfile(player).addMiningGather(25); + xp += 25; blockProcCheck(block, player); } //REDSTONE if(block.getTypeId() == 73 || block.getTypeId() == 74){ - mcUsers.getProfile(player).addMiningGather(15); + xp += 15; blockProcCheck(block, player); } //LAPUS if(block.getTypeId() == 21){ - mcUsers.getProfile(player).addMiningGather(40); + xp += 40; blockProcCheck(block, player); } + mcUsers.getProfile(player).addMiningGather(xp * mcLoadProperties.xpGainMultiplier); mcSkills.getInstance().XpCheck(player); } /* @@ -172,11 +174,12 @@ public class mcMining { mcm.getInstance().damageTool(player, (short) mcLoadProperties.abilityDurabilityLoss); Location loc = block.getLocation(); Material mat = Material.getMaterial(block.getTypeId()); + int xp = 0; byte damage = 0; ItemStack item = new ItemStack(mat, 1, (byte)0, damage); if(block.getTypeId() == 1 || block.getTypeId() == 24){ if(!mcConfig.getInstance().isBlockWatched(block)){ - mcUsers.getProfile(player).addMiningGather(3); + xp += 3; blockProcCheck(block, player); blockProcCheck(block, player); } @@ -192,7 +195,7 @@ public class mcMining { //NETHERRACK if(block.getTypeId() == 87){ if(!mcConfig.getInstance().isBlockWatched(block)){ - mcUsers.getProfile(player).addMiningGather(3); + xp += 3; blockProcCheck(block, player); blockProcCheck(block, player); } @@ -204,7 +207,7 @@ public class mcMining { //GLOWSTONE if(block.getTypeId() == 89){ if(!mcConfig.getInstance().isBlockWatched(block)){ - mcUsers.getProfile(player).addMiningGather(3); + xp += 3; blockProcCheck(block, player); blockProcCheck(block, player); } @@ -216,7 +219,7 @@ public class mcMining { //COAL if(block.getTypeId() == 16){ if(!mcConfig.getInstance().isBlockWatched(block)){ - mcUsers.getProfile(player).addMiningGather(10); + xp += 10; blockProcCheck(block, player); blockProcCheck(block, player); } @@ -228,16 +231,18 @@ public class mcMining { //GOLD if(block.getTypeId() == 14 && mcm.getInstance().getTier(player) >= 3){ if(!mcConfig.getInstance().isBlockWatched(block)){ - mcUsers.getProfile(player).addMiningGather(35); + xp += 35; blockProcCheck(block, player); blockProcCheck(block, player); } + item = new ItemStack(mat, 1, (byte)0, damage); + loc.getWorld().dropItemNaturally(loc, item); block.setType(Material.AIR); } //DIAMOND if(block.getTypeId() == 56 && mcm.getInstance().getTier(player) >= 3){ if(!mcConfig.getInstance().isBlockWatched(block)){ - mcUsers.getProfile(player).addMiningGather(75); + xp += 75; blockProcCheck(block, player); blockProcCheck(block, player); } @@ -249,16 +254,18 @@ public class mcMining { //IRON if(block.getTypeId() == 15 && mcm.getInstance().getTier(player) >= 2){ if(!mcConfig.getInstance().isBlockWatched(block)){ - mcUsers.getProfile(player).addMiningGather(25); + xp += 25; blockProcCheck(block, player); blockProcCheck(block, player); } + item = new ItemStack(mat, 1, (byte)0, damage); + loc.getWorld().dropItemNaturally(loc, item); block.setType(Material.AIR); } //REDSTONE if((block.getTypeId() == 73 || block.getTypeId() == 74) && mcm.getInstance().getTier(player) >= 4){ if(!mcConfig.getInstance().isBlockWatched(block)){ - mcUsers.getProfile(player).addMiningGather(15); + xp += 15; blockProcCheck(block, player); blockProcCheck(block, player); } @@ -275,7 +282,7 @@ public class mcMining { //LAPUS if(block.getTypeId() == 21 && mcm.getInstance().getTier(player) >= 3){ if(!mcConfig.getInstance().isBlockWatched(block)){ - mcUsers.getProfile(player).addMiningGather(40); + xp += 40; blockProcCheck(block, player); blockProcCheck(block, player); } @@ -287,6 +294,7 @@ public class mcMining { loc.getWorld().dropItemNaturally(loc, item); block.setType(Material.AIR); } + mcUsers.getProfile(player).addMiningGather(xp * mcLoadProperties.xpGainMultiplier); mcSkills.getInstance().XpCheck(player); } } diff --git a/mcMMO/com/gmail/nossr50/mcPlayerListener.java b/mcMMO/com/gmail/nossr50/mcPlayerListener.java index 4deb2ae22..5e3cc336f 100644 --- a/mcMMO/com/gmail/nossr50/mcPlayerListener.java +++ b/mcMMO/com/gmail/nossr50/mcPlayerListener.java @@ -341,7 +341,7 @@ public class mcPlayerListener extends PlayerListener { event.setCancelled(true); player.sendMessage(ChatColor.GREEN + "Your mcMMO Stats"); if(mcPermissions.getInstance().permissionsEnabled) - player.sendMessage(ChatColor.DARK_GRAY+"If you don't have access to a skill it will not be shown here."); + player.sendMessage(ChatColor.DARK_GRAY+"If you don't have access to a skill it will not be shown here."); if(mcPermissions.getInstance().mining(player)) player.sendMessage(ChatColor.YELLOW + "Mining Skill: " + ChatColor.GREEN + mcUsers.getProfile(player).getMining()+ChatColor.DARK_AQUA + " XP("+mcUsers.getProfile(player).getMiningGather() @@ -410,7 +410,7 @@ public class mcPlayerListener extends PlayerListener { Player target = getPlayer(split[1]); mcUsers.getProfile(target).modifyInvite(mcUsers.getProfile(player).getParty()); player.sendMessage(ChatColor.GREEN+"Invite sent successfully"); - target.sendMessage(ChatColor.RED+"ALERT: "+ChatColor.GREEN+"You have received a party invite for "+mcUsers.getProfile(target).getInvite()); + target.sendMessage(ChatColor.RED+"ALERT: "+ChatColor.GREEN+"You have received a party invite for "+mcUsers.getProfile(target).getInvite()+" from "+player.getName()); target.sendMessage(ChatColor.YELLOW+"Type "+ChatColor.GREEN+"/"+mcLoadProperties.accept+ChatColor.YELLOW+" to accept the invite"); } } diff --git a/mcMMO/com/gmail/nossr50/mcRepair.java b/mcMMO/com/gmail/nossr50/mcRepair.java index 8c498650b..a8c706f4e 100644 --- a/mcMMO/com/gmail/nossr50/mcRepair.java +++ b/mcMMO/com/gmail/nossr50/mcRepair.java @@ -31,19 +31,19 @@ public class mcRepair { if(isDiamondArmor(is) && hasDiamond(player) && mcUsers.getProfile(player).getRepairInt() >= mcLoadProperties.repairdiamondlevel){ removeDiamond(player); player.getItemInHand().setDurability(getArmorRepairAmount(is, player)); - mcUsers.getProfile(player).addRepairGather(75); + mcUsers.getProfile(player).addRepairGather(75 * mcLoadProperties.xpGainMultiplier); } else if (isIronArmor(is) && hasIron(player)){ /* * IRON ARMOR */ removeIron(player); player.getItemInHand().setDurability(getArmorRepairAmount(is, player)); - mcUsers.getProfile(player).addRepairGather(20); + mcUsers.getProfile(player).addRepairGather(20 * mcLoadProperties.xpGainMultiplier); //GOLD ARMOR } else if (isGoldArmor(is) && hasGold(player)){ removeGold(player); player.getItemInHand().setDurability(getArmorRepairAmount(is, player)); - mcUsers.getProfile(player).addRepairGather(50); + mcUsers.getProfile(player).addRepairGather(50 * mcLoadProperties.xpGainMultiplier); } else { needMoreVespeneGas(is, player); } @@ -58,18 +58,18 @@ public class mcRepair { if(isIronTools(is) && hasIron(player)){ is.setDurability(getToolRepairAmount(is, player)); removeIron(player); - mcUsers.getProfile(player).addRepairGather(20); + mcUsers.getProfile(player).addRepairGather(20 * mcLoadProperties.xpGainMultiplier); } else if (isDiamondTools(is) && hasDiamond(player) && mcUsers.getProfile(player).getRepairInt() >= mcLoadProperties.repairdiamondlevel){ //Check if its diamond and the player has diamonds /* * DIAMOND TOOLS */ is.setDurability(getToolRepairAmount(is, player)); removeDiamond(player); - mcUsers.getProfile(player).addRepairGather(75); + mcUsers.getProfile(player).addRepairGather(75 * mcLoadProperties.xpGainMultiplier); } else if(isGoldTools(is) && hasGold(player)){ is.setDurability(getToolRepairAmount(is, player)); removeGold(player); - mcUsers.getProfile(player).addRepairGather(50); + mcUsers.getProfile(player).addRepairGather(50 * mcLoadProperties.xpGainMultiplier); } else { needMoreVespeneGas(is, player); } @@ -325,9 +325,9 @@ public class mcRepair { break; } if(durability < 0) - durability = 0; + durability = 0; if(checkPlayerProcRepair(player)) - durability = 0; + durability = 0; return durability; } public void needMoreVespeneGas(ItemStack is, Player player){ diff --git a/mcMMO/com/gmail/nossr50/mcSkills.java b/mcMMO/com/gmail/nossr50/mcSkills.java index 6bfcacafe..3c521216b 100644 --- a/mcMMO/com/gmail/nossr50/mcSkills.java +++ b/mcMMO/com/gmail/nossr50/mcSkills.java @@ -511,5 +511,6 @@ public class mcSkills { x++; } } + mcConfig.getInstance().removeArrowTracked(entity); } } diff --git a/mcMMO/com/gmail/nossr50/mcTimer.java b/mcMMO/com/gmail/nossr50/mcTimer.java index f475ce941..b91cba6b4 100644 --- a/mcMMO/com/gmail/nossr50/mcTimer.java +++ b/mcMMO/com/gmail/nossr50/mcTimer.java @@ -16,7 +16,9 @@ public class mcTimer extends TimerTask{ public void run() { Player[] playerlist = plugin.getServer().getOnlinePlayers(); for(Player player : playerlist){ - if(player != null && mcUsers.getProfile(player) == null) + if(player == null) + continue; + if(mcUsers.getProfile(player) == null) mcUsers.addUser(player); /* * MONITOR SKILLS diff --git a/mcMMO/com/gmail/nossr50/mcm.java b/mcMMO/com/gmail/nossr50/mcm.java index 490a1c7f5..e1f3aa416 100644 --- a/mcMMO/com/gmail/nossr50/mcm.java +++ b/mcMMO/com/gmail/nossr50/mcm.java @@ -603,6 +603,8 @@ public class mcm { player.sendMessage("/"+mcLoadProperties.setmyspawn+" "+ChatColor.RED+"- Set your MySpawn"); } player.sendMessage(ChatColor.GREEN+"--OTHER COMMANDS--"); + if(mcPermissions.getInstance().mcAbility(player)) + player.sendMessage("/"+mcLoadProperties.mcability+ChatColor.RED+" - Toggle ability activation with right click"); if(mcPermissions.getInstance().adminChat(player)){ player.sendMessage("/a "+ChatColor.RED+"- Toggle admin chat"); } diff --git a/mcMMO/plugin.yml b/mcMMO/plugin.yml index 7580de1ab..8af54ebbf 100644 --- a/mcMMO/plugin.yml +++ b/mcMMO/plugin.yml @@ -1,3 +1,3 @@ name: mcMMO main: com.gmail.nossr50.mcMMO -version: 0.9.7 \ No newline at end of file +version: 0.9.10 \ No newline at end of file