下面列出了怎么用org.bukkit.event.vehicle.VehicleExitEvent的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
protected Entity[] get(final Event e, final Entity[] source) {
return get(source, new Converter<Entity, Entity>() {
@Override
@Nullable
public Entity convert(final Entity p) {
if (getTime() >= 0 && e instanceof VehicleEnterEvent && p.equals(((VehicleEnterEvent) e).getEntered()) && !Delay.isDelayed(e)) {
return ((VehicleEnterEvent) e).getVehicle();
}
if (getTime() >= 0 && e instanceof VehicleExitEvent && p.equals(((VehicleExitEvent) e).getExited()) && !Delay.isDelayed(e)) {
return ((VehicleExitEvent) e).getVehicle();
}
if (hasMountEvents) {
if (getTime() >= 0 && e instanceof EntityMountEvent && p.equals(((EntityMountEvent) e).getEntity()) && !Delay.isDelayed(e)) {
return ((EntityMountEvent) e).getMount();
}
if (getTime() >= 0 && e instanceof EntityDismountEvent && p.equals(((EntityDismountEvent) e).getEntity()) && !Delay.isDelayed(e)) {
return ((EntityDismountEvent) e).getDismounted();
}
}
return p.getVehicle();
}
});
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void vehicleExit(VehicleExitEvent e) {
if(e.getExited() instanceof Player) {
HawkPlayer pp = hawk.getHawkPlayer((Player)e.getExited());
pp.sendSimulatedAction(new Runnable() {
@Override
public void run() {
pp.setInVehicle(false);
}
});
}
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onDismount(VehicleExitEvent event) {
Entity e = event.getVehicle();
if (plugin.isPet(e)) {
IEntityPet entityPet = plugin.getPetEntity(e);
if (entityPet.getPet().isOwnerRiding() && !entityPet.getPet().isOwnerInMountingProcess()) {
Lang.sendTo(entityPet.getPet().getOwner(), Lang.RIDE_PET_OFF.toString());
entityPet.getPet().ownerRidePet(false);
}
}
}
/**
* @param e - event
* This event aims to put the player in a safe place when they
* exit the boat
*/
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onBoatExit(VehicleExitEvent e) {
final Entity boat = e.getVehicle();
if (!boat.getType().equals(EntityType.BOAT)) {
// Not a boat
return;
}
// LivingEntity entity = e.getExited();
final Entity entityObj = e.getExited();
if (!(entityObj instanceof Player)) {
return;
}
final Player player = (Player) entityObj;
final World playerWorld = player.getWorld();
if (!playerWorld.getName().equalsIgnoreCase(Settings.worldName)) {
// Not the right world
return;
}
if (SafeBoat.ignoreList.contains(player.getUniqueId())) {
return;
}
// Set the boat exit flag for this player
// midTeleport.add(player.getUniqueId());
if (exitedBoat.containsKey(player.getUniqueId())) {
// Debounce
e.setCancelled(true);
} else {
exitedBoat.put(player.getUniqueId(), boat);
}
return;
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onDismount(VehicleExitEvent event) {
Entity e = event.getVehicle();
if (ReflectionUtil.getEntityHandle(e) instanceof IEntityPet) {
IEntityPet entityPet = (IEntityPet) ReflectionUtil.getEntityHandle(e);
if (entityPet.getPet().isOwnerRiding() && !entityPet.getPet().isOwnerInMountingProcess()) {
Lang.sendTo(entityPet.getPet().getOwner(), Lang.RIDE_PET_OFF.toString());
entityPet.getPet().ownerRidePet(false);
}
}
}
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onVehicleExit(final VehicleExitEvent event) {
if (freeze.isFrozen(event.getExited())) {
event.setCancelled(true);
}
}
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onVehicleExit(final VehicleExitEvent event) {
if(freeze.isFrozen(event.getExited())) {
event.setCancelled(true);
}
}
@SuppressWarnings("unchecked")
@Override
public boolean setTime(final int time) {
return super.setTime(time, getExpr(), VehicleEnterEvent.class, VehicleExitEvent.class);
}
@SuppressWarnings("unchecked")
@Override
public boolean setTime(final int time) {
return super.setTime(time, vehicle, VehicleEnterEvent.class, VehicleExitEvent.class);
}
@EventHandler
public void onVehicleExit(VehicleExitEvent event) {
if (event.getExited() instanceof Player && testObserverOrDead((Player) event.getExited())) {
event.setCancelled(true);
}
}