Search in sources :

Example 56 with Item

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

the class BlastFurnaceDisplay method onBlastFurnace.

@EventHandler(priority = EventPriority.MONITOR)
public void onBlastFurnace(InventoryClickEvent event) {
    if (VanishUtils.isVanished((Player) event.getWhoClicked())) {
        return;
    }
    if (event.isCancelled()) {
        return;
    }
    if (event.getRawSlot() != 0 && event.getRawSlot() != 2) {
        return;
    }
    if (event.getCurrentItem() == null) {
        return;
    }
    if (event.getCurrentItem().getType().equals(Material.AIR)) {
        return;
    }
    if (event.getRawSlot() == 2) {
        if (event.getCursor() != null) {
            if (!event.getCursor().getType().equals(Material.AIR)) {
                if (event.getCursor().getAmount() >= event.getCursor().getType().getMaxStackSize()) {
                    return;
                }
            }
        }
    } else {
        if (event.getCursor() != null) {
            if (event.getCursor().getType().equals(event.getCurrentItem().getType())) {
                return;
            }
        }
    }
    if (event.isShiftClick()) {
        if (!InventoryUtils.stillHaveSpace(event.getWhoClicked().getInventory(), event.getView().getItem(event.getRawSlot()).getType())) {
            return;
        }
    }
    if (event.getAction().equals(InventoryAction.HOTBAR_MOVE_AND_READD)) {
        if (event.getWhoClicked().getInventory().getItem(event.getHotbarButton()) != null && !event.getWhoClicked().getInventory().getItem(event.getHotbarButton()).getType().equals(Material.AIR)) {
            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.BLAST_FURNACE)) {
        return;
    }
    Block block = event.getView().getTopInventory().getLocation().getBlock();
    if (!blastfurnaceMap.containsKey(block)) {
        return;
    }
    Map<String, Object> map = blastfurnaceMap.get(block);
    int slot = event.getRawSlot();
    ItemStack itemstack = event.getCurrentItem().clone();
    Location loc = block.getLocation();
    Player player = (Player) event.getWhoClicked();
    Bukkit.getScheduler().runTaskLater(InteractionVisualizer.plugin, () -> {
        if (player.getOpenInventory().getItem(slot) == null || (itemstack.isSimilar(player.getOpenInventory().getItem(slot)) && itemstack.getAmount() == player.getOpenInventory().getItem(slot).getAmount())) {
            return;
        }
        if (map.get("Item") instanceof String) {
            map.put("Item", new Item(block.getLocation().clone().add(0.5, 1.2, 0.5)));
        }
        Item item = (Item) map.get("Item");
        map.put("Item", "N/A");
        item.setItemStack(itemstack);
        item.setLocked(true);
        Vector lift = new Vector(0.0, 0.15, 0.0);
        Vector pickup = player.getEyeLocation().add(0.0, -0.5, 0.0).add(0.0, InteractionVisualizer.playerPickupYOffset, 0.0).toVector().subtract(loc.clone().add(0.5, 1.2, 0.5).toVector()).multiply(0.15).add(lift);
        item.setVelocity(pickup);
        item.setGravity(true);
        item.setPickupDelay(32767);
        PacketManager.updateItem(item);
        Bukkit.getScheduler().runTaskLater(InteractionVisualizer.plugin, () -> {
            SoundManager.playItemPickup(item.getLocation(), InteractionVisualizerAPI.getPlayerModuleList(Modules.ITEMDROP, KEY));
            PacketManager.removeItem(InteractionVisualizerAPI.getPlayers(), item);
        }, 8);
    }, 1);
}
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) Location(org.bukkit.Location) EventHandler(org.bukkit.event.EventHandler)

Example 57 with Item

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

the class BrewingStandDisplay method onBreakBrewingStand.

@EventHandler(priority = EventPriority.MONITOR)
public void onBreakBrewingStand(TileEntityRemovedEvent event) {
    Block block = event.getBlock();
    if (!brewstand.containsKey(block)) {
        return;
    }
    Map<String, Object> map = brewstand.get(block);
    if (map.get("Item") instanceof Item) {
        Item item = (Item) map.get("Item");
        PacketManager.removeItem(InteractionVisualizerAPI.getPlayers(), item);
    }
    if (map.get("Stand") instanceof ArmorStand) {
        ArmorStand stand = (ArmorStand) map.get("Stand");
        PacketManager.removeArmorStand(InteractionVisualizerAPI.getPlayers(), stand);
    }
    brewstand.remove(block);
}
Also used : Item(com.loohp.interactionvisualizer.entityholders.Item) ArmorStand(com.loohp.interactionvisualizer.entityholders.ArmorStand) Block(org.bukkit.block.Block) EventHandler(org.bukkit.event.EventHandler)

Example 58 with Item

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

the class InteractionVisualizerAPI method playFakeItemThrowAnimation.

/**
 * Play a throw item animation from location1 to location2.
 * If the boolean "pickupSound" is true, a pickup item sound will be played.
 */
public static void playFakeItemThrowAnimation(EntryKey entry, Location from, Location to, ItemStack itemstack, boolean pickupSound) {
    Item item = new Item(from.clone());
    item.setItemStack(itemstack);
    item.setLocked(true);
    item.setGravity(true);
    Vector lift = new Vector(0.0, 0.15, 0.0);
    Vector pickup = to.clone().toVector().subtract(from.clone().toVector()).multiply(0.15).add(lift);
    item.setVelocity(pickup);
    item.setPickupDelay(32767);
    PacketManager.sendItemSpawn(InteractionVisualizerAPI.getPlayerModuleList(Modules.ITEMDROP, entry), item);
    PacketManager.updateItem(item);
    Bukkit.getScheduler().runTaskLater(InteractionVisualizer.plugin, () -> {
        if (pickupSound) {
            SoundManager.playItemPickup(item.getLocation(), InteractionVisualizerAPI.getPlayerModuleList(Modules.ITEMDROP, entry));
        }
        PacketManager.removeItem(getPlayers(), item);
    }, 8);
}
Also used : Item(com.loohp.interactionvisualizer.entityholders.Item) Vector(org.bukkit.util.Vector)

Example 59 with Item

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

the class EnchantmentTableAnimation method playPickUpAnimation.

private CompletableFuture<Integer> playPickUpAnimation(ItemStack itemstack) {
    CompletableFuture<Integer> future = new CompletableFuture<>();
    if (!item.isPresent()) {
        future.complete(PLAY_PICKUP);
        return future;
    }
    Item item = this.item.get();
    item.setLocked(true);
    item.setItemStack(itemstack);
    if (itemstack == null || itemstack.getType().equals(Material.AIR)) {
        future.complete(PLAY_PICKUP);
        return future;
    }
    Vector lift = new Vector(0.0, 0.15, 0.0);
    Vector pickup = enchanter.getEyeLocation().add(0.0, -0.5, 0.0).add(0.0, InteractionVisualizer.playerPickupYOffset, 0.0).toVector().subtract(location.clone().add(0.5, 1.2, 0.5).toVector()).multiply(0.15).add(lift);
    item.setVelocity(pickup);
    item.setGravity(true);
    item.setPickupDelay(32767);
    PacketManager.updateItem(item);
    Bukkit.getScheduler().runTaskLater(plugin, () -> {
        SoundManager.playItemPickup(item.getLocation(), InteractionVisualizerAPI.getPlayerModuleList(Modules.ITEMDROP, KEY));
        PacketManager.removeItem(InteractionVisualizerAPI.getPlayers(), item);
        this.item = Optional.empty();
        future.complete(PLAY_PICKUP);
    }, 8);
    return future;
}
Also used : Item(com.loohp.interactionvisualizer.entityholders.Item) CompletableFuture(java.util.concurrent.CompletableFuture) Vector(org.bukkit.util.Vector)

Aggregations

Item (com.loohp.interactionvisualizer.entityholders.Item)59 Player (org.bukkit.entity.Player)45 EventHandler (org.bukkit.event.EventHandler)45 Block (org.bukkit.block.Block)43 Vector (org.bukkit.util.Vector)35 Location (org.bukkit.Location)32 ItemStack (org.bukkit.inventory.ItemStack)31 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