类org.bukkit.event.player.PlayerMoveEvent源码实例Demo

下面列出了怎么用org.bukkit.event.player.PlayerMoveEvent的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: CardinalPGM   文件: ProximityAlarm.java
@EventHandler
public void onPlayerMove(PlayerMoveEvent event) {
    Optional<TeamModule> team = Teams.getTeamByPlayer(event.getPlayer());
    if (region.contains(event.getTo().toVector()) && !region.contains(event.getFrom().toVector()) && team.isPresent() && !team.get().isObserver() && GameHandler.getGameHandler().getMatch().isRunning()) {
        for (Player player : Bukkit.getOnlinePlayers()) {
            if (notify == null) {
                if (detect.evaluate(player).equals(FilterState.DENY)) {
                    player.sendMessage(ChatColor.RED + message);
                }
            } else if (notify.evaluate(player).equals(FilterState.ALLOW)) {
                player.sendMessage(ChatColor.RED + message);
            }
        }
        RegionModule radius = new CylinderRegion("radius", region.getCenterBlock().getVector(), flareRadius, 1);
        int flareAmount = new Random().nextInt(6);
        for (int f = 0; flareAmount > f; f++) {
            Firework firework = Fireworks.spawnFirework(radius.getRandomPoint().getLocation(),
                    Fireworks.getFireworkEffect(MiscUtil.convertChatColorToColor(Teams.getTeamColorByPlayer(event.getPlayer()))), 1);
            Fireworks.explodeFirework(firework);
        }
    }
}
 
源代码2 项目: RedProtect   文件: Compat19.java
@EventHandler(ignoreCancelled = true)
public void onPlayerMove(PlayerMoveEvent e) {
    Player p = e.getPlayer();

    // Glide options
    if (!p.hasPermission("redprotect.bypass.glide")) {
        if (!RedProtect.get().config.globalFlagsRoot().worlds.get(p.getWorld().getName()).player_glide.allow_elytra) {
            ItemStack item = p.getInventory().getChestplate();
            if (item != null && item.getType().equals(Material.ELYTRA)) {
                PlayerInventory inv = p.getInventory();
                inv.setChestplate(new ItemStack(Material.AIR));
                if (inv.firstEmpty() == -1) {
                    p.getWorld().dropItem(p.getLocation(), item);
                } else {
                    inv.setItem(inv.firstEmpty(), item);
                }
                p.playSound(p.getLocation(), Sound.ENTITY_ITEM_PICKUP, 10, 1);
                RedProtect.get().lang.sendMessage(p, "globallistener.elytra.cantequip");
            }
        }
    }
}
 
源代码3 项目: MineTinker   文件: Scotopic.java
@EventHandler(ignoreCancelled = true)
public void onMoveImmune(PlayerMoveEvent event) {
	if (!this.givesImmunity) return;

	Player player = event.getPlayer();
	if (!player.hasPermission("minetinker.modifiers.scotopic.use")) {
		return;
	}

	ItemStack armor = player.getInventory().getHelmet();
	if (armor == null) return;

	if (!modManager.hasMod(armor, this)) return;
	if (player.hasPotionEffect(PotionEffectType.BLINDNESS)) {
		player.removePotionEffect(PotionEffectType.BLINDNESS);
		ChatWriter.logModifier(player, event, this, armor, "RemoveBlindness");
	}
}
 
源代码4 项目: MineTinker   文件: Webbed.java
@EventHandler(ignoreCancelled = true)
public void onMove(PlayerMoveEvent event) {
	if (!this.givesImmunity) return;

	Player player = event.getPlayer();
	if (!player.hasPermission("minetinker.modifiers.webbed.use")) {
		return;
	}

	boolean hasWebbed = false;
	ItemStack armor = null;
	for (ItemStack stack : player.getInventory().getArmorContents()) {
		if (stack == null) continue;
		if (modManager.hasMod(stack, this)) {
			hasWebbed = true;
			armor = stack;
			break;
		}
	}

	if (!hasWebbed) return;
	if (player.hasPotionEffect(PotionEffectType.SLOW)) {
		player.removePotionEffect(PotionEffectType.SLOW);
		ChatWriter.logModifier(player, event, this, armor, "RemoveEffect");
	}
}
 
源代码5 项目: BetonQuest   文件: ChatConvIO.java
@EventHandler(ignoreCancelled = true)
public void onWalkAway(PlayerMoveEvent event) {
    // return if it's someone else
    if (!event.getPlayer().equals(player)) {
        return;
    }
    // if player passes max distance
    if (!event.getTo().getWorld().equals(conv.getLocation().getWorld()) || event.getTo()
            .distance(conv.getLocation()) > Integer.valueOf(Config.getString("config.max_npc_distance"))) {
        // we can stop the player or end conversation
        if (conv.isMovementBlock()) {
            moveBack(event);
        } else {
            conv.endConversation();
        }
    }
    return;
}
 
源代码6 项目: BedWars   文件: WarpPowderListener.java
@EventHandler
public void onMove(PlayerMoveEvent event) {
    Player player = event.getPlayer();
    if (event.isCancelled() || !Main.isPlayerInGame(player)) {
        return;
    }

    if (event.getFrom().getBlock().equals(event.getTo().getBlock())) {
        return;
    }

    GamePlayer gPlayer = Main.getPlayerGameProfile(player);
    Game game = gPlayer.getGame();
    if (gPlayer.isSpectator) {
        return;
    }

    WarpPowder warpPowder = (WarpPowder) game.getFirstActivedSpecialItemOfPlayer(player, WarpPowder.class);
    if (warpPowder != null) {
        warpPowder.cancelTeleport(true, true);
    }
}
 
源代码7 项目: TabooLib   文件: ListenerPlayerJump.java
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onJump(PlayerMoveEvent e) {
    // 不是飞行
    if (!e.getPlayer().isFlying()
            // 生存或冒险模式
            && (e.getPlayer().getGameMode() == GameMode.SURVIVAL || e.getPlayer().getGameMode() == GameMode.ADVENTURE)
            // 坐标计算
            && (e.getFrom().getY() + 0.5D != e.getTo().getY())
            && (e.getFrom().getY() + 0.419D < e.getTo().getY())
            // 不在冷却
            && !cooldown.isCooldown(e.getPlayer().getName())) {

        new PlayerJumpEvent(e.getPlayer()).call().ifCancelled(() -> {
            // 返回位置
            e.setTo(e.getFrom());
            // 重置冷却
            cooldown.reset(e.getPlayer().getName());
        });
    }
}
 
源代码8 项目: HubBasics   文件: JumpPads.java
@EventHandler
public void onPlayerMove(PlayerMoveEvent event) {
    if (needsPressurePlate(event.getPlayer()) || !isBlockRequired(event.getPlayer())) return;
    Player player = event.getPlayer();
    if (!isEnabledInWorld(player.getWorld())) return;
    Location loc = player.getLocation().subtract(0, 1, 0);
    if (loc.getBlock().getType() == getMaterial(player)) {
        player.setVelocity(calculateVector(player));
        if (getSound(player) != null) {
            player.playSound(player.getLocation(), getSound(player), 1, 1);
        }
        if (getEffect(player) != null) {
            particleEffect.display(getEffect(player), player.getLocation(), 1, 1, 1, 1, 40);
        }
    }
}
 
源代码9 项目: ProjectAres   文件: Pickup.java
@EventHandler(ignoreCancelled = true)
public void onMove(PlayerMoveEvent event) {
    if(!isSpawned()) return;
    MatchPlayer player = match.getPlayer(event.getPlayer());
    if(player != null) {
        CooldownPlayerFacet cooler = player.facet(CooldownPlayerFacet.class);
        if(player.canInteract() &&
           cooler.isNotCooling(this) &&
           Capsule.fromEndpointsAndRadius(event.getFrom().position(),
                                          event.getTo().position(),
                                          0.5)
                  .intersects(Sphere.fromCircumscribedCuboid(entity.get().getBoundingBox())) &&
           data.pickup().query(player).isAllowed()) {

            cooler.coolFor(this, data.cooldown());
            despawn(true);
            player.facet(KitPlayerFacet.class).applyKit(data.kit(), false);
        }
    }
}
 
源代码10 项目: AuthMeReloaded   文件: PlayerListenerTest.java
@Test
public void shouldAllowMovementForAuthedPlayer() {
    // given
    given(settings.getProperty(RestrictionSettings.ALLOW_UNAUTHED_MOVEMENT)).willReturn(false);
    Player player = mock(Player.class);
    Location from = new Location(null, 100, 90, 200);
    Location to = new Location(null, 99, 90, 200);
    PlayerMoveEvent event = spy(new PlayerMoveEvent(player, from, to));
    given(listenerService.shouldCancelEvent(player)).willReturn(false);

    // when
    listener.onPlayerMove(event);

    // then
    verify(listenerService).shouldCancelEvent(player);
    verifyNoModifyingCalls(event);
}
 
源代码11 项目: NovaGuilds   文件: MoveListener.java
/**
 * Performs region checking
 *
 * @param event move event
 */
private void execute(PlayerMoveEvent event) {
	Player player = event.getPlayer();
	NovaPlayer nPlayer = PlayerManager.getPlayer(player);
	Location from = event.getFrom();
	Location to = event.getTo();

	NovaRegion fromRegion = RegionManager.get(from);
	NovaRegion toRegion = RegionManager.get(to);

	//entering
	if((fromRegion == null && toRegion != null && nPlayer.getAtRegion() == null) || (fromRegion != null && toRegion != null && !fromRegion.equals(toRegion))) {
		plugin.getRegionManager().playerEnteredRegion(player, toRegion);
	}

	//exiting
	if(fromRegion != null && toRegion == null && nPlayer.getAtRegion() != null) {
		plugin.getRegionManager().playerExitedRegion(player);
	}
}
 
源代码12 项目: ce   文件: LivefireBoots.java
@Override
public boolean effect(Event event, final Player player) {
	  final PlayerMoveEvent e = (PlayerMoveEvent) event;
	  final Block b = e.getTo().getBlock();
	  		  
	  if(!Tools.checkWorldGuard(e.getTo(), player, "PVP", false))
		  return false;
	  
	  if(b.getType().equals(Material.AIR)) {
		b.setType(Material.FIRE);
		new BukkitRunnable() {
			@Override
			public void run() {
				if(b.getType().equals(Material.FIRE)) {
					player.getWorld().playEffect(e.getTo(), Effect.EXTINGUISH, 60);
					b.setType(Material.AIR);
				}
			}
		}.runTaskLater(main, FlameDuration);
	
	}
	return true;
}
 
源代码13 项目: AuthMeReloaded   文件: PlayerListenerTest.java
@Test
public void shouldCancelEventForDisabledUnauthedMovement() {
    // given
    given(settings.getProperty(RestrictionSettings.ALLOW_UNAUTHED_MOVEMENT)).willReturn(false);
    Player player = mock(Player.class);
    World world = mock(World.class);
    Location from = new Location(world, 200, 70, 200);
    Location to = new Location(world, 199, 70, 199);
    PlayerMoveEvent event = spy(new PlayerMoveEvent(player, from, to));
    given(listenerService.shouldCancelEvent(player)).willReturn(true);

    // when
    listener.onPlayerMove(event);

    // then
    verify(listenerService).shouldCancelEvent(player);
    verify(event).setTo(from);
}
 
源代码14 项目: ProjectAres   文件: PlayerMovementListener.java
/**
 * Modify the to location of the given event to prevent the movement and
 * move the player so they are standing on the center of the block at the
 * from location.
 */
private static void resetPosition(final PlayerMoveEvent event) {
    Location newLoc;
    double yValue = event.getFrom().getY();

    if(yValue <= 0 || event instanceof PlayerTeleportEvent) {
        newLoc = event.getFrom();
    } else {
        newLoc = BlockUtils.center(event.getFrom()).subtract(new Vector(0, 0.5, 0));
        if(newLoc.getBlock() != null) {
            switch(newLoc.getBlock().getType()) {
            case STEP:
            case WOOD_STEP:
                newLoc.add(new Vector(0, 0.5, 0));
                break;
            default: break;
            }
        }
    }

    newLoc.setPitch(event.getTo().getPitch());
    newLoc.setYaw(event.getTo().getYaw());
    event.setCancelled(false);
    event.setTo(newLoc);
}
 
源代码15 项目: PlotMe-Core   文件: BukkitPlotDenyListener.java
@EventHandler(priority = EventPriority.HIGH)
public void onPlayerMove(PlayerMoveEvent event) {
    Location location = BukkitUtil.adapt(event.getTo());
    if (manager.isPlotWorld(location)) {
        if (event.getPlayer().hasPermission(PermissionNames.ADMIN_BYPASSDENY)) {
            return;
        }
        Plot plot = manager.getPlot(location);
        if (plot != null) {
            if (plot.getOwnerId().equals(event.getPlayer().getUniqueId())) {
                return;
            }
            if (plot.isDenied(event.getPlayer().getUniqueId())) {
                event.setTo(event.getFrom());
            }
        }
    }
}
 
源代码16 项目: CombatLogX   文件: ForceField.java
@EventHandler
public void onMove(PlayerMoveEvent e) {
    if(!isEnabled()) return;
    
    Player player = e.getPlayer();
    if(canBypass(player)) return;
    
    ICombatManager combatManager = this.plugin.getCombatManager();
    if(!combatManager.isInCombat(player)) return;

    Location toLoc = e.getTo();
    Location fromLoc = e.getFrom();
    if(toLoc == null) return;

    if(toLoc.getBlock().equals(fromLoc.getBlock())) return;
    if(isSafe(toLoc, player)) return;

    updateForceField(player);
}
 
源代码17 项目: KTP   文件: UHPluginListener.java
@EventHandler
public void onPlayerMove(PlayerMoveEvent ev) {
	Location l = ev.getTo();
	Integer mapSize = p.getConfig().getInt("map.size");
	Integer halfMapSize = (int) Math.floor(mapSize/2);
	Integer x = l.getBlockX();
	Integer z = l.getBlockZ();
	
	Location spawn = ev.getPlayer().getWorld().getSpawnLocation();
	Integer limitXInf = spawn.add(-halfMapSize, 0, 0).getBlockX();
	
	spawn = ev.getPlayer().getWorld().getSpawnLocation();
	Integer limitXSup = spawn.add(halfMapSize, 0, 0).getBlockX();
	
	spawn = ev.getPlayer().getWorld().getSpawnLocation();
	Integer limitZInf = spawn.add(0, 0, -halfMapSize).getBlockZ();
	
	spawn = ev.getPlayer().getWorld().getSpawnLocation();
	Integer limitZSup = spawn.add(0, 0, halfMapSize).getBlockZ();
	
	if (x < limitXInf || x > limitXSup || z < limitZInf || z > limitZSup) {
		ev.setCancelled(true);
	}
}
 
源代码18 项目: SuperVanish   文件: TrailGUIHook.java
@Override
public void onPluginEnable(Plugin plugin) {
    if (!(plugin instanceof TrailGUI)) {
        superVanish.log(Level.WARNING,
                "Failed to hook into TrailGUI. (PluginNotFound)");
        return;
    }
    PlayerMoveEvent.getHandlerList().unregister(plugin);
    final Listeners trailGUIListeners = new Listeners((TrailGUI) plugin);
    plugin.getServer().getPluginManager().registerEvents(new Listener() {

        @EventHandler
        public void onPlayerMove(PlayerMoveEvent event) {
            if (superVanish.getVanishStateMgr()
                    .getOnlineVanishedPlayers().contains(
                            event.getPlayer().getUniqueId()))
                return;
            trailGUIListeners.onPlayerMove(event);
        }
    }, plugin);
}
 
源代码19 项目: AnnihilationPro   文件: Transporter.java
@EventHandler(priority = EventPriority.HIGHEST,ignoreCancelled = true)
public void MoveListeners(PlayerMoveEvent event)
{
	///block under your feet
	Block to = event.getTo().getBlock().getRelative(BlockFace.DOWN);
	if(to.getType() == Material.QUARTZ_ORE)
	{
		Location x = event.getTo();
		Location y = event.getFrom();
		if(x.getBlockX() != y.getBlockX() || x.getBlockY() != y.getBlockY() || x.getBlockZ() != y.getBlockZ())
		{
			AnniPlayer user = AnniPlayer.getPlayer(event.getPlayer().getUniqueId());
			UUID owner = getBlocksOwner(to);
			if(owner != null && user != null)
			{
				Teleporter tele = this.teleporters.get(owner);
				if(tele != null && tele.isLinked() && tele.getOwner().getTeam() == user.getTeam())
				{
					event.getPlayer().sendMessage(ChatColor.AQUA+"This is a teleporter owned by "+ChatColor.WHITE+tele.getOwner().getName()+ChatColor.AQUA+", Sneak to go through it.");
				}
			}
		}
	}
}
 
源代码20 项目: MCAuthenticator   文件: MoveEvent.java
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerMove(PlayerMoveEvent event) {
    Location from = event.getFrom();
    Location to = event.getTo();

    if (from.getBlockX() == to.getBlockX()
            && from.getBlockY() == to.getBlockY()
            && from.getBlockZ() == to.getBlockZ()) {
        return;
    }

    Player player = event.getPlayer();
    User u = instance.getCache().get(player.getUniqueId());

    if (u != null && u.authenticated()) return;

    event.setTo(from);
}
 
源代码21 项目: BedWars   文件: HologramManager.java
@EventHandler
public void onMove(PlayerMoveEvent event) {
	if (HOLOGRAMS.isEmpty()) {
		return;
	}
	
	List<Hologram> copy = new ArrayList<>(HOLOGRAMS);
	for (Hologram hologram : copy) {
		if (hologram.isEmpty() || !hologram.hasViewers()) {
			HOLOGRAMS.remove(hologram);
			continue;
		}
		try {
			Player player = event.getPlayer();
			List<Player> viewers = hologram.getViewers();
			Location loc = hologram.getLocation();
			if (viewers.contains(player) && player.getWorld().equals(loc.getWorld())) {
				if (event.getTo().distanceSquared(loc) < VISIBILITY_DISTANCE_SQUARED
					&& event.getFrom().distanceSquared(loc) >= VISIBILITY_DISTANCE_SQUARED) {
					hologram.update(player, hologram.getAllSpawnPackets(), false);
				} else if (event.getTo().distanceSquared(loc) >= VISIBILITY_DISTANCE_SQUARED
					&& event.getFrom().distanceSquared(loc) < VISIBILITY_DISTANCE_SQUARED) {
					hologram.update(player, Arrays.asList(hologram.getFullDestroyPacket()), false);
				}
			}
		} catch (Throwable t) {
		}
	}
}
 
源代码22 项目: BedWars   文件: TrapListener.java
@EventHandler
public void onMove(PlayerMoveEvent event) {
    Player player = event.getPlayer();
    if (event.isCancelled() || !Main.isPlayerInGame(player)) {
        return;
    }

    double difX = Math.abs(event.getFrom().getX() - event.getTo().getX());
    double difZ = Math.abs(event.getFrom().getZ() - event.getTo().getZ());

    if (difX == 0.0 && difZ == 0.0) {
        return;
    }

    GamePlayer gPlayer = Main.getPlayerGameProfile(player);
    Game game = gPlayer.getGame();
    if (game.getStatus() == GameStatus.RUNNING && !gPlayer.isSpectator) {
        for (SpecialItem special : game.getActivedSpecialItems(Trap.class)) {
            Trap trapBlock = (Trap) special;

            if (trapBlock.isPlaced()) {
                if (game.getTeamOfPlayer(player) != trapBlock.getTeam()) {
                    if (event.getTo().getBlock().getLocation().equals(trapBlock.getLocation())) {
                        trapBlock.process(player, game.getPlayerTeam(gPlayer), false);
                    }
                }
            }
        }
    }
}
 
源代码23 项目: CardinalPGM   文件: Playable.java
@EventHandler
public void onPlayerMove(PlayerMoveEvent event) {
    Optional<TeamModule> team = Teams.getTeamByPlayer(event.getPlayer());
    if (GameHandler.getGameHandler().getMatch().isRunning() && team.isPresent() && !team.get().isObserver()) {
        if (region != null) {
            if (region.contains(event.getTo().toVector()) && !region.contains(event.getFrom().toVector())) {
                ChatUtil.sendWarningMessage(event.getPlayer(), new LocalizedChatMessage(ChatConstant.ERROR_PLAYABLE_LEAVE));
                event.setCancelled(true);
            }
        }
    }
}
 
源代码24 项目: PGM   文件: FreezeMatchModule.java
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onPlayerMove(final PlayerMoveEvent event) {
  if (freeze.isFrozen(event.getPlayer())) {
    Location old = event.getFrom();
    old.setPitch(event.getTo().getPitch());
    old.setYaw(event.getTo().getYaw());
    event.setTo(old);
  }
}
 
源代码25 项目: EchoPet   文件: RegionListener.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerMove(PlayerMoveEvent event) {
    Player p = event.getPlayer();
    IPet pet = EchoPet.getManager().getPet(p);
    if (pet != null) {
        if (!WorldUtil.allowRegion(event.getTo())) {
            EchoPet.getManager().removePet(pet, true);
            Lang.sendTo(p, Lang.ENTER_PET_DISABLED_REGION.toString());
        }
    }
}
 
源代码26 项目: PGM   文件: Uncarried.java
@Override
public void onEvent(PlayerMoveEvent event) {
  super.onEvent(event);
  MatchPlayer player = this.flag.getMatch().getPlayer(event.getPlayer());
  if (player == null || !player.canInteract() || player.getBukkit().isDead()) return;

  if (this.inPickupRange(player.getBukkit().getLocation()) && this.canPickup(player)) {
    this.pickupFlag(player);
  }
}
 
源代码27 项目: CardinalPGM   文件: EnterRegion.java
@EventHandler
public void onPlayerMove(PlayerMoveEvent event) {
    if (ObserverModule.testObserverOrDead(event.getPlayer())) return;
    if (region.contains(event.getTo().toVector())
            && !region.contains(event.getFrom().toVector())
            && filter.evaluate(event.getPlayer(), event).equals(FilterState.DENY)) {
        event.setTo(event.getFrom());
        ChatUtil.sendWarningMessage(event.getPlayer(), message);
    }
}
 
源代码28 项目: MineTinker   文件: Scotopic.java
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH)
public void onMove(PlayerMoveEvent event) {
	Player player = event.getPlayer();
	if (!player.hasPermission("minetinker.modifiers.scotopic.use")) return;

	ItemStack helmet = player.getInventory().getHelmet();
	if (!modManager.isArmorViable(helmet)) return;
	int level = modManager.getModLevel(helmet, this);
	if (level <= 0) return;

	//cooldown checker
	Long time = System.currentTimeMillis();
	long cooldownTime = (long) (this.cooldownInSeconds * 1000 * Math.pow(1.0 - this.cooldownReductionPerLevel, level - 1));
	if (this.cooldownInSeconds > 0) {
		Long cd = cooldownTracker.get(player.getUniqueId().toString());
		if (cd != null) { //was on cooldown
			if (time - cd > cooldownTime || player.getGameMode() == GameMode.CREATIVE) {
				cooldownTracker.remove(player.getUniqueId().toString());
			} else {
				return; //still on cooldown
			}
		}
	}

	Location loc = event.getTo();
	byte lightlevel = player.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()).getLightLevel();

	if (lightlevel <= this.requiredLightLevel) {
		int duration = this.durationPerLevel * level;
		player.addPotionEffect(new PotionEffect(PotionEffectType.NIGHT_VISION, duration, level, false, false, false));
		cooldownTracker.put(player.getUniqueId().toString(), time);
		ChatWriter.logModifier(player, event, this, helmet,
				String.format("Cooldown(%ds)", cooldownTime / 1000),
				String.format("LightLevel(%d/%d)", lightlevel, this.requiredLightLevel),
				String.format("Duration(%d)", duration));
	}
}
 
源代码29 项目: uSkyBlock   文件: TeleportLogic.java
@EventHandler(priority = EventPriority.HIGHEST,  ignoreCancelled = true)
@SuppressWarnings("unused")
public void onPlayerMove(PlayerMoveEvent e) {
    PendingTeleport pendingTeleport = pendingTeleports.get(e.getPlayer().getUniqueId());
    if (pendingTeleport != null) {
        pendingTeleport.playerMoved(e.getPlayer());
    }
}
 
源代码30 项目: ce   文件: Implants.java
@Override
public void effect(Event e, ItemStack item, final int level) {
	PlayerMoveEvent event = (PlayerMoveEvent) e;
	int hunger = event.getPlayer().getFoodLevel();
	final int air = event.getPlayer().getRemainingAir();
	final Player player  = event.getPlayer();
	
	if(hunger < 20)
		player.setFoodLevel(hunger + level);
	if(air < event.getPlayer().getMaximumAir())
		if(!inWater.contains(player)) {
			inWater.add(player);
			new BukkitRunnable() {
				@Override
				public void run() {
					if(player.isOnline() && !player.isDead() && player.getInventory().getBoots() != null && player.getInventory().getBoots().hasItemMeta() && player.getInventory().getBoots().getItemMeta().hasLore() && player.getInventory().getBoots().getItemMeta().getLore().contains(getDisplayName())) {
					if(player.getLocation().getBlock().getRelative(0, 1, 0).getType() != Material.WATER || player.getLocation().getBlock().getRelative(0, 1, 0).getType() != Material.STATIONARY_WATER)
						this.cancel();
					if(player.getRemainingAir() < player.getMaximumAir())
						player.setRemainingAir(player.getRemainingAir() + level);
					} else
						this.cancel();
				}
			}.runTaskTimer(Main.plugin, 20l, 60l);
		}
	generateCooldown(event.getPlayer(), burstDelay);
	
}
 
 类所在包
 同包方法