下面列出了怎么用org.bukkit.entity.Parrot的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public boolean checkTrait(Entity original, Entity nearby) {
if(original instanceof Parrot){
return ((Parrot) original).getVariant() != ((Parrot) nearby).getVariant();
}
return false;
}
@Override
protected boolean init(@Nullable Class<? extends Parrot> c, @Nullable Parrot e) {
if (e != null) { // Entity provided, take its variant
Parrot.Variant entityVariant = e.getVariant();
for (int i = 0; i < variants.length; i++) {
Object var = variants[i];
if (var == entityVariant) { // Found variant of entity
variant = i; // Put its numeric id here
}
}
} else { // No entity, ask for variant randomization on spawn
variant = -1;
}
return true;
}
@Override
public void set(Parrot entity) {
if (variant == -1) {
int randomVariant = ThreadLocalRandom.current().nextInt(0, variants.length);
entity.setVariant((Variant) variants[randomVariant]);
} else {
entity.setVariant((Variant) variants[variant]);
}
}
@Override
public void applyTrait(Entity original, Entity spawned) {
if(original instanceof Parrot){
((Parrot) spawned).setVariant(((Parrot) original).getVariant());
}
}
@Override
protected boolean match(Parrot entity) {
return variant == -1 || entity.getVariant() == variants[variant];
}
@Override
public Class<? extends Parrot> getType() {
return Parrot.class;
}
/**
* Displays a hologram, and automatically delete it after a given delay.
*
* @param player
* @param owner
* @param tameable
*/
@SuppressWarnings("deprecation")
private void displayHologramAndMessage(Player player, AnimalTamer owner, Tameable tameable) {
if (hologramMessage) {
double offset = HORSE_OFFSET;
if (tameable instanceof Ocelot || version >= 14 && tameable instanceof Cat) {
if (!displayCat || !player.hasPermission("petmaster.showowner.cat")) {
return;
}
offset = CAT_OFFSET;
} else if (tameable instanceof Wolf) {
if (!displayDog || !player.hasPermission("petmaster.showowner.dog")) {
return;
}
offset = DOG_OFFSET;
} else if (version >= 11 && tameable instanceof Llama) {
if (!displayLlama || !player.hasPermission("petmaster.showowner.llama")) {
return;
}
offset = LLAMA_OFFSET;
} else if (version >= 12 && tameable instanceof Parrot) {
if (!displayParrot || !player.hasPermission("petmaster.showowner.parrot")) {
return;
}
offset = PARROT_OFFSET;
} else if (!displayHorse || !player.hasPermission("petmaster.showowner.horse")) {
return;
}
Location eventLocation = tameable.getLocation();
// Create location with offset.
Location hologramLocation = new Location(eventLocation.getWorld(), eventLocation.getX(),
eventLocation.getY() + offset, eventLocation.getZ());
final Hologram hologram = HologramsAPI.createHologram(plugin, hologramLocation);
hologram.appendTextLine(
ChatColor.GRAY + plugin.getPluginLang().getString("petmaster-hologram", "Pet owned by ")
+ ChatColor.GOLD + owner.getName());
// Runnable to delete hologram.
new BukkitRunnable() {
@Override
public void run() {
hologram.delete();
}
}.runTaskLater(plugin, hologramDuration);
}
String healthInfo = "";
if (showHealth) {
Animals animal = (Animals) tameable;
String currentHealth = String.format("%.1f", animal.getHealth());
String maxHealth = version < 9 ? String.format("%.1f", animal.getMaxHealth())
: String.format("%.1f", animal.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue());
healthInfo = ChatColor.GRAY + ". " + plugin.getPluginLang().getString("petmaster-health", "Health: ")
+ ChatColor.GOLD + currentHealth + "/" + maxHealth;
}
if (chatMessage) {
player.sendMessage(plugin.getChatHeader() + plugin.getPluginLang().getString("petmaster-chat", "Pet owned by ")
+ ChatColor.GOLD + owner.getName() + healthInfo);
}
if (actionBarMessage) {
try {
FancyMessageSender.sendActionBarMessage(player, "&o" + ChatColor.GRAY
+ plugin.getPluginLang().getString("petmaster-action-bar", "Pet owned by ") + ChatColor.GOLD
+ owner.getName() + healthInfo);
} catch (Exception e) {
plugin.getLogger().warning("Errors while trying to display action bar message for pet ownership.");
}
}
}