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);
}
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);
}
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);
}
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;
}
Aggregations