下面列出了org.bukkit.entity.Entity#isValid ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
protected void execute(final Event e) {
for (Entity entity : entities.getArray(e)) {
if (entity instanceof EnderDragonPart) {
entity = ((EnderDragonPart) entity).getParent();
}
if (entity instanceof Damageable) {
final boolean creative = entity instanceof Player && ((Player) entity).getGameMode() == GameMode.CREATIVE;
if (creative) // Set player to survival before applying damage
((Player) entity).setGameMode(GameMode.SURVIVAL);
HealthUtils.damage((Damageable) entity, HealthUtils.getMaxHealth((Damageable) entity) * 100); // just to make sure that it really dies >:)
if (creative) // Set creative player back to creative
((Player) entity).setGameMode(GameMode.CREATIVE);
}
// if everything done so far has failed to kill this thing
// We also don't want to remove a player as this would remove the player's data from the server.
if (entity.isValid() && !(entity instanceof Player))
entity.remove();
}
}
@EventHandler
public void onDismount(EntityDismountEvent event) {
if (event.getDismounted() instanceof ArmorStand) {
ArmorStand armorStand = (ArmorStand) event.getDismounted();
if (armorStand.hasMetadata(metadata_key)) {
for (Entity p : armorStand.getPassengers()) {
if (p.isValid()) {
Location loc = safeLocations.get(p.getUniqueId());
safeLocations.remove(p.getUniqueId());
new BukkitRunnable() {
@Override
public void run() {
if (p.isValid() && loc != null) {
p.teleport(loc);
}
}
}.runTask(plugin);
}
}
}
armorStand.remove();
}
}
public Entity getSource() {
net.minecraft.entity.EntityLivingBase source = getHandle().getTntPlacedBy();
if (source != null) {
Entity bukkitEntity = source.getBukkitEntity();
if (bukkitEntity.isValid()) {
return bukkitEntity;
}
}
return null;
}
private boolean canBreed(Entity n) {
if (n.isValid() && n instanceof Animals) {
Animals animal = (Animals) n;
return animal.isAdult() && animal.canBreed() && !animal.isLoveMode();
}
return false;
}
private boolean isValidItem(Location l, Entity entity) {
if (entity instanceof Item && entity.isValid()) {
Item item = (Item) entity;
return !SlimefunUtils.hasNoPickupFlag(item) && item.getLocation().distanceSquared(l) > 0.25;
}
return false;
}
public static void scanValidAggressiveLivingEntity(LivingEntity livingEntity) {
if (!EntityTracker.isNaturalEntity(livingEntity) &&
!ConfigValues.mobCombatSettingsConfig.getBoolean(MobCombatSettingsConfig.STACK_AGGRESSIVE_SPAWNER_MOBS))
return;
if (EntityTracker.isNaturalEntity(livingEntity) &&
!ConfigValues.mobCombatSettingsConfig.getBoolean(MobCombatSettingsConfig.STACK_AGGRESSIVE_NATURAL_MOBS))
return;
for (Entity secondEntity : livingEntity.getNearbyEntities(aggressiveRange, aggressiveRange, aggressiveRange)) {
if (!secondEntity.getType().equals(livingEntity.getType())) continue;
if (!livingEntity.isValid() || !secondEntity.isValid()) continue;
if (!EntityTracker.isNaturalEntity(secondEntity) &&
!ConfigValues.mobCombatSettingsConfig.getBoolean(MobCombatSettingsConfig.STACK_AGGRESSIVE_SPAWNER_MOBS))
return;
if (EntityTracker.isNaturalEntity(secondEntity) &&
!ConfigValues.mobCombatSettingsConfig.getBoolean(MobCombatSettingsConfig.STACK_AGGRESSIVE_NATURAL_MOBS))
return;
EliteMobEntity eliteMobEntity1 = null;
EliteMobEntity eliteMobEntity2 = null;
int level1 = 1;
int level2 = 1;
if (EntityTracker.isEliteMob(livingEntity)) {
eliteMobEntity1 = EntityTracker.getEliteMobEntity(livingEntity);
if (!eliteMobEntity1.canStack()) continue;
level1 = eliteMobEntity1.getLevel();
}
if (EntityTracker.isEliteMob(secondEntity)) {
eliteMobEntity2 = EntityTracker.getEliteMobEntity(secondEntity);
if (!eliteMobEntity2.canStack()) continue;
level2 = eliteMobEntity2.getLevel();
}
int newLevel = level1 + level2;
if (newLevel > ConfigValues.mobCombatSettingsConfig.getInt(MobCombatSettingsConfig.ELITEMOB_STACKING_CAP))
return;
double healthPercentage = (livingEntity.getHealth() / livingEntity.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue() +
((LivingEntity) secondEntity).getHealth() / ((LivingEntity) secondEntity).getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()) / 2;
/*
This is a bit of a dirty hack
It won't register the entity twice, but it will overwrite the existing method
*/
eliteMobEntity1 = new EliteMobEntity(livingEntity, newLevel, healthPercentage, CreatureSpawnEvent.SpawnReason.CUSTOM);
secondEntity.remove();
}
}
public boolean hasValidEntity() {
Entity entity = this.getEntity();
return entity != null && entity.isValid();
}