下面列出了org.bukkit.craftbukkit.v1_8_R3.CraftWorld#org.bukkit.event.entity.EntityTargetEvent 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@EventHandler(ignoreCancelled = true)
public void onTarget(EntityTargetEvent event) {
if (!(event.getEntity() instanceof ExperienceOrb)) {
ParticipantState victimState = null;
if (event.getTarget() instanceof Player) {
// Don't target allies
MatchPlayer victim = getVictim(event.getTarget());
if (victim == null) return;
victimState = victim.getParticipantState();
} else if (event.getTarget() != null) {
// Don't target other mobs owned by allies
victimState = tracker().getOwner(event.getTarget());
}
if (victimState == null) return;
DamageInfo damageInfo =
tracker()
.resolveDamage(
EntityDamageEvent.DamageCause.ENTITY_ATTACK,
event.getTarget(),
event.getEntity());
if (queryHostile(victimState, damageInfo).isDenied()) {
event.setCancelled(true);
}
}
}
@EventHandler(ignoreCancelled = true)
public void onTarget(EntityTargetEvent event) {
if(!(event.getEntity() instanceof ExperienceOrb)) {
ParticipantState victimState = null;
if(event.getTarget() instanceof Player) {
// Don't target allies
MatchPlayer victim = getVictim(event.getTarget());
if(victim == null) return;
victimState = victim.getParticipantState();
} else if(event.getTarget() != null) {
// Don't target other mobs owned by allies
victimState = entityResolver.getOwner(event.getTarget());
}
if(victimState == null) return;
DamageInfo damageInfo = damageResolver.resolveDamage(EntityDamageEvent.DamageCause.ENTITY_ATTACK, event.getTarget(), event.getEntity());
if(queryHostile(event, victimState, damageInfo).isDenied()) {
event.setCancelled(true);
}
}
}
@Override
protected Entity[] get(final Event e, final LivingEntity[] source) {
return get(source, new Converter<LivingEntity, Entity>() {
@Override
@Nullable
public Entity convert(final LivingEntity en) {
if (getTime() >= 0 && e instanceof EntityTargetEvent && en.equals(((EntityTargetEvent) e).getEntity()) && !Delay.isDelayed(e)) {
final Entity t = ((EntityTargetEvent) e).getTarget();
if (t == null || type != null && !type.isInstance(t))
return null;
return t;
}
return Utils.getTarget(en, type);
}
});
}
@Override
public void change(final Event e, final @Nullable Object[] delta, final ChangeMode mode) {
if (mode == ChangeMode.SET || mode == ChangeMode.DELETE) {
final LivingEntity target = delta == null ? null : (LivingEntity) delta[0];
for (final LivingEntity entity : getExpr().getArray(e)) {
if (getTime() >= 0 && e instanceof EntityTargetEvent && entity.equals(((EntityTargetEvent) e).getEntity()) && !Delay.isDelayed(e)) {
((EntityTargetEvent) e).setTarget(target);
} else {
if (entity instanceof Creature)
((Creature) entity).setTarget(target);
}
}
} else {
super.change(e, delta, mode);
}
}
public void onTarget(EntityTargetEvent event) {
if (event.isCancelled()) {
return;
}
if ((event.getReason().equals(TargetReason.CLOSEST_PLAYER) ||
event.getReason().equals(TargetReason.OWNER_ATTACKED_TARGET)) &&
(event.getTarget() instanceof Player)) {
double followRange = this.getFollowRange();
double distance = event.getEntity().getLocation().distance(event.getTarget().getLocation());
if ((distance-0.5) <= followRange) {
this.targetName = ((Player)event.getTarget()).getName();
this.lastLocation = event.getEntity().getLocation();
}
} else {
this.targetName = null;
this.lastLocation = null;
}
}
@EventHandler(priority = EventPriority.NORMAL)
public void onEntityTarget(EntityTargetEvent event) {
if (!(event.getEntity() instanceof LivingEntity)) {
return;
}
if (!MobLib.isMobLibEntity((LivingEntity) event.getEntity())) {
return;
}
CommonCustomMob mob = CommonCustomMob.getCCM(event.getEntity());
if (mob != null) {
mob.onTarget(event);
}
}
@Override
public boolean shouldContinue() {
LivingEntity target = this.getControllableEntity().getTarget();
// CraftBukkit start
EntityTargetEvent.TargetReason reason = this.getControllableEntity().getTarget() == null ? EntityTargetEvent.TargetReason.FORGOT_TARGET : EntityTargetEvent.TargetReason.TARGET_DIED;
if (this.getControllableEntity().getTarget() == null || (this.getControllableEntity().getTarget() != null && !((CraftLivingEntity) this.getControllableEntity().getTarget()).getHandle().isAlive())) {
org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory.callEntityTargetEvent(this.getHandle(), null, reason);
}
// CraftBukkit end
if (target == null) {
return false;
}
EntityLiving targetHandle = ((CraftLivingEntity) target).getHandle();
return !targetHandle.isAlive() ? false : (!this.ignoreSight ? !NMSEntityUtil.getNavigation(this.getHandle()).g() : NMSEntityUtil.isInHomeArea(this.getHandle(), MathHelper.floor(targetHandle.locX), MathHelper.floor(targetHandle.locY), MathHelper.floor(targetHandle.locZ)));
}
@Override
public boolean shouldContinue() {
LivingEntity target = this.getControllableEntity().getTarget();
// CraftBukkit start
EntityTargetEvent.TargetReason reason = this.getControllableEntity().getTarget() == null ? EntityTargetEvent.TargetReason.FORGOT_TARGET : EntityTargetEvent.TargetReason.TARGET_DIED;
if (this.getControllableEntity().getTarget() == null || (this.getControllableEntity().getTarget() != null && !((CraftLivingEntity) this.getControllableEntity().getTarget()).getHandle().isAlive())) {
org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory.callEntityTargetEvent(this.getHandle(), null, reason);
}
// CraftBukkit end
if (target == null) {
return false;
}
EntityLiving targetHandle = ((CraftLivingEntity) target).getHandle();
return !targetHandle.isAlive() ? false : (!this.ignoreSight ? !NMSEntityUtil.getNavigation(this.getHandle()).g() : NMSEntityUtil.isInHomeArea(this.getHandle(), MathHelper.floor(targetHandle.locX), MathHelper.floor(targetHandle.locY), MathHelper.floor(targetHandle.locZ)));
}
@Override
public boolean shouldContinue() {
LivingEntity target = this.getControllableEntity().getTarget();
// CraftBukkit start
EntityTargetEvent.TargetReason reason = this.getControllableEntity().getTarget() == null ? EntityTargetEvent.TargetReason.FORGOT_TARGET : EntityTargetEvent.TargetReason.TARGET_DIED;
if (this.getControllableEntity().getTarget() == null || (this.getControllableEntity().getTarget() != null && !((CraftLivingEntity) this.getControllableEntity().getTarget()).getHandle().isAlive())) {
org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.callEntityTargetEvent(this.getHandle(), null, reason);
}
// CraftBukkit end
if (target == null) {
return false;
}
EntityLiving targetHandle = ((CraftLivingEntity) target).getHandle();
return !targetHandle.isAlive() ? false : (!this.ignoreSight ? !NMSEntityUtil.getNavigation(this.getHandle()).g() : NMSEntityUtil.isInHomeArea(this.getHandle(), MathHelper.floor(targetHandle.locX), MathHelper.floor(targetHandle.locY), MathHelper.floor(targetHandle.locZ)));
}
@Override
public boolean shouldContinue() {
LivingEntity target = this.getControllableEntity().getTarget();
// CraftBukkit start
EntityTargetEvent.TargetReason reason = this.getControllableEntity().getTarget() == null ? EntityTargetEvent.TargetReason.FORGOT_TARGET : EntityTargetEvent.TargetReason.TARGET_DIED;
if (this.getControllableEntity().getTarget() == null || (this.getControllableEntity().getTarget() != null && !((CraftLivingEntity) this.getControllableEntity().getTarget()).getHandle().isAlive())) {
org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory.callEntityTargetEvent(this.getHandle(), null, reason);
}
// CraftBukkit end
if (target == null) {
return false;
}
EntityLiving targetHandle = ((CraftLivingEntity) target).getHandle();
return !targetHandle.isAlive() ? false : (!this.ignoreSight ? !NMSEntityUtil.getNavigation(this.getHandle()).g() : NMSEntityUtil.isInHomeArea(this.getHandle(), MathHelper.floor(targetHandle.locX), MathHelper.floor(targetHandle.locY), MathHelper.floor(targetHandle.locZ)));
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onTarget(EntityTargetEvent event)
{
if(event.getTarget() instanceof Player)
{
Player player = (Player) event.getTarget();
if(userManager.get(player.getUniqueId()).getVanishType() != VanishType.TOTAL)
{
return;
}
event.setCancelled(true);
}
}
public TNTSheep(Location location, Player target) {
super(((CraftWorld) location.getWorld()).getHandle());
this.world = location.getWorld();
this.locX = location.getX();
this.locY = location.getY();
this.locZ = location.getZ();
try {
Field b = this.goalSelector.getClass().getDeclaredField("b");
b.setAccessible(true);
b.set(this.goalSelector, new ArrayList<>());
this.getAttributeInstance(GenericAttributes.b).setValue(128D);
this.getAttributeInstance(GenericAttributes.d)
.setValue(
BedwarsRel.getInstance().getConfig().getDouble("specials.tntsheep.speed", 0.4D));
} catch (Exception e) {
BedwarsRel.getInstance().getBugsnag().notify(e);
e.printStackTrace();
}
this.goalSelector.a(0, new PathfinderGoalBedwarsPlayer(this, EntityHuman.class, 1D, false));
this.setGoalTarget((EntityLiving) (((CraftPlayer) target).getHandle()),
EntityTargetEvent.TargetReason.OWNER_ATTACKED_TARGET, false);
((Creature) this.getBukkitEntity()).setTarget((LivingEntity) target);
}
public TNTSheep(Location location, Player target) {
super(((CraftWorld) location.getWorld()).getHandle());
this.world = location.getWorld();
this.locX = location.getX();
this.locY = location.getY();
this.locZ = location.getZ();
try {
Field b = this.goalSelector.getClass().getDeclaredField("b");
b.setAccessible(true);
b.set(this.goalSelector, new ArrayList<>());
this.getAttributeInstance(GenericAttributes.FOLLOW_RANGE).setValue(128D);
this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED)
.setValue(
BedwarsRel.getInstance().getConfig().getDouble("specials.tntsheep.speed", 0.4D));
} catch (Exception e) {
BedwarsRel.getInstance().getBugsnag().notify(e);
e.printStackTrace();
}
this.goalSelector.a(0, new PathfinderGoalBedwarsPlayer(this, EntityHuman.class, 1D, false));
this.setGoalTarget((EntityLiving) (((CraftPlayer) target).getHandle()),
EntityTargetEvent.TargetReason.OWNER_ATTACKED_TARGET, false);
((Creature) this.getBukkitEntity()).setTarget((LivingEntity) target);
}
public TNTSheep(Location location, Player target) {
super(((CraftWorld) location.getWorld()).getHandle());
this.world = location.getWorld();
this.locX = location.getX();
this.locY = location.getY();
this.locZ = location.getZ();
try {
Field b = this.goalSelector.getClass().getDeclaredField("b");
b.setAccessible(true);
b.set(this.goalSelector, new ArrayList<>());
this.getAttributeInstance(GenericAttributes.b).setValue(128D);
this.getAttributeInstance(GenericAttributes.d)
.setValue(
BedwarsRel.getInstance().getConfig().getDouble("specials.tntsheep.speed", 0.4D));
} catch (Exception e) {
BedwarsRel.getInstance().getBugsnag().notify(e);
e.printStackTrace();
}
this.goalSelector.a(0, new PathfinderGoalBedwarsPlayer(this, EntityHuman.class, 1D, false));
this.setGoalTarget((EntityLiving) (((CraftPlayer) target).getHandle()),
EntityTargetEvent.TargetReason.OWNER_ATTACKED_TARGET, false);
((Creature) this.getBukkitEntity()).setTarget((LivingEntity) target);
}
@Override
public void onTarget(EntityTargetEvent event) {
super.onTarget(event);
if (event.getReason().equals(TargetReason.FORGOT_TARGET) ||
event.getReason().equals(TargetReason.TARGET_DIED)) {
this.angry = false;
for (Entity e : minions) {
e.getBukkitEntity().remove();
}
}
}
@Override
public void onTarget(EntityTargetEvent event) {
super.onTarget(event);
if (event.getReason().equals(TargetReason.FORGOT_TARGET) ||
event.getReason().equals(TargetReason.TARGET_DIED)) {
event.getEntity().remove();
}
}
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
public void onEntityTarget(EntityTargetEvent event) {
if (listenerService.shouldCancelEvent(event.getTarget())) {
event.setTarget(null);
event.setCancelled(true);
}
}
@Test
public void shouldCancelEntityTargetEvent() {
// given
EntityTargetEvent event = mock(EntityTargetEvent.class);
Entity target = mock(Entity.class);
given(event.getTarget()).willReturn(target);
given(listenerService.shouldCancelEvent(target)).willReturn(true);
// when
listener.onEntityTarget(event);
// then
verify(listenerService).shouldCancelEvent(target);
verify(event).setCancelled(true);
}
@Test
public void shouldNotCancelEntityTargetEvent() {
// given
EntityTargetEvent event = mock(EntityTargetEvent.class);
Entity target = mock(Entity.class);
given(event.getTarget()).willReturn(target);
given(listenerService.shouldCancelEvent(target)).willReturn(false);
// when
listener.onEntityTarget(event);
// then
verify(listenerService).shouldCancelEvent(target);
verify(event, only()).getTarget();
}
@Override
public void finish() {
// CraftBukkit start
EntityTargetEvent.TargetReason reason = this.target.isAlive() ? EntityTargetEvent.TargetReason.FORGOT_TARGET : EntityTargetEvent.TargetReason.TARGET_DIED;
CraftEventFactory.callEntityTargetEvent(this.getHandle(), null, reason);
// CraftBukkit end
this.target = null;
this.inRangeTicks = 0;
this.shootCooldown = -1;
}
@Override
public void finish() {
// CraftBukkit start
EntityTargetEvent.TargetReason reason = this.target.isAlive() ? EntityTargetEvent.TargetReason.FORGOT_TARGET : EntityTargetEvent.TargetReason.TARGET_DIED;
CraftEventFactory.callEntityTargetEvent(this.getHandle(), null, reason);
// CraftBukkit end
this.target = null;
this.inRangeTicks = 0;
this.shootCooldown = -1;
}
@Override
public void finish() {
// CraftBukkit start
EntityTargetEvent.TargetReason reason = this.target.isAlive() ? EntityTargetEvent.TargetReason.FORGOT_TARGET : EntityTargetEvent.TargetReason.TARGET_DIED;
CraftEventFactory.callEntityTargetEvent(this.getHandle(), null, reason);
// CraftBukkit end
this.target = null;
this.inRangeTicks = 0;
this.shootCooldown = -1;
}
@Override
public void finish() {
// CraftBukkit start
EntityTargetEvent.TargetReason reason = this.target.isAlive() ? EntityTargetEvent.TargetReason.FORGOT_TARGET : EntityTargetEvent.TargetReason.TARGET_DIED;
CraftEventFactory.callEntityTargetEvent(this.getHandle(), null, reason);
// CraftBukkit end
this.target = null;
this.inRangeTicks = 0;
this.shootCooldown = -1;
}
@EventHandler
public void onGolemTarget(EntityTargetEvent event) {
if (!(event.getEntity() instanceof IronGolem)) {
return;
}
IronGolem ironGolem = (IronGolem) event.getEntity();
for (String name : Main.getGameNames()) {
Game game = Main.getGame(name);
if ((game.getStatus() == GameStatus.RUNNING || game.getStatus() == GameStatus.GAME_END_CELEBRATING) && ironGolem.getWorld().equals(game.getGameWorld())) {
List<SpecialItem> golems = game.getActivedSpecialItems(Golem.class);
for (SpecialItem item : golems) {
if (item instanceof Golem) {
Golem golem = (Golem) item;
if (golem.getEntity().equals(ironGolem)) {
if (event.getTarget() instanceof Player) {
final Player player = (Player) event.getTarget();
if (game.isProtectionActive(player)) {
event.setCancelled(true);
return;
}
if (Main.isPlayerInGame(player)) {
if (golem.getTeam() == game.getTeamOfPlayer(player)) {
event.setCancelled(true);
// Try to find enemy
Player playerTarget = MiscUtils.findTarget(game, player, golem.getFollowRange());
if (playerTarget != null) {
// Oh. We found enemy!
ironGolem.setTarget(playerTarget);
return;
}
}
}
}
}
}
}
}
}
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onEntityTrack(final EntityTargetEvent event) {
// Handles mobs and XP orbs
if (event.getTarget() != null) cancelUnlessInteracting(event, event.getTarget());
}
@EventHandler
public void onGolemTarget(EntityTargetEvent event) {
if (!(event.getEntity() instanceof IronGolem)) {
return;
}
IronGolem ironGolem = (IronGolem) event.getEntity();
for (String name : Main.getGameNames()) {
Game game = Main.getGame(name);
if ((game.getStatus() == GameStatus.RUNNING || game.getStatus() == GameStatus.GAME_END_CELEBRATING) && ironGolem.getWorld().equals(game.getGameWorld())) {
List<SpecialItem> golems = game.getActivedSpecialItems(Golem.class);
for (SpecialItem item : golems) {
if (item instanceof Golem) {
Golem golem = (Golem) item;
if (golem.getEntity().equals(ironGolem)) {
if (event.getTarget() instanceof Player) {
final Player player = (Player) event.getTarget();
if (game.isProtectionActive(player)) {
event.setCancelled(true);
return;
}
if (Main.isPlayerInGame(player)) {
if (golem.getTeam() == game.getTeamOfPlayer(player)) {
event.setCancelled(true);
// Try to find enemy
Player playerTarget = MiscUtils.findTarget(game, player, golem.getFollowRange());
if (playerTarget != null) {
// Oh. We found enemy!
ironGolem.setTarget(playerTarget);
return;
}
}
}
}
}
}
}
}
}
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onEntityTrack(final EntityTargetEvent event) {
// Handles mobs and XP orbs
if(event.getTarget() != null) cancelUnlessInteracting(event, event.getTarget());
}
@Override
public boolean setTime(final int time) {
return super.setTime(time, EntityTargetEvent.class, getExpr());
}
@Override
public boolean check(final Event e) {
return ((EntityTargetEvent) e).getTarget() == null ^ target;
}
@EventHandler(ignoreCancelled = true)
void onEntityTarget(EntityTargetEvent event) {
if (plugin.isShopkeeper(event.getEntity()) || plugin.isShopkeeper(event.getTarget())) {
event.setCancelled(true);
}
}