当前位置: 首页>>代码示例>>Java>>正文


Java HopperMinecart类代码示例

本文整理汇总了Java中org.bukkit.entity.minecart.HopperMinecart的典型用法代码示例。如果您正苦于以下问题:Java HopperMinecart类的具体用法?Java HopperMinecart怎么用?Java HopperMinecart使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


HopperMinecart类属于org.bukkit.entity.minecart包,在下文中一共展示了HopperMinecart类的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: teleportVehicle

import org.bukkit.entity.minecart.HopperMinecart; //导入依赖的package包/类
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();
	}
}
 
开发者ID:NoChanceSD,项目名称:AncientGates,代码行数:58,代码来源:TeleportUtil.java

示例2: onItemMove

import org.bukkit.entity.minecart.HopperMinecart; //导入依赖的package包/类
@EventHandler
public void onItemMove(InventoryMoveItemEvent event) {
	try {
		// Check for nulls
		if (event.getSource() == null || event.getSource().getHolder() == null) { return; }
		if (event.getDestination() == null || event.getDestination().getHolder() == null) { return; }

		// Debug
		debug("onItemMove(%s, %s, %s)", event.getItem().getType(), event.getSource().getHolder(),
				event.getDestination().getHolder());

		// Check if destination is a hopper minecart. If it isn't, the transaction is always valid.
		if (!(event.getDestination().getHolder() instanceof HopperMinecart)) {
			debug("onItemMove() returning because destination is not a HopperMinecart");
			return;
		}

		final HopperMinecart hopper = (HopperMinecart) event.getDestination().getHolder();
		final InventoryHolder source = event.getSource().getHolder();

		if (isValidSource(source)) {
			final Location sourceLocation = event.getSource().getLocation();
			if (sourceLocation == null) {
				error("Failed to find location of source InventoryHolder: %s", source);
				return;
			}

			final BlockProtection sourceProt = this.module.getProtection(sourceLocation).orElse(null);
			if (sourceProt == null) { debug("onItemMove() returning because sourceProt is null"); return; }

			// Check if destination hopper is also protected
			final EntityProtection destProt = this.module.getProtection(hopper.getUniqueId()).orElse(null);
			if (destProt == null) {
				// HopperMinecart is not protected, so we don't know from whom the hopper is coming
				// from. Because the source is protected, we have to protect its content from being
				// taken by an unknown minecrat. Therefore, the event needs to be cancelled.
				debug("onItemMove() returning because destProt is null");
				event.setCancelled(true);
				return;
			}

			// The HopperMinecart is protected, so we can check if the owner of that is allowed to
			// take items from the protected source
			StoredPlayer hopperOwner = destProt.getOwner();

			if (!this.module.isAllowedToInteract(sourceProt, hopperOwner)) {
				// Seems like the owner of the HopperMinecart is not allowed to interact with the source
				debug("onItemMove() cancelling because hopperOwner can not access sourecProt");
				event.setCancelled(true);
				return;
			}

		}

	}
	catch (Exception e) { report("Failed to handle InventoryMoveItemEvent", e); }
}
 
开发者ID:Craftolution,项目名称:CraftoPlugin,代码行数:58,代码来源:InteractionListener.java


注:本文中的org.bukkit.entity.minecart.HopperMinecart类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。