diff --git a/Changelog.txt b/Changelog.txt index ee45332ff..3d5163762 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,6 +1,14 @@ Changelog: #Versions without changelogs probably had very small misc fixes, like tweaks to the source code +Version 1.2.09-dev + - Fixed issue with Repair Mastery (Issue #47) + - Made Arcane Forging fully configurable (Pull Request #52) + - Changed timer to be a bit more efficient (Issue #19) + - Changed to fire EntityDamageEvents for all damage done by mcMMO + - New custom event for developers McMMOPlayerLevelUpEvent + - New custmo event for developers McMMOItemSpawnEvent + Version 1.2.08 - Changed Bukkit events to new event system - Changed aliasing to send both the mcmmo command and the command used. diff --git a/pom.xml b/pom.xml index 1ad8b4594..7566c49ed 100644 --- a/pom.xml +++ b/pom.xml @@ -107,14 +107,14 @@ org.bukkit bukkit - 1.1-R1 + 1.1-R3-SNAPSHOT jar compile org.bukkit craftbukkit - 1.1-R1 + 1.1-R2 jar compile diff --git a/src/main/java/com/gmail/nossr50/Combat.java b/src/main/java/com/gmail/nossr50/Combat.java index 38e182d08..e57145ad3 100644 --- a/src/main/java/com/gmail/nossr50/Combat.java +++ b/src/main/java/com/gmail/nossr50/Combat.java @@ -361,8 +361,7 @@ public class Combat * @param dmg Amount of damage to attempt to do */ public static void dealDamage(LivingEntity target, int dmg){ - EntityDamageEvent ede = new EntityDamageEvent(target, EntityDamageEvent.DamageCause.CUSTOM, dmg); - Bukkit.getPluginManager().callEvent(ede); + dealDamage(target, dmg, EntityDamageEvent.DamageCause.CUSTOM); } /** @@ -375,6 +374,9 @@ public class Combat public static void dealDamage(LivingEntity target, int dmg, DamageCause cause) { EntityDamageEvent ede = new EntityDamageEvent(target, cause, dmg); Bukkit.getPluginManager().callEvent(ede); + if(ede.isCancelled()) return; + + target.damage(ede.getDamage()); } /** @@ -387,6 +389,8 @@ public class Combat public static void dealDamage(LivingEntity target, int dmg, Player attacker) { EntityDamageEvent ede = new EntityDamageByEntityEvent(attacker, target, EntityDamageEvent.DamageCause.ENTITY_ATTACK, dmg); Bukkit.getPluginManager().callEvent(ede); + + target.damage(ede.getDamage()); } public static boolean pvpAllowed(EntityDamageByEntityEvent event, World world) diff --git a/src/main/java/com/gmail/nossr50/events/McMMOItemSpawnEvent.java b/src/main/java/com/gmail/nossr50/events/McMMOItemSpawnEvent.java new file mode 100644 index 000000000..bbf2705e9 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/events/McMMOItemSpawnEvent.java @@ -0,0 +1,89 @@ +/* + This file is part of mcMMO. + + mcMMO is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + mcMMO is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with mcMMO. If not, see . +*/ +package com.gmail.nossr50.events; + +import org.bukkit.Location; +import org.bukkit.event.Cancellable; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; +import org.bukkit.inventory.ItemStack; + +/** + * Called when mcMMO is preparing to drop an item + */ +@SuppressWarnings("serial") +public class McMMOItemSpawnEvent extends Event implements Cancellable { + private Location location; + private ItemStack itemStack; + private boolean cancelled; + + public McMMOItemSpawnEvent(Location location, ItemStack itemStack) { + this.location = location; + this.itemStack = itemStack; + this.cancelled = false; + } + + /** + * @return Location where the item will be dropped + */ + public Location getLocation() { + return location; + } + + /** + * @param location Location where to drop the item + */ + public void setLocation(Location location) { + this.location = location; + } + + /** + * @return ItemStack that will be dropped + */ + public ItemStack getItemStack() { + return itemStack; + } + + /** + * @param itemStack ItemStack to drop + */ + public void setItemStack(ItemStack itemStack) { + this.itemStack = itemStack; + } + + /** Following are required for Cancellable **/ + @Override + public boolean isCancelled() { + return cancelled; + } + + @Override + public void setCancelled(boolean cancelled) { + this.cancelled = cancelled; + } + + /** Rest of file is required boilerplate for custom events **/ + private static final HandlerList handlers = new HandlerList(); + + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/src/main/java/com/gmail/nossr50/events/McMMOPlayerLevelUpEvent.java b/src/main/java/com/gmail/nossr50/events/McMMOPlayerLevelUpEvent.java index 0483125c2..3a4a1fa6a 100644 --- a/src/main/java/com/gmail/nossr50/events/McMMOPlayerLevelUpEvent.java +++ b/src/main/java/com/gmail/nossr50/events/McMMOPlayerLevelUpEvent.java @@ -1,3 +1,19 @@ +/* + This file is part of mcMMO. + + mcMMO is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + mcMMO is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with mcMMO. If not, see . +*/ package com.gmail.nossr50.events; import org.bukkit.entity.Player; diff --git a/src/main/java/com/gmail/nossr50/listeners/mcBlockListener.java b/src/main/java/com/gmail/nossr50/listeners/mcBlockListener.java index 8da729ebb..e74606cf7 100644 --- a/src/main/java/com/gmail/nossr50/listeners/mcBlockListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/mcBlockListener.java @@ -226,7 +226,7 @@ public class mcBlockListener implements Listener ItemStack item = new ItemStack(mat, 1, (byte)0, type); if(blockx.getTypeId() == 17) { - blockx.getLocation().getWorld().dropItemNaturally(blockx.getLocation(), item); + m.mcDropItem(blockx.getLocation(), item); //XP WOODCUTTING if(!plugin.misc.blockWatchList.contains(block)) { @@ -241,7 +241,7 @@ public class mcBlockListener implements Listener item = new ItemStack(mat, 1, (short)0, blockx.getData()); if(Math.random() * 10 > 9) - blockx.getLocation().getWorld().dropItemNaturally(blockx.getLocation(), item); + m.mcDropItem(blockx.getLocation(), item); } if(blockx.getType() != Material.AIR) player.incrementStatistic(Statistic.MINE_BLOCK, event.getBlock().getType()); @@ -289,7 +289,7 @@ public class mcBlockListener implements Listener ItemStack inhand = player.getItemInHand(); Block block = event.getBlock(); - Skills.monitorSkills(player); + Skills.monitorSkills(player, PP); /* * ABILITY PREPARATION CHECKS @@ -353,13 +353,13 @@ public class mcBlockListener implements Listener if(item.getType() == Material.CLAY_BALL) { - block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item); - block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item); - block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item); - block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item); + m.mcDropItem(block.getLocation(), item); + m.mcDropItem(block.getLocation(), item); + m.mcDropItem(block.getLocation(), item); + m.mcDropItem(block.getLocation(), item); } else { - block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item); + m.mcDropItem(block.getLocation(), item); } //Spout stuff @@ -392,13 +392,13 @@ public class mcBlockListener implements Listener if(item.getType() == Material.CLAY_BALL) { - block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item); - block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item); - block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item); - block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item); + m.mcDropItem(block.getLocation(), item); + m.mcDropItem(block.getLocation(), item); + m.mcDropItem(block.getLocation(), item); + m.mcDropItem(block.getLocation(), item); } else { - block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item); + m.mcDropItem(block.getLocation(), item); } if(LoadProperties.spoutEnabled) @@ -431,7 +431,7 @@ public class mcBlockListener implements Listener if(Math.random() * 10 > 9) { ItemStack x = new ItemStack(Material.SAPLING, 1, (short)0, block.getData()); - block.getLocation().getWorld().dropItemNaturally(block.getLocation(), x); + m.mcDropItem(block.getLocation(), x); } block.setType(Material.AIR); player.incrementStatistic(Statistic.MINE_BLOCK, event.getBlock().getType()); diff --git a/src/main/java/com/gmail/nossr50/m.java b/src/main/java/com/gmail/nossr50/m.java index 0a834e995..c3694d338 100644 --- a/src/main/java/com/gmail/nossr50/m.java +++ b/src/main/java/com/gmail/nossr50/m.java @@ -31,6 +31,7 @@ import com.gmail.nossr50.config.*; import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.FakeBlockBreakEvent; import com.gmail.nossr50.datatypes.SkillType; +import com.gmail.nossr50.events.McMMOItemSpawnEvent; public class m { @@ -255,15 +256,21 @@ public class m } return true; } - public static void mcDropItem(Location loc, int id) + public static void mcDropItem(Location location, int id) { - if(loc != null) - { - Material mat = Material.getMaterial(id); - byte damage = 0; - ItemStack item = new ItemStack(mat, 1, (byte)0, damage); - loc.getWorld().dropItemNaturally(loc, item); - } + if(location == null) return; + + Material mat = Material.getMaterial(id); + ItemStack item = new ItemStack(mat, 1, (byte) 0, (byte) 0); + mcDropItem(location, item); + } + 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); } public static boolean isSwords(ItemStack is) diff --git a/src/main/java/com/gmail/nossr50/runnables/mcTimer.java b/src/main/java/com/gmail/nossr50/runnables/mcTimer.java index 78572c228..388ef90a8 100644 --- a/src/main/java/com/gmail/nossr50/runnables/mcTimer.java +++ b/src/main/java/com/gmail/nossr50/runnables/mcTimer.java @@ -37,6 +37,7 @@ public class mcTimer implements Runnable public void run() { + long curTime = System.currentTimeMillis(); for(Player player : plugin.getServer().getOnlinePlayers()) { if(player == null) @@ -49,12 +50,12 @@ public class mcTimer implements Runnable /* * MONITOR SKILLS */ - Skills.monitorSkills(player); + Skills.monitorSkills(player, PP, curTime); /* * COOLDOWN MONITORING */ - Skills.watchCooldowns(player); + Skills.watchCooldowns(player, PP, curTime); /* * PLAYER BLEED MONITORING diff --git a/src/main/java/com/gmail/nossr50/skills/Excavation.java b/src/main/java/com/gmail/nossr50/skills/Excavation.java index b80a5f6ff..92c743a1c 100644 --- a/src/main/java/com/gmail/nossr50/skills/Excavation.java +++ b/src/main/java/com/gmail/nossr50/skills/Excavation.java @@ -269,7 +269,7 @@ public class Excavation for(ItemStack x : is) { if(x != null) - loc.getWorld().dropItemNaturally(loc, x); + m.mcDropItem(loc, x); } //Handle XP related tasks diff --git a/src/main/java/com/gmail/nossr50/skills/Fishing.java b/src/main/java/com/gmail/nossr50/skills/Fishing.java index 46c5adff1..72197672c 100644 --- a/src/main/java/com/gmail/nossr50/skills/Fishing.java +++ b/src/main/java/com/gmail/nossr50/skills/Fishing.java @@ -1,7 +1,7 @@ package com.gmail.nossr50.skills; +import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.World; import org.bukkit.craftbukkit.entity.CraftItem; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.*; @@ -11,6 +11,7 @@ import org.bukkit.material.Wool; import com.gmail.nossr50.Combat; import com.gmail.nossr50.Users; +import com.gmail.nossr50.m; import com.gmail.nossr50.config.LoadProperties; import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.SkillType; @@ -61,7 +62,7 @@ public class Fishing { getFishingResultsTier5(player, event); break; } - player.getWorld().dropItem(player.getLocation(), new ItemStack(Material.RAW_FISH, 1)); + m.mcDropItem(player.getLocation(), new ItemStack(Material.RAW_FISH, 1)); Users.getProfile(player).addXP(SkillType.FISHING, LoadProperties.mfishing, player); Skills.XpCheckSkill(SkillType.FISHING, player); } @@ -673,7 +674,7 @@ public class Fishing { return; Combat.dealDamage(le, 1, event.getPlayer()); - World world = le.getWorld(); + Location loc = le.getLocation(); /* Neutral Mobs */ if(le instanceof Sheep) @@ -685,26 +686,26 @@ public class Fishing { wool.setColor(sheep.getColor()); ItemStack theWool = wool.toItemStack(); theWool.setAmount((int)(Math.random() * 6)); - world.dropItemNaturally(le.getLocation(), theWool); + m.mcDropItem(loc, theWool); sheep.setSheared(true); } } else if(le instanceof Pig) { - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.PORK, 1)); + m.mcDropItem(loc, new ItemStack(Material.PORK, 1)); } else if(le instanceof Cow) { if(Math.random() * 100 < 99){ - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.MILK_BUCKET, 1)); //rare chance to drop milk + m.mcDropItem(loc, new ItemStack(Material.MILK_BUCKET, 1)); //rare chance to drop milk } else if(Math.random() * 10 < 5){ - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.LEATHER, 1)); + m.mcDropItem(loc, new ItemStack(Material.LEATHER, 1)); } else{ - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.RAW_BEEF, 1)); + m.mcDropItem(loc, new ItemStack(Material.RAW_BEEF, 1)); } } @@ -712,14 +713,14 @@ public class Fishing { { if(Math.random() * 10 <= 7){ if(Math.random() * 10 < 5){ - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.FEATHER, 1)); + m.mcDropItem(loc, new ItemStack(Material.FEATHER, 1)); } else{ - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.RAW_CHICKEN, 1)); + m.mcDropItem(loc, new ItemStack(Material.RAW_CHICKEN, 1)); } } else{ - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.EGG, 1)); + m.mcDropItem(loc, new ItemStack(Material.EGG, 1)); } } @@ -727,37 +728,37 @@ public class Fishing { { if(Math.random() * 100 < 99){ if(Math.random() * 10 < 5){ - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.MILK_BUCKET, 1)); //rare chance to drop milk + m.mcDropItem(loc, new ItemStack(Material.MILK_BUCKET, 1)); //rare chance to drop milk } else{ - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.MUSHROOM_SOUP, 1)); //rare chance to drop soup + m.mcDropItem(loc, new ItemStack(Material.MUSHROOM_SOUP, 1)); //rare chance to drop soup } } else if(Math.random() * 10 <= 7){ if(Math.random() * 10 < 5){ - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.LEATHER, 1)); + m.mcDropItem(loc, new ItemStack(Material.LEATHER, 1)); } else{ - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.RAW_BEEF, 1)); + m.mcDropItem(loc, new ItemStack(Material.RAW_BEEF, 1)); } } else{ - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.RED_MUSHROOM, 3)); + m.mcDropItem(loc, new ItemStack(Material.RED_MUSHROOM, 3)); //need some way to remove MushroomCow & replace with regular cow when sheared } } else if(le instanceof Squid) { - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.getMaterial(351), 1, (byte)0, (byte)0)); + m.mcDropItem(loc, new ItemStack(Material.getMaterial(351), 1, (byte)0, (byte)0)); } else if(le instanceof Snowman){ if(Math.random() * 100 < 99){ - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.PUMPKIN, 1)); //rare chance to drop pumpkin + m.mcDropItem(loc, new ItemStack(Material.PUMPKIN, 1)); //rare chance to drop pumpkin } else{ - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.SNOW_BALL, 5)); + m.mcDropItem(loc, new ItemStack(Material.SNOW_BALL, 5)); } } @@ -765,71 +766,71 @@ public class Fishing { else if(le instanceof Skeleton) { if(Math.random() * 10 < 5) - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.BONE, 1)); + m.mcDropItem(loc, new ItemStack(Material.BONE, 1)); else - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.ARROW, 3)); + m.mcDropItem(loc, new ItemStack(Material.ARROW, 3)); } else if(le instanceof Spider) { if(Math.random() * 10 < 5) - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.SPIDER_EYE, 1)); + m.mcDropItem(loc, new ItemStack(Material.SPIDER_EYE, 1)); else - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.STRING, 1)); + m.mcDropItem(loc, new ItemStack(Material.STRING, 1)); } else if(le instanceof Creeper) { - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.SULPHUR, 1)); + m.mcDropItem(loc, new ItemStack(Material.SULPHUR, 1)); } else if(le instanceof Enderman) { - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.ENDER_PEARL, 1)); + m.mcDropItem(loc, new ItemStack(Material.ENDER_PEARL, 1)); } else if(le instanceof PigZombie) { if(Math.random() * 10 < 5) - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.ROTTEN_FLESH, 1)); + m.mcDropItem(loc, new ItemStack(Material.ROTTEN_FLESH, 1)); else - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.GOLD_NUGGET, 1)); + m.mcDropItem(loc, new ItemStack(Material.GOLD_NUGGET, 1)); } else if(le instanceof Blaze) { - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.BLAZE_ROD, 1)); + m.mcDropItem(loc, new ItemStack(Material.BLAZE_ROD, 1)); } else if(le instanceof CaveSpider) { if(Math.random() * 10 < 5) - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.SPIDER_EYE, 1)); + m.mcDropItem(loc, new ItemStack(Material.SPIDER_EYE, 1)); else - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.STRING, 1)); + m.mcDropItem(loc, new ItemStack(Material.STRING, 1)); } else if(le instanceof Ghast) { if(Math.random() * 10 < 5) - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.SULPHUR, 1)); + m.mcDropItem(loc, new ItemStack(Material.SULPHUR, 1)); else - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.GHAST_TEAR, 1)); + m.mcDropItem(loc, new ItemStack(Material.GHAST_TEAR, 1)); } else if(le instanceof MagmaCube) { - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.MAGMA_CREAM, 1)); + m.mcDropItem(loc, new ItemStack(Material.MAGMA_CREAM, 1)); } else if(le instanceof Slime) { - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.SLIME_BALL, 1)); + m.mcDropItem(loc, new ItemStack(Material.SLIME_BALL, 1)); } else if(le instanceof Zombie) { - world.dropItemNaturally(le.getLocation(), new ItemStack(Material.ROTTEN_FLESH, 1)); + m.mcDropItem(loc, new ItemStack(Material.ROTTEN_FLESH, 1)); } } } diff --git a/src/main/java/com/gmail/nossr50/skills/Herbalism.java b/src/main/java/com/gmail/nossr50/skills/Herbalism.java index ae00e5665..1e2196771 100644 --- a/src/main/java/com/gmail/nossr50/skills/Herbalism.java +++ b/src/main/java/com/gmail/nossr50/skills/Herbalism.java @@ -82,12 +82,12 @@ public class Herbalism Location loc = block.getLocation(); ItemStack is = new ItemStack(mat, 1, (byte)0, (byte)0); PP.addXP(SkillType.HERBALISM, LoadProperties.mwheat, player); - loc.getWorld().dropItemNaturally(loc, is); + m.mcDropItem(loc, is); //DROP SOME SEEDS mat = Material.SEEDS; is = new ItemStack(mat, 1, (byte)0, (byte)0); - loc.getWorld().dropItemNaturally(loc, is); + m.mcDropItem(loc, is); herbalismProcCheck(block, player, event, plugin); herbalismProcCheck(block, player, event, plugin); @@ -166,18 +166,18 @@ public class Herbalism { if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.HERBALISM)) { - loc.getWorld().dropItemNaturally(loc, is); + m.mcDropItem(loc, is); } } //GREEN THUMB if(Math.random() * 1500 <= PP.getSkillLevel(SkillType.HERBALISM)) { event.setCancelled(true); - loc.getWorld().dropItemNaturally(loc, is); + m.mcDropItem(loc, is); //DROP SOME SEEDS mat = Material.SEEDS; is = new ItemStack(mat, 1, (byte)0, (byte)0); - loc.getWorld().dropItemNaturally(loc, is); + m.mcDropItem(loc, is); block.setData((byte) 0x1); //Change it to first stage @@ -233,7 +233,7 @@ public class Herbalism { if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.HERBALISM)) { - loc.getWorld().dropItemNaturally(target.getLocation(), is); + m.mcDropItem(target.getLocation(), is); } PP.addXP(SkillType.HERBALISM, LoadProperties.mcactus, player); } @@ -272,7 +272,7 @@ public class Herbalism { if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.HERBALISM)) { - loc.getWorld().dropItemNaturally(target.getLocation(), is); + m.mcDropItem(target.getLocation(), is); } PP.addXP(SkillType.HERBALISM, LoadProperties.msugar, player); } @@ -290,7 +290,7 @@ public class Herbalism { if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.HERBALISM)) { - loc.getWorld().dropItemNaturally(loc, is); + m.mcDropItem(loc, is); } } PP.addXP(SkillType.HERBALISM, LoadProperties.mpumpkin, player); @@ -303,7 +303,7 @@ public class Herbalism if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.HERBALISM)) { - loc.getWorld().dropItemNaturally(loc, is); + m.mcDropItem(loc, is); } PP.addXP(SkillType.HERBALISM, LoadProperties.mmelon, player); } @@ -316,7 +316,7 @@ public class Herbalism { if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.HERBALISM)) { - loc.getWorld().dropItemNaturally(loc, is); + m.mcDropItem(loc, is); } } PP.addXP(SkillType.HERBALISM, LoadProperties.mmushroom, player); @@ -327,7 +327,7 @@ public class Herbalism is = new ItemStack(mat, 1, (byte)0, (byte)0); if(player != null){ if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.HERBALISM)){ - loc.getWorld().dropItemNaturally(loc, is); + m.mcDropItem(loc, is); } } PP.addXP(SkillType.HERBALISM, LoadProperties.mflower, player); diff --git a/src/main/java/com/gmail/nossr50/skills/Mining.java b/src/main/java/com/gmail/nossr50/skills/Mining.java index e3b9f73ca..3e1294f3b 100644 --- a/src/main/java/com/gmail/nossr50/skills/Mining.java +++ b/src/main/java/com/gmail/nossr50/skills/Mining.java @@ -84,50 +84,50 @@ public class Mining ItemStack item = new ItemStack(mat, 1, (byte)0, damage); if(block.getTypeId() != 89 && block.getTypeId() != 73 && block.getTypeId() != 74 && block.getTypeId() != 56 && block.getTypeId() != 21 && block.getTypeId() != 1 && block.getTypeId() != 16) - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); if(block.getTypeId() == 89) { mat = Material.getMaterial(348); item = new ItemStack(mat, 1, (byte)0, damage); - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); } if(block.getTypeId() == 73 || block.getTypeId() == 74) { mat = Material.getMaterial(331); item = new ItemStack(mat, 1, (byte)0, damage); - loc.getWorld().dropItemNaturally(loc, item); - loc.getWorld().dropItemNaturally(loc, item); - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); + m.mcDropItem(loc, item); + m.mcDropItem(loc, item); if(Math.random() * 10 > 5){ - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); } } if(block.getTypeId() == 21) { mat = Material.getMaterial(351); item = new ItemStack(mat, 1, (byte)0,(byte)0x4); - loc.getWorld().dropItemNaturally(loc, item); - loc.getWorld().dropItemNaturally(loc, item); - loc.getWorld().dropItemNaturally(loc, item); - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); + m.mcDropItem(loc, item); + m.mcDropItem(loc, item); + m.mcDropItem(loc, item); } if(block.getTypeId() == 56) { mat = Material.getMaterial(264); item = new ItemStack(mat, 1, (byte)0, damage); - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); } if(block.getTypeId() == 1) { mat = Material.getMaterial(4); item = new ItemStack(mat, 1, (byte)0, damage); - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); } if(block.getTypeId() == 16) { mat = Material.getMaterial(263); item = new ItemStack(mat, 1, (byte)0, damage); - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); } } public static void blockProcCheck(Block block, Player player) @@ -291,7 +291,7 @@ public class Mining } } item = new ItemStack(mat, 1, (byte)0, damage); - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); player.incrementStatistic(Statistic.MINE_BLOCK, block.getType()); block.setType(Material.AIR); } @@ -305,7 +305,7 @@ public class Mining } mat = Material.getMaterial(87); item = new ItemStack(mat, 1, (byte)0, damage); - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); player.incrementStatistic(Statistic.MINE_BLOCK, block.getType()); block.setType(Material.AIR); } @@ -319,7 +319,7 @@ public class Mining } mat = Material.getMaterial(348); item = new ItemStack(mat, 1, (byte)0, damage); - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); player.incrementStatistic(Statistic.MINE_BLOCK, block.getType()); block.setType(Material.AIR); } @@ -333,7 +333,7 @@ public class Mining } mat = Material.getMaterial(263); item = new ItemStack(mat, 1, (byte)0, damage); - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); player.incrementStatistic(Statistic.MINE_BLOCK, block.getType()); block.setType(Material.AIR); } @@ -346,7 +346,7 @@ public class Mining blockProcCheck(block, player); } item = new ItemStack(mat, 1, (byte)0, damage); - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); player.incrementStatistic(Statistic.MINE_BLOCK, block.getType()); block.setType(Material.AIR); } @@ -362,7 +362,7 @@ public class Mining } mat = Material.getMaterial(49); item = new ItemStack(mat, 1, (byte)0, damage); - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); player.incrementStatistic(Statistic.MINE_BLOCK, block.getType()); block.setType(Material.AIR); } @@ -376,7 +376,7 @@ public class Mining } mat = Material.getMaterial(264); item = new ItemStack(mat, 1, (byte)0, damage); - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); player.incrementStatistic(Statistic.MINE_BLOCK, block.getType()); block.setType(Material.AIR); } @@ -389,7 +389,7 @@ public class Mining blockProcCheck(block, player); } item = new ItemStack(mat, 1, (byte)0, damage); - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); player.incrementStatistic(Statistic.MINE_BLOCK, block.getType()); block.setType(Material.AIR); } @@ -404,12 +404,12 @@ public class Mining } mat = Material.getMaterial(331); item = new ItemStack(mat, 1, (byte)0, damage); - loc.getWorld().dropItemNaturally(loc, item); - loc.getWorld().dropItemNaturally(loc, item); - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); + m.mcDropItem(loc, item); + m.mcDropItem(loc, item); if(Math.random() * 10 > 5) { - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); } player.incrementStatistic(Statistic.MINE_BLOCK, block.getType()); block.setType(Material.AIR); @@ -423,10 +423,10 @@ public class Mining } mat = Material.getMaterial(351); item = new ItemStack(mat, 1, (byte)0,(byte)0x4); - loc.getWorld().dropItemNaturally(loc, item); - loc.getWorld().dropItemNaturally(loc, item); - loc.getWorld().dropItemNaturally(loc, item); - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); + m.mcDropItem(loc, item); + m.mcDropItem(loc, item); + m.mcDropItem(loc, item); player.incrementStatistic(Statistic.MINE_BLOCK, block.getType()); block.setType(Material.AIR); } diff --git a/src/main/java/com/gmail/nossr50/skills/Skills.java b/src/main/java/com/gmail/nossr50/skills/Skills.java index 6f0bc2755..4e34b8434 100644 --- a/src/main/java/com/gmail/nossr50/skills/Skills.java +++ b/src/main/java/com/gmail/nossr50/skills/Skills.java @@ -77,33 +77,32 @@ public class Skills return (int) (((deactivatedTimeStamp + (cooldown * 1000)) - System.currentTimeMillis())/1000); } - public static void watchCooldowns(Player player){ - PlayerProfile PP = Users.getProfile(player); - if(!PP.getGreenTerraInformed() && System.currentTimeMillis() - (PP.getGreenTerraDeactivatedTimeStamp()*1000) >= (LoadProperties.greenTerraCooldown * 1000)){ + public static void watchCooldowns(Player player, PlayerProfile PP, long curTime){ + if(!PP.getGreenTerraInformed() && curTime - (PP.getGreenTerraDeactivatedTimeStamp()*1000) >= (LoadProperties.greenTerraCooldown * 1000)){ PP.setGreenTerraInformed(true); player.sendMessage(mcLocale.getString("Skills.YourGreenTerra")); } - if(!PP.getTreeFellerInformed() && System.currentTimeMillis() - (PP.getTreeFellerDeactivatedTimeStamp()*1000) >= (LoadProperties.greenTerraCooldown * 1000)){ + if(!PP.getTreeFellerInformed() && curTime - (PP.getTreeFellerDeactivatedTimeStamp()*1000) >= (LoadProperties.greenTerraCooldown * 1000)){ PP.setTreeFellerInformed(true); player.sendMessage(mcLocale.getString("Skills.YourTreeFeller")); } - if(!PP.getSuperBreakerInformed() && System.currentTimeMillis() - (PP.getSuperBreakerDeactivatedTimeStamp()*1000) >= (LoadProperties.superBreakerCooldown * 1000)){ + if(!PP.getSuperBreakerInformed() && curTime - (PP.getSuperBreakerDeactivatedTimeStamp()*1000) >= (LoadProperties.superBreakerCooldown * 1000)){ PP.setSuperBreakerInformed(true); player.sendMessage(mcLocale.getString("Skills.YourSuperBreaker")); } - if(!PP.getSerratedStrikesInformed() && System.currentTimeMillis() - (PP.getSerratedStrikesDeactivatedTimeStamp()*1000) >= (LoadProperties.serratedStrikeCooldown * 1000)){ + if(!PP.getSerratedStrikesInformed() && curTime - (PP.getSerratedStrikesDeactivatedTimeStamp()*1000) >= (LoadProperties.serratedStrikeCooldown * 1000)){ PP.setSerratedStrikesInformed(true); player.sendMessage(mcLocale.getString("Skills.YourSerratedStrikes")); } - if(!PP.getBerserkInformed() && System.currentTimeMillis() - (PP.getBerserkDeactivatedTimeStamp()*1000) >= (LoadProperties.berserkCooldown * 1000)){ + if(!PP.getBerserkInformed() && curTime - (PP.getBerserkDeactivatedTimeStamp()*1000) >= (LoadProperties.berserkCooldown * 1000)){ PP.setBerserkInformed(true); player.sendMessage(mcLocale.getString("Skills.YourBerserk")); } - if(!PP.getSkullSplitterInformed() && System.currentTimeMillis() - (PP.getSkullSplitterDeactivatedTimeStamp()*1000) >= (LoadProperties.skullSplitterCooldown * 1000)){ + if(!PP.getSkullSplitterInformed() && curTime - (PP.getSkullSplitterDeactivatedTimeStamp()*1000) >= (LoadProperties.skullSplitterCooldown * 1000)){ PP.setSkullSplitterInformed(true); player.sendMessage(mcLocale.getString("Skills.YourSkullSplitter")); } - if(!PP.getGigaDrillBreakerInformed() && System.currentTimeMillis() - (PP.getGigaDrillBreakerDeactivatedTimeStamp()*1000) >= (LoadProperties.gigaDrillBreakerCooldown * 1000)){ + if(!PP.getGigaDrillBreakerInformed() && curTime - (PP.getGigaDrillBreakerDeactivatedTimeStamp()*1000) >= (LoadProperties.gigaDrillBreakerCooldown * 1000)){ PP.setGigaDrillBreakerInformed(true); player.sendMessage(mcLocale.getString("Skills.YourGigaDrillBreaker")); } @@ -126,104 +125,103 @@ public class Skills PP.setHoePreparationMode(true); } } - public static void monitorSkills(Player player){ - PlayerProfile PP = Users.getProfile(player); - if(PP != null) - { - if(PP.getHoePreparationMode() && System.currentTimeMillis() - (PP.getHoePreparationATS()*1000) >= 4000){ - PP.setHoePreparationMode(false); - player.sendMessage(mcLocale.getString("Skills.LowerHoe")); + public static void monitorSkills(Player player, PlayerProfile PP) { + monitorSkills(player, PP, System.currentTimeMillis()); + } + public static void monitorSkills(Player player, PlayerProfile PP, long curTime){ + if(PP.getHoePreparationMode() && curTime - (PP.getHoePreparationATS()*1000) >= 4000){ + PP.setHoePreparationMode(false); + player.sendMessage(mcLocale.getString("Skills.LowerHoe")); + } + if(PP.getAxePreparationMode() && curTime - (PP.getAxePreparationATS()*1000) >= 4000){ + PP.setAxePreparationMode(false); + player.sendMessage(mcLocale.getString("Skills.LowerAxe")); + } + if(PP.getPickaxePreparationMode() && curTime - (PP.getPickaxePreparationATS()*1000) >= 4000){ + PP.setPickaxePreparationMode(false); + player.sendMessage(mcLocale.getString("Skills.LowerPickAxe")); + } + if(PP.getSwordsPreparationMode() && curTime - (PP.getSwordsPreparationATS()*1000) >= 4000){ + PP.setSwordsPreparationMode(false); + player.sendMessage(mcLocale.getString("Skills.LowerSword")); + } + if(PP.getFistsPreparationMode() && curTime - (PP.getFistsPreparationATS()*1000) >= 4000){ + PP.setFistsPreparationMode(false); + player.sendMessage(mcLocale.getString("Skills.LowerFists")); + } + if(PP.getShovelPreparationMode() && curTime - (PP.getShovelPreparationATS()*1000) >= 4000){ + PP.setShovelPreparationMode(false); + player.sendMessage(mcLocale.getString("Skills.LowerShovel")); + } + + /* + * HERBALISM ABILITY + */ + if(mcPermissions.getInstance().herbalismAbility(player)){ + if(PP.getGreenTerraMode() && (PP.getGreenTerraDeactivatedTimeStamp()*1000) <= curTime){ + PP.setGreenTerraMode(false); + PP.setGreenTerraInformed(false); + player.sendMessage(mcLocale.getString("Skills.GreenTerraOff")); } - if(PP.getAxePreparationMode() && System.currentTimeMillis() - (PP.getAxePreparationATS()*1000) >= 4000){ - PP.setAxePreparationMode(false); - player.sendMessage(mcLocale.getString("Skills.LowerAxe")); + } + /* + * AXES ABILITY + */ + if(mcPermissions.getInstance().axesAbility(player)){ + if(PP.getSkullSplitterMode() && (PP.getSkullSplitterDeactivatedTimeStamp()*1000) <= curTime){ + PP.setSkullSplitterMode(false); + PP.setSkullSplitterInformed(false); + player.sendMessage(mcLocale.getString("Skills.SkullSplitterOff")); } - if(PP.getPickaxePreparationMode() && System.currentTimeMillis() - (PP.getPickaxePreparationATS()*1000) >= 4000){ - PP.setPickaxePreparationMode(false); - player.sendMessage(mcLocale.getString("Skills.LowerPickAxe")); + } + /* + * WOODCUTTING ABILITY + */ + if(mcPermissions.getInstance().woodCuttingAbility(player)){ + if(PP.getTreeFellerMode() && (PP.getTreeFellerDeactivatedTimeStamp()*1000) <= curTime){ + PP.setTreeFellerMode(false); + PP.setTreeFellerInformed(false); + player.sendMessage(mcLocale.getString("Skills.TreeFellerOff")); } - if(PP.getSwordsPreparationMode() && System.currentTimeMillis() - (PP.getSwordsPreparationATS()*1000) >= 4000){ - PP.setSwordsPreparationMode(false); - player.sendMessage(mcLocale.getString("Skills.LowerSword")); + } + /* + * MINING ABILITY + */ + if(mcPermissions.getInstance().miningAbility(player)){ + if(PP.getSuperBreakerMode() && (PP.getSuperBreakerDeactivatedTimeStamp()*1000) <= curTime){ + PP.setSuperBreakerMode(false); + PP.setSuperBreakerInformed(false); + player.sendMessage(mcLocale.getString("Skills.SuperBreakerOff")); } - if(PP.getFistsPreparationMode() && System.currentTimeMillis() - (PP.getFistsPreparationATS()*1000) >= 4000){ - PP.setFistsPreparationMode(false); - player.sendMessage(mcLocale.getString("Skills.LowerFists")); + } + /* + * EXCAVATION ABILITY + */ + if(mcPermissions.getInstance().excavationAbility(player)){ + if(PP.getGigaDrillBreakerMode() && (PP.getGigaDrillBreakerDeactivatedTimeStamp()*1000) <= curTime){ + PP.setGigaDrillBreakerMode(false); + PP.setGigaDrillBreakerInformed(false); + player.sendMessage(mcLocale.getString("Skills.GigaDrillBreakerOff")); } - if(PP.getShovelPreparationMode() && System.currentTimeMillis() - (PP.getShovelPreparationATS()*1000) >= 4000){ - PP.setShovelPreparationMode(false); - player.sendMessage(mcLocale.getString("Skills.LowerShovel")); + } + /* + * SWORDS ABILITY + */ + if(mcPermissions.getInstance().swordsAbility(player)){ + if(PP.getSerratedStrikesMode() && (PP.getSerratedStrikesDeactivatedTimeStamp()*1000) <= curTime){ + PP.setSerratedStrikesMode(false); + PP.setSerratedStrikesInformed(false); + player.sendMessage(mcLocale.getString("Skills.SerratedStrikesOff")); } - - /* - * HERBALISM ABILITY - */ - if(mcPermissions.getInstance().herbalismAbility(player)){ - if(PP.getGreenTerraMode() && (PP.getGreenTerraDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){ - PP.setGreenTerraMode(false); - PP.setGreenTerraInformed(false); - player.sendMessage(mcLocale.getString("Skills.GreenTerraOff")); - } - } - /* - * AXES ABILITY - */ - if(mcPermissions.getInstance().axesAbility(player)){ - if(PP.getSkullSplitterMode() && (PP.getSkullSplitterDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){ - PP.setSkullSplitterMode(false); - PP.setSkullSplitterInformed(false); - player.sendMessage(mcLocale.getString("Skills.SkullSplitterOff")); - } - } - /* - * WOODCUTTING ABILITY - */ - if(mcPermissions.getInstance().woodCuttingAbility(player)){ - if(PP.getTreeFellerMode() && (PP.getTreeFellerDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){ - PP.setTreeFellerMode(false); - PP.setTreeFellerInformed(false); - player.sendMessage(mcLocale.getString("Skills.TreeFellerOff")); - } - } - /* - * MINING ABILITY - */ - if(mcPermissions.getInstance().miningAbility(player)){ - if(PP.getSuperBreakerMode() && (PP.getSuperBreakerDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){ - PP.setSuperBreakerMode(false); - PP.setSuperBreakerInformed(false); - player.sendMessage(mcLocale.getString("Skills.SuperBreakerOff")); - } - } - /* - * EXCAVATION ABILITY - */ - if(mcPermissions.getInstance().excavationAbility(player)){ - if(PP.getGigaDrillBreakerMode() && (PP.getGigaDrillBreakerDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){ - PP.setGigaDrillBreakerMode(false); - PP.setGigaDrillBreakerInformed(false); - player.sendMessage(mcLocale.getString("Skills.GigaDrillBreakerOff")); - } - } - /* - * SWORDS ABILITY - */ - if(mcPermissions.getInstance().swordsAbility(player)){ - if(PP.getSerratedStrikesMode() && (PP.getSerratedStrikesDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){ - PP.setSerratedStrikesMode(false); - PP.setSerratedStrikesInformed(false); - player.sendMessage(mcLocale.getString("Skills.SerratedStrikesOff")); - } - } - /* - * UNARMED ABILITY - */ - if(mcPermissions.getInstance().unarmedAbility(player)){ - if(PP.getBerserkMode() && (PP.getBerserkDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){ - PP.setBerserkMode(false); - PP.setBerserkInformed(false); - player.sendMessage(mcLocale.getString("Skills.BerserkOff")); - } + } + /* + * UNARMED ABILITY + */ + if(mcPermissions.getInstance().unarmedAbility(player)){ + if(PP.getBerserkMode() && (PP.getBerserkDeactivatedTimeStamp()*1000) <= curTime){ + PP.setBerserkMode(false); + PP.setBerserkInformed(false); + player.sendMessage(mcLocale.getString("Skills.BerserkOff")); } } } diff --git a/src/main/java/com/gmail/nossr50/skills/Unarmed.java b/src/main/java/com/gmail/nossr50/skills/Unarmed.java index 63e3be592..817ce32be 100644 --- a/src/main/java/com/gmail/nossr50/skills/Unarmed.java +++ b/src/main/java/com/gmail/nossr50/skills/Unarmed.java @@ -84,7 +84,7 @@ public class Unarmed { ItemStack item = defender.getItemInHand(); if(item != null) { - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); ItemStack itemx = null; defender.setItemInHand(itemx); } @@ -99,7 +99,7 @@ public class Unarmed { ItemStack item = defender.getItemInHand(); if(item != null) { - loc.getWorld().dropItemNaturally(loc, item); + m.mcDropItem(loc, item); ItemStack itemx = null; defender.setItemInHand(itemx); } diff --git a/src/main/java/com/gmail/nossr50/skills/WoodCutting.java b/src/main/java/com/gmail/nossr50/skills/WoodCutting.java index 104698f9d..519db0d37 100644 --- a/src/main/java/com/gmail/nossr50/skills/WoodCutting.java +++ b/src/main/java/com/gmail/nossr50/skills/WoodCutting.java @@ -48,7 +48,7 @@ public class WoodCutting if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.WOODCUTTING)) { ItemStack item = new ItemStack(mat, 1, (short) 0, type); - block.getWorld().dropItemNaturally(block.getLocation(), item); + m.mcDropItem(block.getLocation(), item); } } }