use of com.loohp.interactionvisualizer.entityholders.Item in project InteractionVisualizer by LOOHP.
the class CraftingTableDisplay method process.
@Override
public void process(Player player) {
if (VanishUtils.isVanished(player)) {
return;
}
if (!playermap.containsKey(player)) {
if (player.getGameMode().equals(GameMode.SPECTATOR)) {
return;
}
if (player.getOpenInventory().getTopInventory().getLocation() == null) {
return;
}
if (player.getOpenInventory().getTopInventory().getLocation().getBlock() == null) {
return;
}
if (!InteractionVisualizer.version.isLegacy()) {
if (!InteractionVisualizer.version.equals(MCVersion.V1_13) && !InteractionVisualizer.version.equals(MCVersion.V1_13_1)) {
if (!player.getOpenInventory().getTopInventory().getLocation().getBlock().getType().toString().equalsIgnoreCase("CRAFTING_TABLE")) {
return;
}
} else {
if (!(player.getOpenInventory().getTopInventory() instanceof CraftingInventory)) {
return;
}
if (((CraftingInventory) player.getOpenInventory().getTopInventory()).getMatrix().length != 9) {
return;
}
if (!player.getTargetBlock(MaterialUtils.getNonSolidSet(), 7).getType().toString().equalsIgnoreCase("CRAFTING_TABLE")) {
return;
}
}
} else {
if (!(player.getOpenInventory().getTopInventory() instanceof CraftingInventory)) {
return;
}
if (((CraftingInventory) player.getOpenInventory().getTopInventory()).getMatrix().length != 9) {
return;
}
if (!player.getTargetBlock(MaterialUtils.getNonSolidSet(), 7).getType().toString().equalsIgnoreCase("WORKBENCH")) {
return;
}
}
Block block = null;
InventoryView view = player.getOpenInventory();
if (!InteractionVisualizer.version.isLegacy() && !InteractionVisualizer.version.equals(MCVersion.V1_13) && !InteractionVisualizer.version.equals(MCVersion.V1_13_1)) {
block = view.getTopInventory().getLocation().getBlock();
} else {
block = player.getTargetBlock(MaterialUtils.getNonSolidSet(), 7);
}
playermap.put(player, block);
}
InventoryView view = player.getOpenInventory();
Block block = playermap.get(player);
Location loc = block.getLocation();
if (!openedBenches.containsKey(block)) {
Map<String, Object> map = new HashMap<>();
map.put("Player", player);
map.put("0", "N/A");
map.putAll(spawnArmorStands(player, block));
openedBenches.put(block, map);
}
Map<String, Object> map = openedBenches.get(block);
if (!map.get("Player").equals(player)) {
return;
}
ItemStack[] items = new ItemStack[] { view.getItem(1), view.getItem(2), view.getItem(3), view.getItem(4), view.getItem(5), view.getItem(6), view.getItem(7), view.getItem(8), view.getItem(9) };
if (view.getItem(0) != null) {
ItemStack itemstack = view.getItem(0);
if (itemstack == null || itemstack.getType().equals(Material.AIR)) {
itemstack = null;
}
Item item = null;
if (map.get("0") instanceof String) {
if (itemstack != null) {
item = new Item(loc.clone().add(0.5, 1.2, 0.5));
item.setItemStack(itemstack);
item.setVelocity(new Vector(0, 0, 0));
item.setPickupDelay(32767);
item.setGravity(false);
map.put("0", item);
PacketManager.sendItemSpawn(InteractionVisualizerAPI.getPlayerModuleList(Modules.ITEMDROP, KEY), item);
PacketManager.updateItem(item);
} else {
map.put("0", "N/A");
}
} else {
item = (Item) map.get("0");
if (itemstack != null) {
if (!item.getItemStack().equals(itemstack)) {
item.setItemStack(itemstack);
PacketManager.updateItem(item);
}
} else {
map.put("0", "N/A");
PacketManager.removeItem(InteractionVisualizerAPI.getPlayers(), item);
}
}
}
for (int i = 0; i < 9; i++) {
ArmorStand stand = (ArmorStand) map.get(String.valueOf(i + 1));
ItemStack item = items[i];
if (item == null || item.getType().equals(Material.AIR)) {
item = null;
}
if (item != null) {
boolean changed = true;
if (MaterialUtils.getMaterialType(item.getType()).equals(MaterialMode.BLOCK) && !standMode(stand).equals(MaterialMode.BLOCK)) {
toggleStandMode(stand, "Block");
} else if (MaterialUtils.getMaterialType(item.getType()).equals(MaterialMode.TOOL) && !standMode(stand).equals(MaterialMode.TOOL)) {
toggleStandMode(stand, "Tool");
} else if (MaterialUtils.getMaterialType(item.getType()).equals(MaterialMode.ITEM) && !standMode(stand).equals(MaterialMode.ITEM)) {
toggleStandMode(stand, "Item");
} else if (MaterialUtils.getMaterialType(item.getType()).equals(MaterialMode.STANDING) && !standMode(stand).equals(MaterialMode.STANDING)) {
toggleStandMode(stand, "Standing");
} else if (MaterialUtils.getMaterialType(item.getType()).equals(MaterialMode.LOWBLOCK) && !standMode(stand).equals(MaterialMode.LOWBLOCK)) {
toggleStandMode(stand, "LowBlock");
} else {
changed = false;
}
if (!item.getType().equals(stand.getItemInMainHand().getType())) {
changed = true;
stand.setItemInMainHand(item);
}
if (changed) {
PacketManager.updateArmorStand(stand);
}
} else {
if (!stand.getItemInMainHand().getType().equals(Material.AIR)) {
stand.setItemInMainHand(new ItemStack(Material.AIR));
PacketManager.updateArmorStand(stand);
}
}
}
Location loc1 = ((ArmorStand) map.get("5")).getLocation();
InteractionVisualizer.lightManager.deleteLight(loc1);
int skylight = loc1.getBlock().getRelative(BlockFace.UP).getLightFromSky();
int blocklight = loc1.getBlock().getRelative(BlockFace.UP).getLightFromBlocks() - 1;
blocklight = Math.max(blocklight, 0);
if (skylight > 0) {
InteractionVisualizer.lightManager.createLight(loc1, skylight, LightType.SKY);
}
if (blocklight > 0) {
InteractionVisualizer.lightManager.createLight(loc1, blocklight, LightType.BLOCK);
}
}
use of com.loohp.interactionvisualizer.entityholders.Item in project InteractionVisualizer by LOOHP.
the class DispenserDisplay method onCloseDispenser.
@EventHandler
public void onCloseDispenser(InventoryCloseEvent event) {
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 (!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());
}
use of com.loohp.interactionvisualizer.entityholders.Item in project InteractionVisualizer by LOOHP.
the class DispenserDisplay method onUseDispenser.
@EventHandler(priority = EventPriority.MONITOR)
public void onUseDispenser(InventoryClickEvent event) {
Player player = (Player) event.getWhoClicked();
if (event.isCancelled()) {
return;
}
if (VanishUtils.isVanished(player)) {
return;
}
if (OpenInvUtils.isSlientChest(player)) {
return;
}
if (event.getWhoClicked().getGameMode().equals(GameMode.SPECTATOR)) {
return;
}
if (event.getView().getTopInventory() == null) {
return;
}
if (!event.getView().getTopInventory().getType().equals(InventoryType.DISPENSER)) {
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;
}
if (event.getClick().equals(ClickType.MIDDLE) && !event.getWhoClicked().getGameMode().equals(GameMode.CREATIVE)) {
return;
}
Inventory topInventory = event.getView().getTopInventory();
Block block = topInventory.getLocation().getBlock();
Location loc = block.getLocation();
boolean isIn = true;
boolean isMove = false;
ItemStack itemstack = null;
if (event.getRawSlot() >= 0 && event.getRawSlot() < topInventory.getSize()) {
itemstack = event.getCurrentItem();
if (itemstack != null) {
if (itemstack.getType().equals(Material.AIR)) {
itemstack = null;
} else {
isIn = false;
isMove = true;
}
}
if (itemstack == null) {
itemstack = event.getCursor();
if (itemstack != null) {
if (itemstack.getType().equals(Material.AIR)) {
itemstack = null;
} else {
isMove = true;
}
}
} else {
if (event.getCursor() != null) {
if (event.getCursor().getType().equals(itemstack.getType())) {
isIn = true;
}
}
}
if (itemstack == null) {
if (event.getAction().equals(InventoryAction.HOTBAR_MOVE_AND_READD) || event.getAction().equals(InventoryAction.HOTBAR_SWAP)) {
itemstack = event.getWhoClicked().getInventory().getItem(event.getHotbarButton());
if (itemstack != null) {
if (itemstack.getType().equals(Material.AIR)) {
itemstack = null;
} else {
isMove = true;
}
}
}
}
}
if (itemstack == null) {
if (event.getAction().equals(InventoryAction.MOVE_TO_OTHER_INVENTORY)) {
itemstack = event.getCurrentItem();
if (itemstack != null) {
if (itemstack.getType().equals(Material.AIR)) {
itemstack = null;
} else {
isMove = true;
}
}
}
}
if (event.isShiftClick() && event.getView().getItem(event.getRawSlot()) != null) {
if (isIn) {
if (!InventoryUtils.stillHaveSpace(event.getView().getTopInventory(), event.getView().getItem(event.getRawSlot()).getType())) {
return;
}
} else {
if (!InventoryUtils.stillHaveSpace(event.getWhoClicked().getInventory(), event.getView().getItem(event.getRawSlot()).getType())) {
return;
}
}
}
if (event.getCursor() != null) {
if (!event.getCursor().getType().equals(Material.AIR)) {
if (event.getCurrentItem() != null) {
if (!event.getCurrentItem().getType().equals(Material.AIR)) {
if (event.getCurrentItem().getType().equals(event.getCursor().getType())) {
if (event.getCurrentItem().getAmount() >= event.getCurrentItem().getType().getMaxStackSize()) {
return;
}
}
}
}
}
}
if (isMove) {
PacketManager.sendHandMovement(InteractionVisualizerAPI.getPlayers(), player);
if (itemstack != null) {
Item item = new Item(loc.clone().add(0.5, 0.5, 0.5).add(event.getWhoClicked().getLocation().getDirection().multiply(-0.8)));
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).add(0.0, -0.5, 0.0).toVector()).multiply(-0.13).add(offset);
item.setVelocity(vector);
if (isIn) {
item.teleport(event.getWhoClicked().getEyeLocation().add(0.0, InteractionVisualizer.playerPickupYOffset, 0.0));
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.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);
boolean finalIsIn = isIn;
Bukkit.getScheduler().runTaskLater(InteractionVisualizer.plugin, () -> {
if (finalIsIn) {
item.teleport(loc.clone().add(0.5, 0.5, 0.5));
} else {
item.teleport(event.getWhoClicked().getEyeLocation().add(0.0, -0.5, 0.0).add(0.0, InteractionVisualizer.playerPickupYOffset, 0.0));
}
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);
}
}
}
use of com.loohp.interactionvisualizer.entityholders.Item in project InteractionVisualizer by LOOHP.
the class DoubleChestDisplay method onDragDoubleChest.
@EventHandler(priority = EventPriority.MONITOR)
public void onDragDoubleChest(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 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.CHEST) && !event.getView().getTopInventory().getLocation().getBlock().getType().equals(Material.TRAPPED_CHEST)) {
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();
Chest chest = (Chest) block.getState();
InventoryHolder holder = chest.getInventory().getHolder();
if (!(holder instanceof DoubleChest)) {
return;
}
DoubleChest doublechest = (DoubleChest) holder;
BlockFace facing = null;
if (!InteractionVisualizer.version.isLegacy()) {
BlockData blockData = chest.getBlockData();
facing = ((Directional) blockData).getFacing();
} else {
facing = LegacyFacingUtils.getFacing(chest.getBlock());
}
if (facing.equals(BlockFace.EAST)) {
block = doublechest.getLeftSide().getInventory().getLocation().getBlock();
loc = block.getLocation().add(0.0, 0.0, 0.5);
} else if (facing.equals(BlockFace.SOUTH)) {
block = doublechest.getRightSide().getInventory().getLocation().getBlock();
loc = block.getLocation().add(0.5, 0.0, 0.0);
} else if (facing.equals(BlockFace.WEST)) {
block = doublechest.getRightSide().getInventory().getLocation().getBlock();
loc = block.getLocation().add(0.0, 0.0, 0.5);
} else if (facing.equals(BlockFace.NORTH)) {
block = doublechest.getLeftSide().getInventory().getLocation().getBlock();
loc = block.getLocation().add(0.5, 0.0, 0.0);
}
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, 1, 0.5).toVector().subtract(event.getWhoClicked().getEyeLocation().clone().add(0.0, InteractionVisualizer.playerPickupYOffset, 0.0).toVector()).multiply(0.15).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);
Location finalLoc = loc;
Bukkit.getScheduler().runTaskLater(InteractionVisualizer.plugin, () -> {
item.teleport(finalLoc.clone().add(0.5, 1, 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;
}
}
}
use of com.loohp.interactionvisualizer.entityholders.Item in project InteractionVisualizer by LOOHP.
the class DoubleChestDisplay method onUseDoubleChest.
@EventHandler(priority = EventPriority.MONITOR)
public void onUseDoubleChest(InventoryClickEvent event) {
Player player = (Player) event.getWhoClicked();
if (event.isCancelled()) {
return;
}
if (VanishUtils.isVanished(player)) {
return;
}
if (OpenInvUtils.isSlientChest(player)) {
return;
}
if (event.getWhoClicked().getGameMode().equals(GameMode.SPECTATOR)) {
return;
}
if (event.getView().getTopInventory() == null) {
return;
}
if (!event.getView().getTopInventory().getType().equals(InventoryType.CHEST)) {
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 (!event.getView().getTopInventory().getLocation().getBlock().getType().equals(Material.CHEST) && !event.getView().getTopInventory().getLocation().getBlock().getType().equals(Material.TRAPPED_CHEST)) {
return;
}
if (event.getClick().equals(ClickType.MIDDLE) && !event.getWhoClicked().getGameMode().equals(GameMode.CREATIVE)) {
return;
}
Inventory topInventory = event.getView().getTopInventory();
Block block = topInventory.getLocation().getBlock();
Location loc = block.getLocation();
Chest chest = (Chest) block.getState();
InventoryHolder holder = chest.getInventory().getHolder();
if (!(holder instanceof DoubleChest)) {
return;
}
DoubleChest doublechest = (DoubleChest) holder;
BlockFace facing = null;
if (!InteractionVisualizer.version.isLegacy()) {
BlockData blockData = chest.getBlockData();
facing = ((Directional) blockData).getFacing();
} else {
facing = LegacyFacingUtils.getFacing(chest.getBlock());
}
if (facing.equals(BlockFace.EAST)) {
block = doublechest.getLeftSide().getInventory().getLocation().getBlock();
loc = block.getLocation().add(0.0, 0.0, 0.5);
} else if (facing.equals(BlockFace.SOUTH)) {
block = doublechest.getRightSide().getInventory().getLocation().getBlock();
loc = block.getLocation().add(0.5, 0.0, 0.0);
} else if (facing.equals(BlockFace.WEST)) {
block = doublechest.getRightSide().getInventory().getLocation().getBlock();
loc = block.getLocation().add(0.0, 0.0, 0.5);
} else if (facing.equals(BlockFace.NORTH)) {
block = doublechest.getLeftSide().getInventory().getLocation().getBlock();
loc = block.getLocation().add(0.5, 0.0, 0.0);
}
boolean isIn = true;
boolean isMove = false;
ItemStack itemstack = null;
if (event.getRawSlot() >= 0 && event.getRawSlot() < topInventory.getSize()) {
itemstack = event.getCurrentItem();
if (itemstack != null) {
if (itemstack.getType().equals(Material.AIR)) {
itemstack = null;
} else {
isIn = false;
isMove = true;
}
}
if (itemstack == null) {
itemstack = event.getCursor();
if (itemstack != null) {
if (itemstack.getType().equals(Material.AIR)) {
itemstack = null;
} else {
isMove = true;
}
}
} else {
if (event.getCursor() != null) {
if (event.getCursor().getType().equals(itemstack.getType())) {
isIn = true;
}
}
}
if (itemstack == null) {
if ((event.getAction().equals(InventoryAction.HOTBAR_MOVE_AND_READD) || event.getAction().equals(InventoryAction.HOTBAR_SWAP)) && event.getHotbarButton() >= 0) {
itemstack = event.getWhoClicked().getInventory().getItem(event.getHotbarButton());
if (itemstack != null) {
if (itemstack.getType().equals(Material.AIR)) {
itemstack = null;
} else {
isMove = true;
}
}
}
}
}
if (itemstack == null) {
if (event.getAction().equals(InventoryAction.MOVE_TO_OTHER_INVENTORY)) {
itemstack = event.getCurrentItem();
if (itemstack != null) {
if (itemstack.getType().equals(Material.AIR)) {
itemstack = null;
} else {
isMove = true;
}
}
}
}
if (event.isShiftClick() && event.getView().getItem(event.getRawSlot()) != null) {
if (isIn) {
if (!InventoryUtils.stillHaveSpace(event.getView().getTopInventory(), event.getView().getItem(event.getRawSlot()).getType())) {
return;
}
} else {
if (!InventoryUtils.stillHaveSpace(event.getWhoClicked().getInventory(), event.getView().getItem(event.getRawSlot()).getType())) {
return;
}
}
}
if (event.getCursor() != null) {
if (!event.getCursor().getType().equals(Material.AIR)) {
if (event.getCurrentItem() != null) {
if (!event.getCurrentItem().getType().equals(Material.AIR)) {
if (event.getCurrentItem().getType().equals(event.getCursor().getType())) {
if (event.getCurrentItem().getAmount() >= event.getCurrentItem().getType().getMaxStackSize()) {
return;
}
}
}
}
}
}
if (isMove) {
PacketManager.sendHandMovement(InteractionVisualizerAPI.getPlayers(), player);
if (itemstack != null) {
Item item = new Item(loc.clone().add(0.5, 1, 0.5));
Vector offset = new Vector(0.0, 0.15, 0.0);
Vector vector = loc.clone().add(0.5, 1, 0.5).toVector().subtract(event.getWhoClicked().getEyeLocation().clone().add(0.0, -0.5, 0.0).add(0.0, InteractionVisualizer.playerPickupYOffset, 0.0).toVector()).multiply(-0.15).add(offset);
item.setVelocity(vector);
if (isIn) {
item.teleport(event.getWhoClicked().getEyeLocation().add(0.0, InteractionVisualizer.playerPickupYOffset, 0.0));
vector = loc.clone().add(0.5, 1, 0.5).toVector().subtract(event.getWhoClicked().getEyeLocation().clone().add(0.0, InteractionVisualizer.playerPickupYOffset, 0.0).toVector()).multiply(0.15).add(offset);
item.setVelocity(vector);
}
PacketManager.sendItemSpawn(InteractionVisualizerAPI.getPlayerModuleList(Modules.ITEMDROP, KEY), item);
item.setItemStack(itemstack);
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);
boolean finalIsIn = isIn;
Location finalLoc = loc;
Bukkit.getScheduler().runTaskLater(InteractionVisualizer.plugin, () -> {
if (finalIsIn) {
item.teleport(finalLoc.clone().add(0.5, 1, 0.5));
} else {
item.teleport(player.getEyeLocation().add(0.0, -0.5, 0.0).add(0.0, InteractionVisualizer.playerPickupYOffset, 0.0));
}
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);
}
}
}
Aggregations