static boolean isSortableChestInventory(Inventory inventory) { if(inventory == null) return false; InventoryType inventoryType = inventory.getType(); if(inventoryType != InventoryType.CHEST && inventoryType != InventoryType.ENDER_CHEST) return false; String name = inventory.getName(); if(name != null && name.contains("*")) return false; InventoryHolder holder = inventory.getHolder(); if(holder == null || !(holder instanceof Chest || holder instanceof DoubleChest || holder instanceof StorageMinecart)) return false; return true; }
@EventHandler public void scanMinecart(PlayerInteractEntityEvent event) { Entity mc = event.getRightClicked(); if (mc instanceof StorageMinecart){ scanInventory(event.getPlayer(), ((StorageMinecart) mc).getInventory()); } }
@EventHandler (ignoreCancelled = true) public void onPlayerInteractEntity(PlayerInteractEntityEvent event) { Entity entity; if ((entity = event.getRightClicked()) instanceof StorageMinecart) { if (! Util.checkPermission((Player)event.getPlayer(), ((StorageMinecart) entity).getLocation(BCProtect.location), "openchest")) { event.setCancelled(true); } } }
public boolean isStorageMinecart() { return getCart() instanceof StorageMinecart; }
public static void teleportVehicle() { final List<BungeeQueue> vehicleQueue = Plugin.bungeeCordVehicleInQueue; final Iterator<BungeeQueue> it = vehicleQueue.iterator(); while (it.hasNext()) { final BungeeQueue queue = it.next(); // Spawn incoming BungeeCord vehicle final Location destination = queue.getDestination(); final World world = destination.getWorld(); checkChunkLoad(destination.getBlock()); Entity entity = null; String entityItemStack = null; // Parse passenger info if (queue.getQueueType() == BungeeQueueType.PASSENGER) { if (queue.getEntityType().isSpawnable()) { entity = world.spawnEntity(destination, queue.getEntityType()); EntityUtil.setEntityTypeData(entity, queue.getEntityTypeData()); entity.teleport(destination); } // Parse vehicle contents } else if (queue.getItemStack() != null) { entityItemStack = queue.getItemStack(); } final Entity passenger = entity; // Create new velocity final Vector newVelocity = destination.getDirection(); newVelocity.multiply(queue.getVelocity()); if (passenger != null) { final Vehicle v = (Vehicle) world.spawnEntity(destination, queue.getVehicleType()); Plugin.instance.getServer().getScheduler().scheduleSyncDelayedTask(Plugin.instance, new Runnable() { @Override public void run() { v.setPassenger(passenger); v.setVelocity(newVelocity); } }, 2); } else { final Vehicle mc = (Vehicle) world.spawnEntity(destination, queue.getVehicleType()); if (mc instanceof StorageMinecart && entityItemStack != null) { final StorageMinecart smc = (StorageMinecart) mc; smc.getInventory().setContents(ItemStackUtil.stringToItemStack(entityItemStack)); } else if (mc instanceof HopperMinecart && entityItemStack != null) { final HopperMinecart hmc = (HopperMinecart) mc; hmc.getInventory().setContents(ItemStackUtil.stringToItemStack(entityItemStack)); } mc.setVelocity(newVelocity); } // Remove from queue it.remove(); } }