Java 类org.bukkit.entity.Boat 实例源码

项目:acidisland    文件:SafeBoat.java   
/**
 * @param e
 *            This function prevents boats from exploding when they hit
 *            something
 */
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = false)
public void onBoatHit(VehicleDestroyEvent e) {
    // plugin.getLogger().info("Vehicle destroyed event called");
    final Entity boat = e.getVehicle();
    if (!(boat instanceof Boat)) {
        return;
    }
    if (!boat.getWorld().getName().equalsIgnoreCase(Settings.worldName)) {
        // Not the right world
        return;
    }
    if (!(e.getAttacker() instanceof Player)) {
        // plugin.getLogger().info("Attacker is not a player so cancel event");
        e.setCancelled(true);
    }
}
项目:askyblock    文件:SafeBoat.java   
/**
 * @param e
 *            This function prevents boats from exploding when they hit
 *            something
 */
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = false)
public void onBoatHit(VehicleDestroyEvent e) {
    // plugin.getLogger().info("Vehicle destroyed event called");
    final Entity boat = e.getVehicle();
    if (!(boat instanceof Boat)) {
        return;
    }
    if (!boat.getWorld().getName().equalsIgnoreCase(Settings.worldName)) {
        // Not the right world
        return;
    }
    if (!(e.getAttacker() instanceof Player)) {
        // plugin.getLogger().info("Attacker is not a player so cancel event");
        e.setCancelled(true);
    }
}
项目:HCFCore    文件:BoatGlitchFixListener.java   
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void onVehicleCreate(VehicleCreateEvent event) {
    Vehicle vehicle = event.getVehicle();
    if (vehicle instanceof Boat) {
        Boat boat = (Boat) vehicle;
        Block belowBlock = boat.getLocation().add(0, -1, 0).getBlock();
        if (belowBlock.getType() != Material.WATER && belowBlock.getType() != Material.STATIONARY_WATER) {
            boat.remove();
        }
    }
}
项目:HCFCore    文件:BoatGlitchFixListener.java   
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void onVehicleCreate(VehicleCreateEvent event) {
    Vehicle vehicle = event.getVehicle();
    if (vehicle instanceof Boat) {
        Boat boat = (Boat) vehicle;
        Block belowBlock = boat.getLocation().add(0, -1, 0).getBlock();
        if (belowBlock.getType() != Material.WATER && belowBlock.getType() != Material.STATIONARY_WATER) {
            boat.remove();
        }
    }
}
项目:iZenith-PVP    文件:Util.java   
public static void kickBoats() {
    for (Player player : Bukkit.getOnlinePlayers()) {
        if(player.isInsideVehicle() && player.getVehicle() instanceof Boat && ProtocolSupportAPI.getProtocolVersion(player).isBefore(ProtocolVersion.MINECRAFT_1_9)){
            player.getVehicle().eject();
            player.sendMessage(ChatColor.RED + "Boats are currently disabled for versions lower than " + ChatColor.DARK_RED + "1.9");
        }
    }
}
项目:RedProtect    文件:RPGlobalListener.java   
@EventHandler
   public void onPlayerInteract(PlayerInteractEntityEvent e) {
    if (e.isCancelled()) {
           return;
       }

    Player p = e.getPlayer();
       Entity ent = e.getRightClicked();
       Location l = ent.getLocation();
       Region r = RedProtect.get().rm.getTopRegion(l);
       if (r != null){
        return;
    }

       if (ent instanceof ItemFrame || ent instanceof Painting) {
           if (!bypassBuild(p, null, 0)) {
               e.setCancelled(true);
               return;
           }
       } 

       if (ent instanceof Minecart || ent instanceof Boat){
        if (!RPConfig.getGlobalFlagBool(l.getWorld().getName()+".use-minecart") && !p.hasPermission("redprotect.bypass.world")) {
               e.setCancelled(true);
               return;
           }
       } 

       if (!RPConfig.getGlobalFlagBool(l.getWorld().getName()+".interact") && !p.hasPermission("redprotect.bypass.world") && (!(ent instanceof Player))) {
        if (RPConfig.getGlobalFlagList(p.getWorld().getName() + ".if-interact-false.allow-entities").contains(ent.getType().name())){
            return;
        } 
           e.setCancelled(true);
    }
}
项目:askygrid    文件:GridManager.java   
/**
    * Teleport player to a home location. If one cannot be found a search is done to
    * find a safe place.
    * @param player
    * @param number - home location to do to
    * @return true if successful, false if not
    */
   public boolean homeTeleport(final Player player, int number) {
Location home = null;
//plugin.getLogger().info("home teleport called for #" + number);
home = getSafeHomeLocation(player.getUniqueId(), number);
//plugin.getLogger().info("home get safe loc = " + home);
// Check if the player is a passenger in a boat
if (player.isInsideVehicle()) {
    Entity boat = player.getVehicle();
    if (boat instanceof Boat) {
    player.leaveVehicle();
    // Remove the boat so they don't lie around everywhere
    boat.remove();
    player.getInventory().addItem(new ItemStack(Material.BOAT, 1));
    player.updateInventory();
    }
}
if (home == null) {
    //plugin.getLogger().info("Fixing home location using safe spot teleport");
    // Try to fix this teleport location and teleport the player if possible
    new SafeSpotTeleport(plugin, player, plugin.getPlayers().getHomeLocation(player.getUniqueId(), number), number);
    return true;
}
//plugin.getLogger().info("DEBUG: home loc = " + home + " teleporting");
//home.getChunk().load();
player.teleport(home);
player.setFallDistance(0);
//player.sendBlockChange(home, Material.GLOWSTONE, (byte)0);
if (number ==1 ) {
    player.sendMessage(ChatColor.GREEN + plugin.myLocale(player.getUniqueId()).homeTeleport);
} else {
    player.sendMessage(ChatColor.GREEN + plugin.myLocale(player.getUniqueId()).homeTeleport + " #" + number);
}
return true;

   }
项目:acidisland    文件:GridManager.java   
/**
 * Teleport player to a home location. If one cannot be found a search is done to
 * find a safe place.
 * @param player
 * @param number - home location to do to
 * @return true if successful, false if not
 */
public boolean homeTeleport(final Player player, int number) {
    Location home = null;
    //plugin.getLogger().info("home teleport called for #" + number);
    home = getSafeHomeLocation(player.getUniqueId(), number);
    //plugin.getLogger().info("home get safe loc = " + home);
    // Check if the player is a passenger in a boat
    if (player.isInsideVehicle()) {
        Entity boat = player.getVehicle();
        if (boat instanceof Boat) {
            player.leaveVehicle();
            // Remove the boat so they don't lie around everywhere
            boat.remove();
            player.getInventory().addItem(new ItemStack(Material.BOAT, 1));
            player.updateInventory();
        }
    }
    if (home == null) {
        //plugin.getLogger().info("Fixing home location using safe spot teleport");
        // Try to fix this teleport location and teleport the player if possible
        new SafeSpotTeleport(plugin, player, plugin.getPlayers().getHomeLocation(player.getUniqueId(), number), number);
        return true;
    }
    //plugin.getLogger().info("DEBUG: home loc = " + home + " teleporting");
    //home.getChunk().load();
    player.teleport(home);
    //player.sendBlockChange(home, Material.GLOWSTONE, (byte)0);
    if (number ==1 ) {
        Util.sendMessage(player, ChatColor.GREEN + plugin.myLocale(player.getUniqueId()).islandteleport);
    } else {
        Util.sendMessage(player, ChatColor.GREEN + plugin.myLocale(player.getUniqueId()).islandteleport + " #" + number);
    }
    return true;

}
项目:acidisland    文件:SafeBoat.java   
/**
 * @param e
 *            This event check throws the boat at a player when they hit it
 *            unless someone is in it
 */
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onClick(VehicleDamageEvent e) {
    // plugin.getLogger().info("Damage event " + e.getDamage());
    // Find out what block is being clicked
    Vehicle boat = e.getVehicle();
    if (!(boat instanceof Boat)) {
        return;
    }
    if (!boat.isEmpty()) {
        return;
    }
    final World playerWorld = boat.getWorld();
    if (!playerWorld.getName().equalsIgnoreCase(Settings.worldName)) {
        // Not the right world
        return;
    }
    // plugin.getLogger().info("Boat ");
    // Find out who is doing the clicking
    if (!(e.getAttacker() instanceof Player)) {
        // If a creeper blows up the boat, tough cookies!
        return;
    }
    Player p = (Player) e.getAttacker();
    if (p == null) {
        return;
    }
    // Try to remove the boat and throw it at the player
    Location boatSpot = new Location(boat.getWorld(), boat.getLocation().getX(), boat.getLocation().getY() + 2, boat.getLocation().getZ());
    Location throwTo = new Location(boat.getWorld(), p.getLocation().getX(), p.getLocation().getY() + 1, p.getLocation().getZ());
    ItemStack newBoat = new ItemStack(Material.BOAT, 1);
    // Find the direction the boat should move in
    Vector dir = throwTo.toVector().subtract(boatSpot.toVector()).normalize();
    dir = dir.multiply(0.5);
    Entity newB = boat.getWorld().dropItem(boatSpot, newBoat);
    newB.setVelocity(dir);
    boat.remove();
    e.setCancelled(true);
}
项目:askyblock    文件:GridManager.java   
/**
 * Teleport player to a home location. If one cannot be found a search is done to
 * find a safe place.
 * @param player
 * @param number - home location to do to
 * @return true if successful, false if not
 */
public boolean homeTeleport(final Player player, int number) {
    Location home = null;
    //plugin.getLogger().info("home teleport called for #" + number);
    home = getSafeHomeLocation(player.getUniqueId(), number);
    //plugin.getLogger().info("home get safe loc = " + home);
    // Check if the player is a passenger in a boat
    if (player.isInsideVehicle()) {
        Entity boat = player.getVehicle();
        if (boat instanceof Boat) {
            player.leaveVehicle();
            // Remove the boat so they don't lie around everywhere
            boat.remove();
            player.getInventory().addItem(new ItemStack(Material.BOAT, 1));
            player.updateInventory();
        }
    }
    if (home == null) {
        //plugin.getLogger().info("Fixing home location using safe spot teleport");
        // Try to fix this teleport location and teleport the player if possible
        new SafeSpotTeleport(plugin, player, plugin.getPlayers().getHomeLocation(player.getUniqueId(), number), number);
        return true;
    }
    //plugin.getLogger().info("DEBUG: home loc = " + home + " teleporting");
    //home.getChunk().load();
    player.teleport(home);
    //player.sendBlockChange(home, Material.GLOWSTONE, (byte)0);
    if (number ==1 ) {
        Util.sendMessage(player, ChatColor.GREEN + plugin.myLocale(player.getUniqueId()).islandteleport);
    } else {
        Util.sendMessage(player, ChatColor.GREEN + plugin.myLocale(player.getUniqueId()).islandteleport + " #" + number);
    }
    return true;

}
项目:askyblock    文件:SafeBoat.java   
/**
 * @param e
 *            This event check throws the boat at a player when they hit it
 *            unless someone is in it
 */
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onClick(VehicleDamageEvent e) {
    // plugin.getLogger().info("Damage event " + e.getDamage());
    // Find out what block is being clicked
    Vehicle boat = e.getVehicle();
    if (!(boat instanceof Boat)) {
        return;
    }
    if (!boat.isEmpty()) {
        return;
    }
    final World playerWorld = boat.getWorld();
    if (!playerWorld.getName().equalsIgnoreCase(Settings.worldName)) {
        // Not the right world
        return;
    }
    // plugin.getLogger().info("Boat ");
    // Find out who is doing the clicking
    if (!(e.getAttacker() instanceof Player)) {
        // If a creeper blows up the boat, tough cookies!
        return;
    }
    Player p = (Player) e.getAttacker();
    if (p == null) {
        return;
    }
    // Try to remove the boat and throw it at the player
    Location boatSpot = new Location(boat.getWorld(), boat.getLocation().getX(), boat.getLocation().getY() + 2, boat.getLocation().getZ());
    Location throwTo = new Location(boat.getWorld(), p.getLocation().getX(), p.getLocation().getY() + 1, p.getLocation().getZ());
    ItemStack newBoat = new ItemStack(Material.BOAT, 1);
    // Find the direction the boat should move in
    Vector dir = throwTo.toVector().subtract(boatSpot.toVector()).normalize();
    dir = dir.multiply(0.5);
    Entity newB = boat.getWorld().dropItem(boatSpot, newBoat);
    newB.setVelocity(dir);
    boat.remove();
    e.setCancelled(true);
}
项目:TatsuCraftMod    文件:TFM_Util.java   
private static boolean canWipe(Entity entity, boolean wipeExplosives, boolean wipeVehicles)
{
    if (wipeExplosives)
    {
        if (Explosive.class.isAssignableFrom(entity.getClass()))
        {
            return true;
        }
    }

    if (wipeVehicles)
    {
        if (Boat.class.isAssignableFrom(entity.getClass()))
        {
            return true;
        }
        else if (Minecart.class.isAssignableFrom(entity.getClass()))
        {
            return true;
        }
    }

    Iterator<Class<? extends Entity>> it = WIPEABLES.iterator();
    while (it.hasNext())
    {
        if (it.next().isAssignableFrom(entity.getClass()))
        {
            return true;
        }
    }

    return false;
}
项目:bskyblock    文件:IslandsManager.java   
/**
 * Teleport player to a home location. If one cannot be found a search is done to
 * find a safe place.
 * @param player
 * @param number - home location to do to
 * @return true if successful, false if not
 */
@SuppressWarnings("deprecation")
public boolean homeTeleport(final Player player, int number) {
    Location home;
    if (DEBUG)
        plugin.getLogger().info("home teleport called for #" + number);
    home = getSafeHomeLocation(player.getUniqueId(), number);
    if (DEBUG)
        plugin.getLogger().info("home get safe loc = " + home);
    // Check if the player is a passenger in a boat
    if (player.isInsideVehicle()) {
        Entity boat = player.getVehicle();
        if (boat instanceof Boat) {
            player.leaveVehicle();
            // Remove the boat so they don't lie around everywhere
            boat.remove();
            player.getInventory().addItem(new ItemStack(Material.BOAT, 1));
            player.updateInventory();
        }
    }
    if (home == null) {
        if (DEBUG)
            plugin.getLogger().info("Fixing home location using safe spot teleport");
        // Try to fix this teleport location and teleport the player if possible
        new SafeSpotTeleport(plugin, player, plugin.getPlayers().getHomeLocation(player.getUniqueId(), number), number);
        return true;
    }
    if (DEBUG)
        plugin.getLogger().info("DEBUG: home loc = " + home + " teleporting");
    //home.getChunk().load();
    player.teleport(home);
    //player.sendBlockChange(home, Material.GLOWSTONE, (byte)0);
    if (number ==1 ) {
        Util.sendMessage(player, ChatColor.GREEN + plugin.getLocale(player.getUniqueId()).get("island.teleport").replace("[label]", Settings.ISLANDCOMMAND));
    } else {
        Util.sendMessage(player, ChatColor.GREEN + plugin.getLocale(player.getUniqueId()).get("island.teleported").replace("[number]", String.valueOf(number)));
    }
    // Exit spectator mode if in it
    if (player.getGameMode().equals(GameMode.SPECTATOR)) {
        player.setGameMode(GameMode.SURVIVAL);
    }
    return true;
}
项目:CanaryBukkit    文件:CanaryBoat.java   
public CanaryBoat(net.canarymod.api.entity.vehicle.Boat entity) {
    super(entity);
}
项目:CanaryBukkit    文件:CanaryBoat.java   
@Override
protected net.canarymod.api.entity.vehicle.Boat getHandle() {
    return (net.canarymod.api.entity.vehicle.Boat) super.getHandle();
}
项目:AdvancedAchievements    文件:AchieveDistanceRunnable.java   
/**
 * Update distances and store them into server's memory until player disconnects.
 * 
 * @param player
 */
private void validateMovementAndUpdateDistance(Player player) {
    String uuid = player.getUniqueId().toString();
    Location previousLocation = playerLocations.get(uuid);

    // Update new location.
    playerLocations.put(uuid, player.getLocation());

    // If player location not found or if player has changed world, ignore previous location.
    // Evaluating distance would give an exception.
    if (previousLocation == null || !previousLocation.getWorld().getName().equals(player.getWorld().getName())) {
        return;
    }

    // If player is in restricted game mode or is in a blocked world, don't update distances.
    if (!shouldIncreaseBeTakenIntoAccountNoPermissions(player)) {
        return;
    }

    int difference = getDistanceDifference(player, previousLocation);
    // Player has not moved.
    if (difference == 0L) {
        return;
    }

    if (player.getVehicle() instanceof Horse) {
        updateDistance(difference, player, NormalAchievements.DISTANCEHORSE);
    } else if (player.getVehicle() instanceof Pig) {
        updateDistance(difference, player, NormalAchievements.DISTANCEPIG);
    } else if (player.getVehicle() instanceof Minecart) {
        updateDistance(difference, player, NormalAchievements.DISTANCEMINECART);
    } else if (player.getVehicle() instanceof Boat) {
        updateDistance(difference, player, NormalAchievements.DISTANCEBOAT);
    } else if (plugin.getServerVersion() >= 11 && player.getVehicle() instanceof Llama) {
        updateDistance(difference, player, NormalAchievements.DISTANCELLAMA);
    } else if (!player.isFlying() && (plugin.getServerVersion() < 9 || !player.isGliding())) {
        updateDistance(difference, player, NormalAchievements.DISTANCEFOOT);
    } else if (plugin.getServerVersion() >= 9 && player.isGliding()) {
        updateDistance(difference, player, NormalAchievements.DISTANCEGLIDING);
    }
}
项目:RedProtect    文件:RPPlayerListener.java   
@EventHandler(priority = EventPriority.LOWEST)
   public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent e) {
    Player p = null;        

    RedProtect.get().logger.debug("RPLayerListener: Is EntityDamageByEntityEvent event"); 

       if (e.getDamager() instanceof Player){
        p = (Player)e.getDamager();
       } else if (e.getDamager() instanceof Projectile){
        Projectile proj = (Projectile)e.getDamager();
        if (proj.getShooter() instanceof Player){
            p = (Player) proj.getShooter();
        }           
       } 

       if (p != null){
        RedProtect.get().logger.debug("Player: " + p.getName()); 
       } else {
        RedProtect.get().logger.debug("Player: is null"); 
        return;
       }

       RedProtect.get().logger.debug("Damager: " + e.getDamager().getType().name()); 

       //check killaura or freekill
       if (RPConfig.getBool("server-protection.check-killaura-freekill.enable")){
        startCheckRate(p.getName());
       }

       Location l = e.getEntity().getLocation();
       Region r = RedProtect.get().rm.getTopRegion(l);
       if (r == null){
        return;
       }

       if (RedProtect.get().tpWait.contains(p.getName())){
        RedProtect.get().tpWait.remove(p.getName());
        RPLang.sendMessage(p, "cmdmanager.region.tpcancelled");
    }

       if (e.getEntity() instanceof Player && !p.equals(e.getEntity()) && r.flagExists("pvp") && !r.canPVP((Player)e.getEntity(), p)){
        RPLang.sendMessage(p, "entitylistener.region.cantpvp");
           e.setCancelled(true);
       }

       if ((e.getEntity() instanceof Hanging || e.getEntity() instanceof EnderCrystal) && !r.canBuild(p) && !r.canBreak(e.getEntityType())){
        RPLang.sendMessage(p, "playerlistener.region.cantremove");
        e.setCancelled(true);
       }   

       if ((e.getEntity() instanceof Boat || e.getEntity() instanceof Minecart) && !r.canMinecart(p)){
        RPLang.sendMessage(p, "blocklistener.region.cantbreak");
        e.setCancelled(true);
       }    
}