Inventory Slot Check

Discussion in 'Plugin Development' started by iWareWolf, Jan 19, 2013.

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

    iWareWolf

    I was wondering if this would work. It checks the inventory for the closest enchanted book with no enchantment and then checks the name of it and at the end, does something. This all gets triggered by a stick named Wand.

    Code:
    package Listener;
     
    import me.Magic.Magic;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    import org.bukkit.entity.SmallFireball;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
     
    public class MagicListener implements Listener {
        private Magic plugin;
     
        public MagicListener(Magic plugin) {
            this.plugin = plugin;
        }
     
        @EventHandler
        public void onInteract(PlayerInteractEvent e) {
            Player p = e.getPlayer();
            ItemStack hand = p.getItemInHand();
            ItemMeta newStick = hand.getItemMeta();
            if (hand.getTypeId() == 280
                    && newStick.getDisplayName().equals(ChatColor.BLUE + "Wand")) {
                if (e.getAction() == Action.RIGHT_CLICK_AIR
                        || e.getAction() == Action.RIGHT_CLICK_BLOCK) {
                    int Slot = 0;
                    while (p.getInventory().getItem(Slot) != new ItemStack(
                            Material.BOOK) && Slot < 35) {
                        Slot++;
                    }
                    if (p.getInventory().getItem(Slot) == new ItemStack(
                            Material.ENCHANTED_BOOK)) {
                        ItemStack book = p.getInventory().getItem(Slot);
                        ItemMeta newBook = book.getItemMeta();
                        if (newBook.getDisplayName().equals(
                                ChatColor.DARK_RED + "Spell Book of Fireball")
                                && !(newBook.hasEnchants())) {
                            p.getInventory().remove(Slot);
                            if (p.getFoodLevel() > 2) {
                                p.setFoodLevel(p.getFoodLevel() - 2);
                                p.sendMessage("You have casted Fireball!");
                                SmallFireball fireball = p
                                        .launchProjectile(SmallFireball.class);
                                fireball.setShooter(p);
                                fireball.setYield(2);
                                fireball.setBounce(false);
                            } else {
                                p.sendMessage(ChatColor.RED
                                        + "Your current mana level is too low to cast this spell");
                            }
                        }
                        if (newBook.getDisplayName().equals(
                                ChatColor.RED + "Spell Book of Health")
                                && !(newBook.hasEnchants())) {
                            p.getInventory().remove(Slot);
                            if (p.getFoodLevel() > 10) {
                                if (p.getHealth() < 12) {
                                    p.setHealth(20);
                                }
                                if (p.getHealth() > 12) {
                                    p.setHealth(p.getHealth() + 8);
                                }
                                p.setFoodLevel(p.getFoodLevel() - 15);
                                p.sendMessage("You have casted Regen!");
                            } else {
                                p.sendMessage(ChatColor.RED
                                        + "Your current mana level is too low to cast this spell");
                            }
                        }
                    }
                }
            }
        }
    }
    
     
  2. Offline

    chasechocolate

    Have you tried testing it?
     
  3. Offline

    iWareWolf

    chasechocolate
    Err not really lol. I'm just really unsure since I learnt the while loop yesterday.
     
  4. Offline

    iWareWolf

    It doesn't seem to work. Here is my updated code btw:
    Code:
    package Listener;
     
    import me.Magic.Magic;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    import org.bukkit.entity.SmallFireball;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
     
    public class MagicListener implements Listener {
        private Magic plugin;
     
        public MagicListener(Magic plugin) {
            this.plugin = plugin;
        }
     
        @EventHandler
        public void onInteract(PlayerInteractEvent e) {
            Player p = e.getPlayer();
            ItemStack hand = p.getItemInHand();
            ItemMeta newStick = hand.getItemMeta();
            if (newStick.hasDisplayName()) {
                if (hand.getTypeId() == 280
                        && newStick.getDisplayName().equals("Wand")) {
                    if (e.getAction() == Action.RIGHT_CLICK_AIR
                            || e.getAction() == Action.RIGHT_CLICK_BLOCK) {
                        int Slot = 0;
                        if (p.getInventory().getItem(Slot) != new ItemStack(
                                Material.BOOK) && Slot < 35) {
                            Slot++;
                        }
                        if (p.getInventory().getItem(Slot) == new ItemStack(
                                Material.ENCHANTED_BOOK)) {
                            ItemStack book = p.getInventory().getItem(Slot);
                            ItemMeta newBook = book.getItemMeta();
                            if (newBook.getDisplayName().equals(
                                    "Spell Book of Fireball")
                                    && !(newBook.hasEnchants())) {
                                p.getInventory().remove(Slot);
                                if (p.getFoodLevel() > 2) {
                                    p.setFoodLevel(p.getFoodLevel() - 2);
                                    p.sendMessage("You have casted Fireball!");
                                    SmallFireball fireball = p
                                            .launchProjectile(SmallFireball.class);
                                    fireball.setShooter(p);
                                    fireball.setYield(2);
                                    fireball.setBounce(false);
                                } else {
                                    p.sendMessage(ChatColor.RED
                                            + "Your current mana level is too low to cast this spell");
                                }
                            }
                            if (newBook.getDisplayName().equals(
                                    "Spell Book of Health")
                                    && !(newBook.hasEnchants())) {
                                p.getInventory().remove(Slot);
                                if (p.getFoodLevel() > 10) {
                                    if (p.getHealth() < 12) {
                                        p.setHealth(20);
                                    }
                                    if (p.getHealth() > 12) {
                                        p.setHealth(p.getHealth() + 8);
                                    }
                                    p.setFoodLevel(p.getFoodLevel() - 15);
                                    p.sendMessage("You have casted Regen!");
                                } else {
                                    p.sendMessage(ChatColor.RED
                                            + "Your current mana level is too low to cast this spell");
                                }
                            }
                        } else {
                            p.sendMessage("You need " + ChatColor.BLUE
                                    + "Spell Books" + ChatColor.WHITE
                                    + " to use the wand!");
                        }
                    }
                }
            }
        }
    }
    Anyone?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 30, 2016
  5. Offline

    iWareWolf

  6. Offline

    Scipione

    an if statement won't loop you, you need to use "for" or "while"
     
Thread Status:
Not open for further replies.

Share This Page