Search in sources :

Example 46 with Item

use of com.loohp.interactionvisualizer.entityholders.Item in project InteractionVisualizer by LOOHP.

the class DispenserDisplay method onDragDispenser.

@EventHandler(priority = EventPriority.MONITOR)
public void onDragDispenser(InventoryDragEvent event) {
    Player player = (Player) event.getWhoClicked();
    if (event.isCancelled()) {
        return;
    }
    if (event.getWhoClicked().getGameMode().equals(GameMode.SPECTATOR)) {
        return;
    }
    if (event.getView().getTopInventory() == null) {
        return;
    }
    try {
        if (event.getView().getTopInventory().getLocation() == null) {
            return;
        }
    } catch (Exception | AbstractMethodError e) {
        return;
    }
    if (event.getView().getTopInventory().getLocation().getBlock() == null) {
        return;
    }
    if (!event.getView().getTopInventory().getLocation().getBlock().getType().equals(Material.DISPENSER)) {
        return;
    }
    boolean ok = false;
    for (Entry<Integer, ItemStack> entry : event.getNewItems().entrySet()) {
        ItemStack item = event.getView().getItem(entry.getKey());
        if (item == null) {
            ok = true;
            break;
        }
        if (item.getType().equals(Material.AIR)) {
            ok = true;
            break;
        }
        if (!item.getType().equals(entry.getValue().getType())) {
            continue;
        }
        if (item.getAmount() < item.getType().getMaxStackSize()) {
            ok = true;
            break;
        }
    }
    if (!ok) {
        return;
    }
    Inventory topInventory = event.getView().getTopInventory();
    Block block = topInventory.getLocation().getBlock();
    Location loc = block.getLocation();
    for (int slot : event.getRawSlots()) {
        if (slot >= 0 && slot < topInventory.getSize()) {
            PacketManager.sendHandMovement(InteractionVisualizerAPI.getPlayers(), player);
            ItemStack itemstack = event.getOldCursor();
            if (itemstack != null) {
                if (itemstack.getType().equals(Material.AIR)) {
                    itemstack = null;
                }
            }
            if (itemstack != null) {
                Item item = new Item(event.getWhoClicked().getEyeLocation().add(0.0, InteractionVisualizer.playerPickupYOffset, 0.0));
                Vector offset = new Vector(0.0, 0.15, 0.0);
                Vector vector = loc.clone().add(0.5, 0.5, 0.5).toVector().subtract(event.getWhoClicked().getEyeLocation().clone().add(0.0, InteractionVisualizer.playerPickupYOffset, 0.0).toVector()).multiply(0.13).add(offset);
                item.setVelocity(vector);
                PacketManager.sendItemSpawn(InteractionVisualizerAPI.getPlayerModuleList(Modules.ITEMDROP, KEY), item);
                item.setItemStack(itemstack);
                item.setCustomName(System.currentTimeMillis() + "");
                item.setPickupDelay(32767);
                item.setGravity(true);
                PacketManager.updateItem(item);
                if (!link.containsKey(player)) {
                    link.put(player, new ArrayList<Item>());
                }
                List<Item> list = link.get(player);
                list.add(item);
                Bukkit.getScheduler().runTaskLater(InteractionVisualizer.plugin, () -> {
                    item.teleport(loc.clone().add(0.5, 0.5, 0.5));
                    item.setVelocity(new Vector(0.0, 0.0, 0.0));
                    item.setGravity(false);
                    PacketManager.updateItem(item);
                }, 8);
                Bukkit.getScheduler().runTaskLater(InteractionVisualizer.plugin, () -> {
                    PacketManager.removeItem(InteractionVisualizerAPI.getPlayers(), item);
                    list.remove(item);
                }, 20);
            }
            break;
        }
    }
}
Also used : Player(org.bukkit.entity.Player) Item(com.loohp.interactionvisualizer.entityholders.Item) Block(org.bukkit.block.Block) ItemStack(org.bukkit.inventory.ItemStack) Vector(org.bukkit.util.Vector) Inventory(org.bukkit.inventory.Inventory) Location(org.bukkit.Location) EventHandler(org.bukkit.event.EventHandler)

Example 47 with Item

use of com.loohp.interactionvisualizer.entityholders.Item in project InteractionVisualizer by LOOHP.

the class DoubleChestDisplay method onCloseDoubleChest.

@EventHandler
public void onCloseDoubleChest(InventoryCloseEvent event) {
    if (event.getView().getTopInventory() == null) {
        return;
    }
    try {
        if (event.getView().getTopInventory().getLocation() == null) {
            return;
        }
    } catch (Exception e) {
        return;
    }
    if (!LocationUtils.isLoaded(event.getView().getTopInventory().getLocation())) {
        return;
    }
    if (event.getView().getTopInventory().getLocation().getBlock() == null) {
        return;
    }
    if (!link.containsKey((Player) event.getPlayer())) {
        return;
    }
    List<Item> list = link.get((Player) event.getPlayer());
    for (Item item : list) {
        PacketManager.removeItem(InteractionVisualizerAPI.getPlayers(), item);
    }
    link.remove((Player) event.getPlayer());
}
Also used : Item(com.loohp.interactionvisualizer.entityholders.Item) Player(org.bukkit.entity.Player) EventHandler(org.bukkit.event.EventHandler)

Example 48 with Item

use of com.loohp.interactionvisualizer.entityholders.Item in project InteractionVisualizer by LOOHP.

the class DropperDisplay method onDragDropper.

@EventHandler(priority = EventPriority.MONITOR)
public void onDragDropper(InventoryDragEvent event) {
    Player player = (Player) event.getWhoClicked();
    if (event.isCancelled()) {
        return;
    }
    if (event.getWhoClicked().getGameMode().equals(GameMode.SPECTATOR)) {
        return;
    }
    if (event.getView().getTopInventory() == null) {
        return;
    }
    try {
        if (event.getView().getTopInventory().getLocation() == null) {
            return;
        }
    } catch (Exception | AbstractMethodError e) {
        return;
    }
    if (!LocationUtils.isLoaded(event.getView().getTopInventory().getLocation())) {
        return;
    }
    if (event.getView().getTopInventory().getLocation().getBlock() == null) {
        return;
    }
    if (!event.getView().getTopInventory().getLocation().getBlock().getType().equals(Material.DROPPER)) {
        return;
    }
    boolean ok = false;
    for (Entry<Integer, ItemStack> entry : event.getNewItems().entrySet()) {
        ItemStack item = event.getView().getItem(entry.getKey());
        if (item == null) {
            ok = true;
            break;
        }
        if (item.getType().equals(Material.AIR)) {
            ok = true;
            break;
        }
        if (!item.getType().equals(entry.getValue().getType())) {
            continue;
        }
        if (item.getAmount() < item.getType().getMaxStackSize()) {
            ok = true;
            break;
        }
    }
    if (!ok) {
        return;
    }
    Inventory topInventory = event.getView().getTopInventory();
    Block block = topInventory.getLocation().getBlock();
    Location loc = block.getLocation();
    for (int slot : event.getRawSlots()) {
        if (slot >= 0 && slot < topInventory.getSize()) {
            PacketManager.sendHandMovement(InteractionVisualizerAPI.getPlayers(), player);
            ItemStack itemstack = event.getOldCursor();
            if (itemstack != null) {
                if (itemstack.getType().equals(Material.AIR)) {
                    itemstack = null;
                }
            }
            if (itemstack != null) {
                Item item = new Item(event.getWhoClicked().getEyeLocation().add(0.0, InteractionVisualizer.playerPickupYOffset, 0.0));
                Vector offset = new Vector(0.0, 0.15, 0.0);
                Vector vector = loc.clone().add(0.5, 0.5, 0.5).toVector().subtract(event.getWhoClicked().getEyeLocation().clone().add(0.0, InteractionVisualizer.playerPickupYOffset, 0.0).toVector()).multiply(0.13).add(offset);
                item.setVelocity(vector);
                PacketManager.sendItemSpawn(InteractionVisualizerAPI.getPlayerModuleList(Modules.ITEMDROP, KEY), item);
                item.setItemStack(itemstack);
                item.setCustomName(System.currentTimeMillis() + "");
                item.setPickupDelay(32767);
                item.setGravity(true);
                PacketManager.updateItem(item);
                if (!link.containsKey(player)) {
                    link.put(player, new ArrayList<Item>());
                }
                List<Item> list = link.get(player);
                list.add(item);
                Bukkit.getScheduler().runTaskLater(InteractionVisualizer.plugin, () -> {
                    item.teleport(loc.clone().add(0.5, 0.5, 0.5));
                    item.setVelocity(new Vector(0.0, 0.0, 0.0));
                    item.setGravity(false);
                    PacketManager.updateItem(item);
                }, 8);
                Bukkit.getScheduler().runTaskLater(InteractionVisualizer.plugin, () -> {
                    PacketManager.removeItem(InteractionVisualizerAPI.getPlayers(), item);
                    list.remove(item);
                }, 20);
            }
            break;
        }
    }
}
Also used : Player(org.bukkit.entity.Player) Item(com.loohp.interactionvisualizer.entityholders.Item) Block(org.bukkit.block.Block) ItemStack(org.bukkit.inventory.ItemStack) Vector(org.bukkit.util.Vector) Inventory(org.bukkit.inventory.Inventory) Location(org.bukkit.Location) EventHandler(org.bukkit.event.EventHandler)

Example 49 with Item

use of com.loohp.interactionvisualizer.entityholders.Item in project InteractionVisualizer by LOOHP.

the class StonecutterDisplay method onCloseStonecutter.

@EventHandler
public void onCloseStonecutter(InventoryCloseEvent event) {
    if (!playermap.containsKey((Player) event.getPlayer())) {
        return;
    }
    Block block = playermap.get((Player) event.getPlayer());
    if (!openedStonecutter.containsKey(block)) {
        return;
    }
    Map<String, Object> map = openedStonecutter.get(block);
    if (!map.get("Player").equals(event.getPlayer())) {
        return;
    }
    if (map.get("Item") instanceof Item) {
        Item entity = (Item) map.get("Item");
        PacketManager.removeItem(InteractionVisualizerAPI.getPlayers(), entity);
    }
    openedStonecutter.remove(block);
    playermap.remove((Player) event.getPlayer());
}
Also used : Item(com.loohp.interactionvisualizer.entityholders.Item) Player(org.bukkit.entity.Player) Block(org.bukkit.block.Block) EventHandler(org.bukkit.event.EventHandler)

Example 50 with Item

use of com.loohp.interactionvisualizer.entityholders.Item in project InteractionVisualizer by LOOHP.

the class StonecutterDisplay method run.

@Override
public int run() {
    return new BukkitRunnable() {

        public void run() {
            Iterator<Block> itr = openedStonecutter.keySet().iterator();
            int count = 0;
            int maxper = (int) Math.ceil((double) openedStonecutter.size() / (double) 5);
            int delay = 1;
            while (itr.hasNext()) {
                count++;
                if (count > maxper) {
                    count = 0;
                    delay++;
                }
                Block block = itr.next();
                new BukkitRunnable() {

                    public void run() {
                        if (!openedStonecutter.containsKey(block)) {
                            return;
                        }
                        Map<String, Object> map = openedStonecutter.get(block);
                        if (block.getType().equals(Material.STONECUTTER)) {
                            Player player = (Player) map.get("Player");
                            if (!player.getGameMode().equals(GameMode.SPECTATOR)) {
                                if (player.getOpenInventory() != null) {
                                    if (player.getOpenInventory().getTopInventory() != null) {
                                        if (player.getOpenInventory().getTopInventory() instanceof StonecutterInventory) {
                                            return;
                                        }
                                    }
                                }
                            }
                        }
                        if (map.get("Item") instanceof Item) {
                            Item entity = (Item) map.get("Item");
                            PacketManager.removeItem(InteractionVisualizerAPI.getPlayers(), entity);
                        }
                        openedStonecutter.remove(block);
                    }
                }.runTaskLater(InteractionVisualizer.plugin, delay);
            }
        }
    }.runTaskTimer(InteractionVisualizer.plugin, 0, 5).getTaskId();
}
Also used : Item(com.loohp.interactionvisualizer.entityholders.Item) Player(org.bukkit.entity.Player) StonecutterInventory(org.bukkit.inventory.StonecutterInventory) BukkitRunnable(org.bukkit.scheduler.BukkitRunnable) Block(org.bukkit.block.Block) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

Item (com.loohp.interactionvisualizer.entityholders.Item)62 EventHandler (org.bukkit.event.EventHandler)48 Player (org.bukkit.entity.Player)47 Block (org.bukkit.block.Block)43 Vector (org.bukkit.util.Vector)37 Location (org.bukkit.Location)34 ItemStack (org.bukkit.inventory.ItemStack)33 ArmorStand (com.loohp.interactionvisualizer.entityholders.ArmorStand)23 Inventory (org.bukkit.inventory.Inventory)22 HashMap (java.util.HashMap)7 InventoryView (org.bukkit.inventory.InventoryView)5 BukkitRunnable (org.bukkit.scheduler.BukkitRunnable)5 DynamicVisualizerEntity (com.loohp.interactionvisualizer.entityholders.DynamicVisualizerEntity)4 ItemFrame (com.loohp.interactionvisualizer.entityholders.ItemFrame)4 VisualizerEntity (com.loohp.interactionvisualizer.entityholders.VisualizerEntity)4 Collection (java.util.Collection)4 Chest (org.bukkit.block.Chest)4 DoubleChest (org.bukkit.block.DoubleChest)4 InventoryHolder (org.bukkit.inventory.InventoryHolder)4 HashSet (java.util.HashSet)3