类org.bukkit.event.vehicle.VehicleDamageEvent源码实例Demo

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

@EventHandler
public void onVehicleDamage(VehicleDamageEvent event) {
    try {
        final Vehicle vehicle = event.getVehicle();
        final Location location = vehicle.getLocation();
        final IslandManager islandManager = IridiumSkyblock.getIslandManager();
        final Island island = islandManager.getIslandViaLocation(location);
        if (island == null) return;

        final Entity attacker = event.getAttacker();
        if (!(attacker instanceof Player)) return;

        final Player attackerPlayer = (Player) attacker;
        final User attackerUser = User.getUser(attackerPlayer);

        if (!island.getPermissions(attackerUser).killMobs)
            event.setCancelled(true);
    } catch (Exception ex) {
        IridiumSkyblock.getInstance().sendErrorMessage(ex);
    }
}
 
源代码2 项目: Skript   文件: ExprAttacked.java
@Override
public boolean init(final Expression<?>[] vars, final int matchedPattern, final Kleenean isDelayed, final ParseResult parser) {
	if (!ScriptLoader.isCurrentEvent(EntityDamageEvent.class, EntityDeathEvent.class, VehicleDamageEvent.class, VehicleDestroyEvent.class)) {
		Skript.error("The expression 'victim' can only be used in a damage or death event", ErrorQuality.SEMANTIC_ERROR);
		return false;
	}
	final String type = parser.regexes.size() == 0 ? null : parser.regexes.get(0).group();
	if (type == null) {
		this.type = EntityData.fromClass(Entity.class);
	} else {
		final EntityData<?> t = EntityData.parse(type);
		if (t == null) {
			Skript.error("'" + type + "' is not an entity type", ErrorQuality.NOT_AN_EXPRESSION);
			return false;
		}
		this.type = t;
	}
	return true;
}
 
源代码3 项目: Skript   文件: ExprAttacker.java
@Nullable
	private static Entity getAttacker(final @Nullable Event e) {
		if (e == null)
			return null;
		if (e instanceof EntityDamageByEntityEvent) {
			if (((EntityDamageByEntityEvent) e).getDamager() instanceof Projectile) {
				final Object o = ProjectileUtils.getShooter((Projectile) ((EntityDamageByEntityEvent) e).getDamager());
				if (o instanceof Entity)
					return (Entity) o;
				return null;
			}
			return ((EntityDamageByEntityEvent) e).getDamager();
//		} else if (e instanceof EntityDamageByBlockEvent) {
//			return ((EntityDamageByBlockEvent) e).getDamager();
		} else if (e instanceof EntityDeathEvent) {
			return getAttacker(((EntityDeathEvent) e).getEntity().getLastDamageCause());
		} else if (e instanceof VehicleDamageEvent) {
			return ((VehicleDamageEvent) e).getAttacker();
		} else if (e instanceof VehicleDestroyEvent) {
			return ((VehicleDestroyEvent) e).getAttacker();
		}
		return null;
	}
 
源代码4 项目: askyblock   文件: IslandGuard.java
@EventHandler(priority = EventPriority.LOW, ignoreCancelled=true)
public void onVehicleDamageEvent(VehicleDamageEvent e) {
    if (DEBUG) {
        plugin.getLogger().info(e.getEventName());
        plugin.getLogger().info(e.getAttacker().getType().toString());
    }
    if (inWorld(e.getVehicle())) {
        if (!(e.getAttacker() instanceof Player)) {
            return;
        }
        Player p = (Player) e.getAttacker();
        if (actionAllowed(p, e.getVehicle().getLocation(), SettingsFlag.BREAK_BLOCKS)) {
            return;
        }
        // Not allowed
        Util.sendMessage(p, ChatColor.RED + plugin.myLocale(p.getUniqueId()).islandProtected);
        e.setCancelled(true);
    }
}
 
源代码5 项目: GriefDefender   文件: EntityEventHandler.java
@EventHandler(priority = EventPriority.LOWEST)
public void onVehicleDamage(VehicleDamageEvent event) {
    GDTimings.ENTITY_DAMAGE_EVENT.startTiming();
    final Object source = event.getAttacker() != null ? event.getAttacker() : NMSUtil.getInstance().getBlockDamager();
    if (protectEntity(event, source, (Entity) event.getVehicle())) {
        event.setCancelled(true);
    }
    GDTimings.ENTITY_DAMAGE_EVENT.stopTiming();
}
 
源代码6 项目: PGM   文件: DamageMatchModule.java
@EventHandler(ignoreCancelled = true)
public void onDamageVehicle(VehicleDamageEvent event) {
  MatchPlayer victim = getVictim(event.getVehicle());
  if (victim == null) return;

  processDamageEvent(
      event,
      victim.getParticipantState(),
      tracker()
          .resolveDamage(
              EntityDamageEvent.DamageCause.CUSTOM, event.getVehicle(), event.getAttacker()));
}
 
源代码7 项目: ProjectAres   文件: DamageMatchModule.java
@EventHandler(ignoreCancelled = true)
public void onDamageVehicle(VehicleDamageEvent event) {
    MatchPlayer victim = getVictim(event.getVehicle());
    if(victim == null) return;
    processDamageEvent(event, victim.getParticipantState(),
                       damageResolver.resolveDamage(EntityDamageEvent.DamageCause.CUSTOM, event.getVehicle(), event.getAttacker()));
}
 
源代码8 项目: Skript   文件: ExprAttacker.java
@Override
public boolean init(final Expression<?>[] vars, final int matchedPattern, final Kleenean isDelayed, final ParseResult parser) {
	if (!ScriptLoader.isCurrentEvent(EntityDamageByEntityEvent.class, EntityDeathEvent.class, VehicleDamageEvent.class, VehicleDestroyEvent.class)) {
		Skript.error("Cannot use 'attacker' outside of a damage/death/destroy event", ErrorQuality.SEMANTIC_ERROR);
		return false;
	}
	return true;
}
 
源代码9 项目: Skript   文件: ExprDamage.java
@Override
public boolean init(final Expression<?>[] exprs, final int matchedPattern, final Kleenean isDelayed, final ParseResult parseResult) {
	if (!ScriptLoader.isCurrentEvent(EntityDamageEvent.class, VehicleDamageEvent.class)) {
		Skript.error("The expression 'damage' may only be used in damage events", ErrorQuality.SEMANTIC_ERROR);
		return false;
	}
	delay = isDelayed;
	return true;
}
 
源代码10 项目: Skript   文件: ExprDamage.java
@Override
@Nullable
protected Double[] get(final Event e) {
	if (!(e instanceof EntityDamageEvent || e instanceof VehicleDamageEvent))
		return new Double[0];
	
	if (e instanceof VehicleDamageEvent)
		return CollectionUtils.array(((VehicleDamageEvent) e).getDamage());
	return CollectionUtils.array(HealthUtils.getDamage((EntityDamageEvent) e));
}
 
源代码11 项目: uSkyBlock   文件: ExploitEvents.java
@EventHandler
public void on(VehicleDamageEvent e) {
    if (breakVehicleEnabled
            || !(e.getAttacker() instanceof Player)
            || !plugin.getWorldManager().isSkyAssociatedWorld(e.getVehicle().getWorld())
    ) {
        return;
    }
    Player player = (Player) e.getAttacker();
    if (player.hasPermission("usb.mod.bypassprotection") || plugin.playerIsOnIsland(player)) {
        return;
    }
    e.setCancelled(true);
    player.sendMessage(tr("\u00a7eYou cannot break vehicles while being a visitor!"));
}
 
源代码12 项目: askyblock   文件: SafeBoat.java
/**
 * @param e - event
 *            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);
}
 
源代码13 项目: PGM   文件: EventFilterMatchModule.java
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onVehicleDamage(final VehicleDamageEvent event) {
  cancelUnlessInteracting(event, event.getAttacker());
}
 
源代码14 项目: PGM   文件: FreezeMatchModule.java
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onVehicleDamage(final VehicleDamageEvent event) {
  if (freeze.isFrozen(event.getAttacker())) {
    event.setCancelled(true);
  }
}
 
源代码15 项目: ProjectAres   文件: EventFilterMatchModule.java
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onVehicleDamage(final VehicleDamageEvent event) {
    cancelUnlessInteracting(event, event.getAttacker());
}
 
源代码16 项目: ProjectAres   文件: FreezeListener.java
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onVehicleDamage(final VehicleDamageEvent event) {
    if(freeze.isFrozen(event.getAttacker())) {
        event.setCancelled(true);
    }
}
 
源代码17 项目: CardinalPGM   文件: ObserverModule.java
@EventHandler
public void onVehicleDamage(VehicleDamageEvent event) {
    if (event.getAttacker() instanceof Player && testObserverOrDead((Player) event.getAttacker())) {
        event.setCancelled(true);
    }
}
 
 类所在包
 类方法
 同包方法