mirror of
				https://github.com/mcMMO-Dev/mcMMO.git
				synced 2025-11-04 02:53:43 +01:00 
			
		
		
		
	Fixing everything you guys broke while I was gone...
This commit is contained in:
		@@ -15,7 +15,6 @@ import org.bukkit.event.EventHandler;
 | 
			
		||||
import org.bukkit.event.EventPriority;
 | 
			
		||||
import org.bukkit.event.Listener;
 | 
			
		||||
import org.bukkit.event.entity.CreatureSpawnEvent;
 | 
			
		||||
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
 | 
			
		||||
import org.bukkit.event.entity.EntityChangeBlockEvent;
 | 
			
		||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
 | 
			
		||||
import org.bukkit.event.entity.EntityDamageEvent;
 | 
			
		||||
@@ -302,13 +301,21 @@ public class EntityListener implements Listener {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        SpawnReason reason = event.getSpawnReason();
 | 
			
		||||
        switch (event.getSpawnReason()) {
 | 
			
		||||
            case SPAWNER:
 | 
			
		||||
            case SPAWNER_EGG:
 | 
			
		||||
                LivingEntity entity = event.getEntity();
 | 
			
		||||
                Entity passenger = entity.getPassenger();
 | 
			
		||||
 | 
			
		||||
        if (reason == SpawnReason.SPAWNER || reason == SpawnReason.SPAWNER_EGG) {
 | 
			
		||||
            event.getEntity().setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
 | 
			
		||||
            if(event.getEntity().getPassenger() != null) {
 | 
			
		||||
                event.getEntity().getPassenger().setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
 | 
			
		||||
            }
 | 
			
		||||
                entity.setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
 | 
			
		||||
 | 
			
		||||
                if (passenger != null) {
 | 
			
		||||
                    passenger.setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
 | 
			
		||||
                }
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
                return;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -320,14 +320,15 @@ public class PlayerListener implements Listener {
 | 
			
		||||
    public void onPlayerInteractLowest(PlayerInteractEvent event) {
 | 
			
		||||
        Player player = event.getPlayer();
 | 
			
		||||
        Block block = event.getClickedBlock();
 | 
			
		||||
        ItemStack heldItem = player.getItemInHand();
 | 
			
		||||
 | 
			
		||||
        if (Misc.isNPCEntity(player) || player.getGameMode() == GameMode.CREATIVE) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ItemStack heldItem = player.getItemInHand();
 | 
			
		||||
        McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
 | 
			
		||||
 | 
			
		||||
        // This shouldn't be possible - this is probably a band-aid for a larger issue somewhere else.
 | 
			
		||||
        if (mcMMOPlayer == null) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
@@ -427,6 +428,7 @@ public class PlayerListener implements Listener {
 | 
			
		||||
        ItemStack heldItem = player.getItemInHand();
 | 
			
		||||
        McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
 | 
			
		||||
 | 
			
		||||
        // This shouldn't be possible - this is probably a band-aid for a larger issue somewhere else.
 | 
			
		||||
        if (mcMMOPlayer == null) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
@@ -532,7 +534,8 @@ public class PlayerListener implements Listener {
 | 
			
		||||
        if (mcMMOPlayer == null) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        else if (mcMMOPlayer.getPartyChatMode()) {
 | 
			
		||||
 | 
			
		||||
        if (mcMMOPlayer.getPartyChatMode()) {
 | 
			
		||||
            Party party = mcMMOPlayer.getParty();
 | 
			
		||||
 | 
			
		||||
            if (party == null) {
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,7 @@ import com.gmail.nossr50.util.skills.CombatUtils;
 | 
			
		||||
import com.gmail.nossr50.util.skills.SkillUtils;
 | 
			
		||||
 | 
			
		||||
public class FishingManager extends SkillManager {
 | 
			
		||||
    private static HashMap<Material, List<Enchantment>> enchantableCache = new HashMap<Material, List<Enchantment>>();
 | 
			
		||||
    private final HashMap<Material, List<Enchantment>> enchantableCache = new HashMap<Material, List<Enchantment>>();
 | 
			
		||||
    private final long FISHING_COOLDOWN_SECONDS = 1000L;
 | 
			
		||||
 | 
			
		||||
    private int fishingTries = 0;
 | 
			
		||||
@@ -112,12 +112,7 @@ public class FishingManager extends SkillManager {
 | 
			
		||||
 | 
			
		||||
        player.setItemInHand(null);
 | 
			
		||||
 | 
			
		||||
        Creature kraken;
 | 
			
		||||
        if (Misc.getRandom().nextInt(100) == 0) {
 | 
			
		||||
            kraken = (Creature) world.spawnEntity(player.getEyeLocation(), EntityType.CHICKEN);
 | 
			
		||||
        } else {
 | 
			
		||||
            kraken = (Creature) world.spawnEntity(player.getEyeLocation(), EntityType.SQUID);
 | 
			
		||||
        }
 | 
			
		||||
        Creature kraken = (Creature) world.spawnEntity(player.getEyeLocation(), (Misc.getRandom().nextInt(100) == 0 ? EntityType.CHICKEN : EntityType.SQUID));
 | 
			
		||||
        kraken.setCustomName(AdvancedConfig.getInstance().getKrakenName());
 | 
			
		||||
 | 
			
		||||
        if (!kraken.isValid()) {
 | 
			
		||||
@@ -418,23 +413,7 @@ public class FishingManager extends SkillManager {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // When calculating the possible enchantments, we should cache the possible enchantments to minimize
 | 
			
		||||
        // looping every time someone fishes.
 | 
			
		||||
        List<Enchantment> possibleEnchantments;
 | 
			
		||||
 | 
			
		||||
        if (enchantableCache.containsKey(treasureDrop.getType())) { // Check if possible enchantments is already cached for this item.
 | 
			
		||||
            possibleEnchantments = enchantableCache.get(treasureDrop.getType());
 | 
			
		||||
        } else { // If not, check which enchantments are possible
 | 
			
		||||
            possibleEnchantments = new ArrayList<Enchantment>();
 | 
			
		||||
 | 
			
		||||
            for (Enchantment enchantment : Enchantment.values()) {
 | 
			
		||||
                if (enchantment.canEnchantItem(treasureDrop)) {
 | 
			
		||||
                    possibleEnchantments.add(enchantment);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        	
 | 
			
		||||
            enchantableCache.put(treasureDrop.getType(), possibleEnchantments); // Cache these enchantments.
 | 
			
		||||
        }
 | 
			
		||||
        List<Enchantment> possibleEnchantments = getPossibleEnchantments(treasureDrop);
 | 
			
		||||
 | 
			
		||||
        // This make sure that the order isn't always the same, for example previously Unbreaking had a lot more chance to be used than any other enchant
 | 
			
		||||
        Collections.shuffle(possibleEnchantments, Misc.getRandom());
 | 
			
		||||
@@ -443,20 +422,38 @@ public class FishingManager extends SkillManager {
 | 
			
		||||
        int specificChance = 1;
 | 
			
		||||
 | 
			
		||||
        for (Enchantment possibleEnchantment : possibleEnchantments) {
 | 
			
		||||
            if (!treasureDrop.getItemMeta().hasConflictingEnchant(possibleEnchantment) && Misc.getRandom().nextInt(specificChance) == 0) {
 | 
			
		||||
                // We need our random enchantment level to fall in the range between getStartLevel() and getMaxLevel()
 | 
			
		||||
                // so we take a random number in the range of their difference, then add the start level.
 | 
			
		||||
                final int levelDiff = possibleEnchantment.getMaxLevel() - possibleEnchantment.getStartLevel();
 | 
			
		||||
                treasureDrop.addEnchantment(possibleEnchantment, Misc.getRandom().nextInt(levelDiff + 1) + possibleEnchantment.getStartLevel());
 | 
			
		||||
 | 
			
		||||
                specificChance++;
 | 
			
		||||
                enchanted = true;
 | 
			
		||||
            if (treasureDrop.getItemMeta().hasConflictingEnchant(possibleEnchantment) || Misc.getRandom().nextInt(specificChance) != 0) {
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            treasureDrop.addEnchantment(possibleEnchantment, Math.max(Misc.getRandom().nextInt(possibleEnchantment.getMaxLevel()) + 1, possibleEnchantment.getStartLevel()));
 | 
			
		||||
 | 
			
		||||
            specificChance++;
 | 
			
		||||
            enchanted = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return enchanted;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private List<Enchantment> getPossibleEnchantments(ItemStack treasureDrop) {
 | 
			
		||||
        Material dropType = treasureDrop.getType();
 | 
			
		||||
 | 
			
		||||
        if (enchantableCache.containsKey(dropType)) {
 | 
			
		||||
            return enchantableCache.get(dropType);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        List<Enchantment> possibleEnchantments = new ArrayList<Enchantment>();
 | 
			
		||||
 | 
			
		||||
        for (Enchantment enchantment : Enchantment.values()) {
 | 
			
		||||
            if (enchantment.canEnchantItem(treasureDrop)) {
 | 
			
		||||
                possibleEnchantments.add(enchantment);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        enchantableCache.put(dropType, possibleEnchantments);
 | 
			
		||||
        return possibleEnchantments;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the vanilla XP multiplier
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -46,10 +46,11 @@ public final class MobHealthbarUtils {
 | 
			
		||||
 | 
			
		||||
        PlayerProfile profile = UserManager.getPlayer(player).getProfile();
 | 
			
		||||
 | 
			
		||||
        if (profile == null) {
 | 
			
		||||
            return;
 | 
			
		||||
        if (profile.getMobHealthbarType() == null) {
 | 
			
		||||
            profile.setMobHealthbarType(Config.getInstance().getMobHealthbarDefault());
 | 
			
		||||
        }
 | 
			
		||||
        else if (profile.getMobHealthbarType() == MobHealthbarType.DISABLED) {
 | 
			
		||||
 | 
			
		||||
        if (profile.getMobHealthbarType() == MobHealthbarType.DISABLED) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user