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