下面列出了怎么用org.bukkit.entity.EnderDragon的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public void endEvent(boolean force) {
if (fired) {
if (force && length != -1) {
br.cancel();
}
World world = gMap.getCurrentWorld();
for (Entity ent: world.getEntities()) {
if (ent instanceof EnderDragon) {
ent.remove();
break;
}
}
if (gMap.getMatchState() == MatchState.PLAYING) {
MatchManager.get().message(gMap, ChatColor.translateAlternateColorCodes('&', endMessage));
}
if (repeatable || force) {
setStartTime();
this.startTime = this.startTime + gMap.getTimer();
this.fired = false;
}
}
}
public ControllableEnderDragonBase(int id, EntityManager manager) {
super(id, ControllableEntityType.ENDERDRAGON, manager);
Bukkit.getPluginManager().registerEvents(new Listener() {
@EventHandler
public void onEntityExplode(EntityExplodeEvent event) {
if (!shouldDestroyBlocks()) {
Entity entity = event.getEntity();
if (entity instanceof EnderDragon && entity.equals(getBukkitEntity())) {
event.setCancelled(true);
} else if (entity instanceof ComplexEntityPart && ((ComplexEntityPart) entity).getParent().equals(getBukkitEntity())) {
event.setCancelled(true);
}
}
}
}, EntityAPI.getCore());
}
@SuppressWarnings("null")
@Override
public boolean check(final Event evt) {
final EntityDamageEvent e = (EntityDamageEvent) evt;
if (!checkType(e.getEntity()))
return false;
if (e instanceof EntityDamageByEntityEvent && ((EntityDamageByEntityEvent) e).getDamager() instanceof EnderDragon && ((EntityDamageByEntityEvent) e).getEntity() instanceof EnderDragon)
return false;
return checkDamage(e);
}
@Override
public boolean effect(Event event, Player player) {
// List<String> lore = e.getBow().getItemMeta().getLore();
// if(!lore.contains(placeHolder)) {
// for(int i = descriptionSize; i != 0; i--)
// lore.remove(i);
// e.getProjectile().setMetadata("ce." + this.getOriginalName(), new FixedMetadataValue(main, writeType(lore)));
// player.setMetadata("ce.CanUnleashBeasts", null);
// } else
// e.getProjectile().setMetadata("ce." + this.getOriginalName(), null);
if(event instanceof EntityDamageByEntityEvent) {
EntityDamageByEntityEvent e = (EntityDamageByEntityEvent) event;
if(e.getDamager() != player)
return false;
Entity ent = e.getEntity();
Location loc = ent.getLocation();
World w = ent.getWorld();
if(ent instanceof Silverfish || ent instanceof EnderDragon || ent instanceof Spider || ent instanceof Slime || ent instanceof Ghast || ent instanceof MagmaCube || ent instanceof CaveSpider || (ent instanceof Wolf && ((Wolf) ent).isAngry()) || ent instanceof PigZombie) {
e.setDamage(e.getDamage()*DamageMultiplication);
w.playEffect(loc, Effect.SMOKE, 50);
w.playEffect(loc, Effect.MOBSPAWNER_FLAMES, 50);
EffectManager.playSound(loc, "BLOCK_PISTON_RETRACT", 1.3f, 3f);
return true;
} else if (ent instanceof Player) {
for(int i = 0; i < MaximumMobs; i++) {
if(rand.nextInt(100) < MobAppearanceChance) {
w.spawnEntity(loc, rand.nextInt(2) == 1 ? EntityType.SPIDER : EntityType.SLIME);
w.playEffect(loc, Effect.MOBSPAWNER_FLAMES, 30);
w.playEffect(loc, Effect.SMOKE, 30);
EffectManager.playSound(loc, "BLOCK_ANVIL_BREAK", 0.3f, 0.1f);
}
}
}
}
return false;
}
public EnderDragonChangePhaseEvent(EnderDragon enderDragon, EnderDragon.Phase currentPhase, EnderDragon.Phase newPhase) {
super(enderDragon);
this.currentPhase = currentPhase;
this.setNewPhase(newPhase);
}
@Override
public EnderDragon getEntity() {
return (EnderDragon) entity;
}
@Override
public EnderDragon getParent() {
return (EnderDragon) super.getParent();
}
@Override
public EnderDragon getParent() {
return (EnderDragon) super.getParent();
}
/**
* Gets the current phase that the dragon is in. This method will return null
* when a dragon is first spawned and hasn't yet been assigned a phase.
*
* @return the current dragon phase
*/
public EnderDragon.Phase getCurrentPhase() {
return currentPhase;
}
/**
* Gets the new phase that the dragon will switch to.
*
* @return the new dragon phase
*/
public EnderDragon.Phase getNewPhase() {
return newPhase;
}
/**
* Sets the new phase for the ender dragon.
*
* @param newPhase the new dragon phase
*/
public void setNewPhase(EnderDragon.Phase newPhase) {
Validate.notNull(newPhase, "New dragon phase cannot be null");
this.newPhase = newPhase;
}