Can't give mobs Melon Bocks or Pumpkins as a Helmet? (Works with other Blocks)

Discussion in 'Plugin Development' started by Lynden Sylver, Jul 14, 2021.

Thread Status:
Not open for further replies.
  1. Offline

    Lynden Sylver

    For some reason my code doesn't like Melon Blocks or Pumpkins. But Dirt works. What's wrong?

    Event Class (onBlockBreak & spawn):

    Code:
    package me.lyndensylvester.halloween.listener;
    
    import java.util.Random;
    
    import org.bukkit.Bukkit;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.World;
    import org.bukkit.block.Block;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.EntityType;
    import org.bukkit.entity.LivingEntity;
    import org.bukkit.entity.Player;
    import org.bukkit.entity.Skeleton;
    import org.bukkit.entity.Zombie;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.entity.EntityDeathEvent;
    //import org.bukkit.event.block.BlockDropItemEvent;
    //import org.bukkit.event.block.BlockDamageEvent;
    //import org.bukkit.event.block.BlockGrowEvent;
    import org.bukkit.event.entity.EntitySpawnEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.inventory.EntityEquipment;
    import org.bukkit.inventory.ItemStack;
    
    import me.lyndensylvester.halloween.utils.Utils;
    import me.lyndensylvester.halloween.Main;
    import me.lyndensylvester.halloween.items.ItemManager;
    
    public class EventListener implements Listener {
    
       
        private static Main plugin;
       
        @SuppressWarnings("static-access")
        public EventListener(Main plugin) {
            this.plugin = plugin;
           
            Bukkit.getPluginManager().registerEvents(this, plugin);
        }
       
        Player p;
        Block b;
        EntityType t;
       
       
        /**
        * BlockBreak event
        * 
        * Detect if the player broke a melon block
        * and send a success or failure spawn message
        * 
        * @param event
        */
        @SuppressWarnings("deprecation")
        @EventHandler
        public void onBlockBreak(BlockBreakEvent event) {
           
            p = (Player) event.getPlayer();
            b = (Block) event.getBlock();
    
            if (b.getType() == Material.MELON) {
                Bukkit.broadcastMessage("Inside type check skelly");
                Random rand = new Random();
                var max = 100;
                var min = 0;
                int chance = rand.nextInt(max - min + 1)  + min;
                String chances = String.valueOf(chance);
    
                Bukkit.broadcastMessage("Skelly chance: " + chances);
                if (chance > -1) {
                    Location spawnLoc = p.getLocation().add(2,0,0);
                    World world = p.getWorld();
    
                    Bukkit.broadcastMessage("Inside chance check skelly");
                    @SuppressWarnings("unused")
                    Skeleton skeleton = (Skeleton) world.spawnEntity(spawnLoc, EntityType.SKELETON);
                    p.sendMessage(Utils.chat(plugin.getConfig().getString("Summon_Messages.Melon_Minion.melon_succes").replace("<player>", p.getName())));
                }
                else {
                    p.sendMessage(Utils.chat(plugin.getConfig().getString("Summon_Messages.Melon_Minion.melon_fail").replace("<player>", p.getName())));
                }
            }
            Bukkit.broadcastMessage("after type check skelly");
            if (b.getType() == Material.PUMPKIN) {
                Bukkit.broadcastMessage("Inside type check zombie");
                Random rand = new Random();
                var max = 100;
                var min = 0;
                int chance = rand.nextInt(max - min + 1) + min;
                String chances = String.valueOf(chance);
    
                Bukkit.broadcastMessage("Zombie chance: " + chances);
                if (chance > -1) {
                    Location spawnLoc = p.getLocation().add(2,0,0);
                    World world = p.getWorld();
                    Bukkit.broadcastMessage("Inside chance check zombie");
                    @SuppressWarnings("unused")
                    Zombie zombie =(Zombie) world.spawnEntity(spawnLoc, EntityType.ZOMBIE);
                    p.sendMessage(Utils.chat(plugin.getConfig().getString("Summon_Messages.Pumpkin_Minion.pumpkin_succes").replace("<player>", p.getName())));
    
                }
                else {
                    p.sendMessage(Utils.chat(plugin.getConfig().getString("Summon_Messages.Pumpkin_Minion.pumpkin_fail").replace("<player>", p.getName())));
                }
            }
            Bukkit.broadcastMessage("after type check zombie");
            if (plugin.getConfig().getBoolean("Spawn_Custom_Mobs.spawn") == false) {
                p.sendMessage(Utils.chat(plugin.getConfig().getString("Spawn_Custom_Mobs.mobs")));
                Bukkit.broadcastMessage("Inside  spawn check");
            }
            Bukkit.broadcastMessage("after type checks");
        }
    
        /**
        * EntitySpawn event
        * 
        * Spawn a skeleton 2 blocks to the right of the player
        * 
        * @param event
        */
        @SuppressWarnings({ })
        @EventHandler
        public void spawn(EntitySpawnEvent event) {
           
                Entity entity = event.getEntity();
               
            if ((entity instanceof Skeleton) && (plugin.getConfig().getBoolean("Spawn_Custom_Mobs.spawn") == true)) {
    
                EntityEquipment  ee = ((Skeleton)entity).getEquipment();
                ee.setHelmet(new ItemStack(Material.MELON));
                ee.setHelmetDropChance(100);
            }
            //Bukkit.broadcastMessage("after spawn check skelly");
    
            if ((entity instanceof Zombie) && (plugin.getConfig().getBoolean("Spawn_Custom_Mobs.spawn") == true)) {
    
                EntityEquipment  ee = ((Zombie)entity).getEquipment();
                ee.setHelmet(new ItemStack(Material.DIRT));
                ee.setHelmetDropChance(100);
            }
            //Bukkit.broadcastMessage("after spawn check zombie");
    
           
               
        }
    
     
Thread Status:
Not open for further replies.

Share This Page