Java 类org.bukkit.entity.Tameable 实例源码

项目:mczone    文件:Control.java   
public static void walkToPlayer(Entity e, Player p) {
    // Tamed animals already handle their own following
    if (e instanceof Tameable) {
        if (((Tameable) e).isTamed()) {
            return;
        }
    }
    if (e.getPassenger() instanceof Player) {
        return;
    }

    // Moving the dragon is too buggy
    if (e instanceof EnderDragon) {
        return;
    }
    // Once this is set we can't unset it.
    //((Creature)e).setTarget(p);

    // If the pet is too far just teleport instead of attempt navigation
    if (e.getLocation().distance(p.getLocation()) > 20) {
        e.teleport(p);
    } else {
        Navigation n = ((CraftLivingEntity) e).getHandle().getNavigation();
        n.a(p.getLocation().getX(), p.getLocation().getY(), p.getLocation().getZ(), 0.30f);
    }
}
项目:RPGInventory    文件:PetListener.java   
@EventHandler(priority = EventPriority.LOWEST)
public void onWorldChanged(EntityPortalEnterEvent event) {
    if (!(event.getEntity() instanceof Tameable) || !(event.getEntity() instanceof LivingEntity)) {
        return;
    }

    OfflinePlayer player = (OfflinePlayer) ((Tameable) event.getEntity()).getOwner();
    if (!InventoryManager.playerIsLoaded(player)) {
        return;
    }

    PlayerWrapper playerWrapper = InventoryManager.get(player);
    if (event.getEntity() == playerWrapper.getPet()) {
        PetManager.respawnPet(player);
    }
}
项目:RedProtect    文件:RPEntityListener.java   
@EventHandler
public void onInteractEvent(PlayerInteractEntityEvent e){
    RedProtect.get().logger.debug("RPEntityListener - Is PlayerInteractEntityEvent");
    if (e.isCancelled()) {
           return;
       }
    Player p = e.getPlayer();
    if (p == null){
        return;
    }
    Location l = e.getRightClicked().getLocation();
    Region r = RedProtect.get().rm.getTopRegion(l); 
    Entity et = e.getRightClicked();
    if (r != null && !r.canInteractPassives(p) && (et instanceof Animals || et instanceof Villager || et instanceof Golem)) {
        if (et instanceof Tameable){
            Tameable tam = (Tameable) et;
            if (tam.isTamed() && tam.getOwner() != null && tam.getOwner().getName().equals(p.getName())){
                return;
            }
        }
        e.setCancelled(true);
        RPLang.sendMessage(p, "entitylistener.region.cantinteract");
    }
}
项目:SimpleEgg    文件:CaptureManager.java   
/**
 * Checks if there is an owner confliction in this EggTrackerEntry.
 * @param entry - The EggTrackerEntry to test.
 * @return True if a confliction is present, false if not.
 */
public boolean ownerConfliction(EggTrackerEntry entry) {
    if (entry.getEntity() instanceof Tameable) {
        Tameable tameable = (Tameable) entry.getEntity();

        // Order in the below statements is important. Owner override must be first, otherwise it will never be hit.
        if (tameable.getOwner() != null) {
            if (entry.getPlayer().hasPermission("SimpleEgg.owner-override")) {
                if (entry.getPlayer().hasPermission("SimpleEgg.steal")) {
                    tameable.setOwner(entry.getPlayer());
                }

                return false;
            }
        } else if (entry.getPlayer().hasPermission("SimpleEgg.auto-tame")) {
            tameable.setOwner(entry.getPlayer());
        }

        if (tameable.getOwner() != null && tameable.getOwner() != entry.getPlayer()) {
            return true;
        }
    }

    return false;
}
项目:PetMaster    文件:PlayerInteractListener.java   
/**
 * Change the owner of a pet.
 * 
 * @param event
 * @param oldOwner
 * @param newOwner
 */
private void changeOwner(PlayerInteractEntityEvent event, AnimalTamer oldOwner, Player newOwner) {
    if (chargePrice(event.getPlayer(), changeOwnerPrice)) {
        Tameable tameableAnimal = (Tameable) event.getRightClicked();
        // Change owner.
        tameableAnimal.setOwner(newOwner);
        event.getPlayer().sendMessage(plugin.getChatHeader()
                + plugin.getPluginLang().getString("owner-changed", "This pet was given to a new owner!"));
        newOwner.sendMessage(plugin.getChatHeader()
                + plugin.getPluginLang().getString("new-owner", "Player PLAYER gave you ownership of a pet!")
                        .replace("PLAYER", event.getPlayer().getName()));

        // Create new event to allow other plugins to be aware of the ownership change.
        PlayerChangeAnimalOwnershipEvent playerChangeAnimalOwnershipEvent = new PlayerChangeAnimalOwnershipEvent(
                oldOwner, newOwner, tameableAnimal);
        Bukkit.getServer().getPluginManager().callEvent(playerChangeAnimalOwnershipEvent);
    }
}
项目:PetMaster    文件:PlayerInteractListener.java   
/**
 * Frees a pet; it will no longer be tamed.
 * 
 * @param event
 * @param oldOwner
 */
private void freePet(PlayerInteractEntityEvent event, AnimalTamer oldOwner) {
    if (chargePrice(event.getPlayer(), freePetPrice)) {
        Tameable tameableAnimal = (Tameable) event.getRightClicked();
        // Free pet.
        tameableAnimal.setTamed(false);
        // Make freed pet stand up.
        if (version >= 12 && tameableAnimal instanceof Sittable) {
            ((Sittable) tameableAnimal).setSitting(false);
        } else if (tameableAnimal instanceof Wolf) {
            ((Wolf) tameableAnimal).setSitting(false);
        } else if (tameableAnimal instanceof Ocelot) {
            ((Ocelot) tameableAnimal).setSitting(false);
        }

        event.getPlayer().sendMessage(plugin.getChatHeader()
                + plugin.getPluginLang().getString("pet-freed", "Say goodbye: this pet returned to the wild!"));

        // Create new event to allow other plugins to be aware of the freeing.
        PlayerChangeAnimalOwnershipEvent playerChangeAnimalOwnershipEvent = new PlayerChangeAnimalOwnershipEvent(
                oldOwner, null, tameableAnimal);
        Bukkit.getServer().getPluginManager().callEvent(playerChangeAnimalOwnershipEvent);
    }
}
项目:StableMaster    文件:EntityTameListener.java   
@EventHandler(ignoreCancelled = true)
public void onEntityTame(EntityTameEvent event) {
    // Return if the damaged entity is not a tameable entity.
    if (!(event.getEntity() instanceof Tameable))
        return;

    Player player = (Player) event.getOwner();
    Animals animal = (Animals) event.getEntity();
    String name = animal.getType().name().toLowerCase();

    // Don't cancel if the player has the appropriate permission
    if (player.hasPermission("stablemaster.tame." + name))
        return;

    event.setCancelled(true);
    new LangString("error.cannot-tame", getAnimal(animal.getType())).send(player);
}
项目:McMMOPlus    文件:EntityListener.java   
/**
 * Handle EntityTarget events.
 *
 * @param event The event to process
 */
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityTarget(EntityTargetEvent event) {
    Entity entity = event.getEntity();
    Entity target = event.getTarget();

    if (!(entity instanceof Tameable) || !(target instanceof Player)) {
        return;
    }

    Player player = (Player) target;
    Tameable tameable = (Tameable) entity;

    if (!UserManager.hasPlayerDataKey(player) || !CombatUtils.isFriendlyPet(player, tameable)) {
        return;
    }

    // isFriendlyPet ensures that the Tameable is: Tamed, owned by a player, and the owner is in the same party
    // So we can make some assumptions here, about our casting and our check
    if (!(Permissions.friendlyFire(player) && Permissions.friendlyFire((Player) tameable.getOwner()))) {
        event.setCancelled(true);
    }
}
项目:Stoa    文件:TameableUtil.java   
public static void disownPets(String animalTamer) {
    for (TameableModel wrapper : findByTamer(animalTamer)) {
        if (wrapper.getEntity() == null) continue;
        ((Tameable) wrapper.getEntity()).setOwner(new AnimalTamer() {
            @Override
            public String getName() {
                return "Disowned";
            }

            @Override
            public UUID getUniqueId() {
                return null;
            }
        });
    }
}
项目:CraftoPlugin    文件:OwnerTransferComponent.java   
void handleEntityInteraction(final PlayerInteractEntityEvent event, final Menu menu) {
    if (!this.module.getState().isEnabled()) { return; }
    if (Utility.getItemInHand(event.getPlayer()).isPresent() || !event.getPlayer().isSneaking()) { return; }
    if (event.getRightClicked().getType().equals(EntityType.PLAYER)) { return; }

    if (!(event.getRightClicked() instanceof Tameable)) { return; }
    final Tameable entity = (Tameable) event.getRightClicked();
    final Player player = event.getPlayer();

    if (entity.getOwner() == null) { return; }
    if (!entity.getOwner().getUniqueId().equals(player.getUniqueId())) { return; }

    menu.addItem(this.ownershipItem.build(), clickEvent -> {
        clickEvent.getPlayer().closeInventory();
        player.playSound(player.getLocation(), Sound.UI_BUTTON_CLICK, 1.0f, 1.75f);
        this.openOwnerTransferWindow(player, entity);
    });
}
项目:NucleusFramework    文件:TameableAnimal.java   
@Override
public boolean apply(Entity entity) {
    PreCon.notNull(entity);
    PreCon.isValid(entity instanceof Tameable, "entity meust be an instance of Tameable");

    Tameable tameable = (Tameable)entity;

    tameable.setTamed(_isTamed);

    if (_ownerId != null) {
        Player player = PlayerUtils.getPlayer(_ownerId);
        tameable.setOwner(player);
    }
    else {
        tameable.setOwner(null);
    }

    return true;
}
项目:Wayward    文件:HorsePlayerInteractEntityListener.java   
@EventHandler
public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
    if (event.getRightClicked() instanceof Horse) {
        Horse horse = (Horse) event.getRightClicked();
        if (horse.isTamed()) {
            if (horse.getOwner() != event.getPlayer()) {
                event.setCancelled(true);
            }
        }
    }
    if (plugin.isUntaming(event.getPlayer())) {
        if (event.getRightClicked() instanceof Tameable) {
            Tameable tameable = (Tameable) event.getRightClicked();
            if (tameable.getOwner() == event.getPlayer() || event.getPlayer().hasPermission("wayward.travel.untame.any")) {
                tameable.setTamed(false);
                event.getPlayer().sendMessage(plugin.getPrefix() + ChatColor.GREEN + "Your tameable creature was untamed.");
            } else {
                event.getPlayer().sendMessage(plugin.getPrefix() + ChatColor.RED + "That tameable creature is not yours!");
            }
        } else {
            event.getPlayer().sendMessage(plugin.getPrefix() + ChatColor.RED + "That entity is not tameable!");
        }
        plugin.setUntaming(event.getPlayer(), false);
    }
}
项目:MobBountyReloaded    文件:MobBountyReloadedEntityListener.java   
private Player getLastDamager(LivingEntity entity) {
    if (entity.getLastDamageCause() instanceof EntityDamageByEntityEvent) {
        EntityDamageByEntityEvent edbee = (EntityDamageByEntityEvent) entity
                .getLastDamageCause();
        Entity damagerEntity = edbee.getDamager();
        if (damagerEntity instanceof Player) {
            return (Player) damagerEntity;
        }
        if (damagerEntity instanceof Projectile) {
            if (((Projectile) damagerEntity).getShooter() instanceof Player) {
                return (Player) ((Projectile) damagerEntity).getShooter();
            }
            return null;
        }
        if (damagerEntity instanceof Tameable) {
            if (((Tameable) damagerEntity).getOwner() instanceof Player) {
                return (Player) ((Tameable) damagerEntity).getOwner();
            }
            return null;
        }
    }
    return null;
}
项目:mczone    文件:PetInstance.java   
public void update() {
    if (entity != null) {
        //((CraftEntity) entity).getHandle().setEquipment(4, new net.minecraft.server.v1_5_R2.ItemStack(Item.DIAMOND_HELMET));
        //Chat.server(((CraftEntity) entity).getHandle().getEquipment().toString());
        Player owner = Bukkit.getPlayerExact(this.owner);
        if (owner == null)
            return;
        entity.setCustomName(nameColor + name);
        entity.setCustomNameVisible(true);
        if (entity instanceof Tameable) {
            tamed = true;
            ((Tameable) entity).setTamed(true);
            ((Tameable) entity).setOwner(owner);
        }
        if (entity instanceof Ageable && age != null) {
            if (getAge() == Age.BABY)
                ((Ageable) entity).setBaby();
            ((Ageable) entity).setAgeLock(true);
        }
        if (entity instanceof Zombie && age != null) {
            if (getAge() == Age.BABY)
                ((Zombie) entity).setBaby(true);
        }
        if (entity instanceof Sheep && color != null) {
            ((Sheep) entity).setColor(getColor());
        }
    }
}
项目:Kineticraft    文件:CommandRescue.java   
@Override
protected void onCommand(CommandSender sender, String[] args) {
    sender.sendMessage(ChatColor.GREEN + "Please click on the animal you'd like to rescue.");

    Callbacks.selectEntity((Player) sender, ent -> {
            if (!(ent instanceof Tameable)) {
                sender.sendMessage(ChatColor.RED + "This entity is not tameable.");
                return;
            }

            ((Tameable) ent).setOwner(null);
            sender.sendMessage(ChatColor.GREEN + "Entity has been disowned.");
    });
}
项目:RPGInventory    文件:PetListener.java   
@EventHandler
public void onPetDeath(EntityDeathEvent event) {
    if (!(event.getEntity() instanceof Tameable)) {
        return;
    }

    Tameable petEntity = (Tameable) event.getEntity();
    final OfflinePlayer player;
    if (!petEntity.isTamed() || (player = (OfflinePlayer) petEntity.getOwner()) == null || !player.isOnline()) {
        return;
    }

    if (!InventoryManager.playerIsLoaded(player)) {
        return;
    }

    PlayerWrapper playerWrapper = InventoryManager.get(player);
    if (petEntity == playerWrapper.getPet()) {
        Inventory inventory = playerWrapper.getInventory();
        final ItemStack petItem = inventory.getItem(PetManager.getPetSlotId());
        PetType petType = PetManager.getPetFromItem(petItem);

        if (petType != null && petType.isRevival()) {
            PetManager.saveDeathTime(petItem);
            PetManager.saveHealth(petItem, 0);
            inventory.setItem(PetManager.getPetSlotId(), petItem);
            PetManager.startCooldownTimer(player.getPlayer(), petItem);
        } else {
            inventory.setItem(PetManager.getPetSlotId(), null);
        }

        event.getDrops().clear();
        playerWrapper.setPet(null);
    }
}
项目:RPGInventory    文件:PetListener.java   
@EventHandler
public void onTarget(EntityTargetLivingEntityEvent event) {
    if (!(event.getEntity() instanceof Tameable) || !(event.getEntity() instanceof LivingEntity)
            || event.getTarget() == null || !InventoryManager.isAllowedWorld(event.getTarget().getWorld())) {
        return;
    }

    LivingEntity petEntity = (LivingEntity) event.getEntity();
    final OfflinePlayer player = (OfflinePlayer) ((Tameable) petEntity).getOwner();

    if (!InventoryManager.playerIsLoaded(player)) {
        return;
    }

    PlayerWrapper playerWrapper = InventoryManager.get(player);
    if (playerWrapper.hasPet() && petEntity == playerWrapper.getPet()) {
        PetType petType = PetManager.getPetFromEntity(petEntity, player);

        if (petType == null) {
            return;
        }

        if (event.getTarget() != null && event.getTarget().getType() == EntityType.PLAYER) {
            event.setCancelled(!petType.isAttackPlayers());
        } else {
            event.setCancelled(!petType.isAttackMobs());
        }
    }
}
项目:GriefPreventionFlags    文件:FlagDef_NoPetDamage.java   
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityDamage(EntityDamageEvent event)
{
    Entity entity = event.getEntity();
    if(!(entity instanceof Tameable)) return;

    Tameable tameable = (Tameable)entity;
    if(!tameable.isTamed() || tameable.getOwner() == null) return;

    Flag flag = this.GetFlagInstanceAtLocation(entity.getLocation(), null);
    if(flag != null)
    {
        event.setCancelled(true);
    }
}
项目:QuestManager    文件:Summon.java   
@Override
public void alarm(Integer key) {
    // kill our summon
    Entity e = getEntity();

    if (e == null) {
        QuestManagerPlugin.logger.warning("Unable to locate and remove "
            + "summon!");
    } else {

        if (entity instanceof Tameable) {
            Tameable me = (Tameable) entity;
            AnimalTamer tamer = me.getOwner();

            if (tamer instanceof Player) {
                QuestPlayer qp = QuestManagerPlugin.questManagerPlugin.getPlayerManager().getPlayer(
                        (Player) tamer);
                if (qp.getOptions().getOption(PlayerOptions.Key.CHAT_PET_DISMISSAL)) {
                    ((Player) tamer).sendMessage(DEATH_MESSAGE);
                }
            }
        }

        e.getLocation().getChunk().load();
        e.remove();

        playDeathEffect(e.getLocation());
    }

    effect.stop();

    QuestManagerPlugin.questManagerPlugin.getSummonManager().unregisterSummon(this);
}
项目:QuestManager    文件:Summon.java   
@EventHandler
public void onEntityDeath(EntityDeathEvent e) {
    if (e.getEntity().getUniqueId().equals(entityID)) {
        //is summon entity
        effect.stop();

        if (Alarm.getScheduler().unregister(this)) {
            QuestManagerPlugin.questManagerPlugin.getSummonManager().unregisterSummon(this);

            if (entity instanceof Tameable) {
                Tameable me = (Tameable) entity;
                AnimalTamer tamer = me.getOwner();

                if (tamer instanceof Player) {
                    QuestPlayer qp = QuestManagerPlugin.questManagerPlugin.getPlayerManager().getPlayer(
                            (Player) tamer);
                    if (qp.getOptions().getOption(PlayerOptions.Key.CHAT_PET_DISMISSAL)) {
                        ((Player) tamer).sendMessage(DEATH_MESSAGE);
                    }
                }
            }
        }

        return;
    }

}
项目:RedProtect    文件:RPWorldListener.java   
@EventHandler(priority = EventPriority.NORMAL)
public void onChunkUnload(ChunkLoadEvent e) {
    if (!RPConfig.getGlobalFlagBool("remove-entities-not-allowed-to-spawn")){
        return;
    }
    Entity[] ents = e.getChunk().getEntities();
    for (Entity ent:ents){
        Region entr = RedProtect.get().rm.getTopRegion(ent.getLocation());
        if (entr != null){
            if (!entr.canSpawnMonsters() && ent instanceof Monster){
                ent.remove();
            }
        } else {
            if (ent instanceof Monster){
                if (!RPConfig.getGlobalFlagBool("spawn-monsters")){
                    ent.remove();
                }                               
            }
            else if (!RPConfig.getGlobalFlagBool("spawn-passives")){
                if (ent instanceof Tameable){
                    return;
                }
                ent.remove();
            } 
        }

    }
}
项目:PlotSquared-Chinese    文件:EntityWrapper.java   
private void restoreTameable(final Tameable entity) {
    if (this.tamed.tamed) {
        if (this.tamed.owner != null) {
            entity.setTamed(true);
            entity.setOwner(this.tamed.owner);
        }
    }
}
项目:PetMaster    文件:PlayerInteractListener.java   
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerInteractEntityEvent(PlayerInteractEntityEvent event) {
    // On Minecraft versions from 1.9 onwards, this event is fired twice, one for each hand. Need additional check.
    if (version >= 9 && event.getHand() != EquipmentSlot.HAND) {
        return;
    }

    if (!(event.getRightClicked() instanceof Tameable) || ((Tameable) event.getRightClicked()).getOwner() == null
            || !plugin.getEnableDisableCommand().isEnabled()) {
        return;
    }

    AnimalTamer currentOwner = ((Tameable) event.getRightClicked()).getOwner();
    // Has the player clicked on one of his own pets?
    boolean isOwner = event.getPlayer().getName().equals(currentOwner.getName());
    // Retrieve new owner from the map and delete corresponding entry.
    Player newOwner = plugin.getSetOwnerCommand().collectPendingSetOwnershipRequest(event.getPlayer());
    // Has the player requested to free one of his pets?
    boolean freePet = plugin.getFreeCommand().collectPendingFreeRequest(event.getPlayer());

    // Cannot change ownership or free pet if not owner and no bypass permission.
    if ((newOwner != null || freePet) && !isOwner && !event.getPlayer().hasPermission("petmaster.admin")) {
        event.getPlayer().sendMessage(plugin.getChatHeader() + plugin.getPluginLang()
                .getString("not-owner", "You do not own this pet!").replace("PLAYER", event.getPlayer().getName()));
        return;
    }

    if (newOwner != null) {
        changeOwner(event, currentOwner, newOwner);
    } else if (freePet) {
        freePet(event, currentOwner);
    } else if ((displayToOwner || !isOwner) && event.getPlayer().hasPermission("petmaster.showowner")) {
        displayHologramAndMessage(event, currentOwner);
    }
}
项目:WolfCommand    文件:WolfPlayer.java   
/**
 * Gets player's tamed wolves
 * @return
 */
public List<Wolf> getWolves() {
    List<Wolf> entities = new ArrayList<Wolf>();
    for (Entity e : player.getNearbyEntities(ATTACK_RANGE, ATTACK_RANGE, ATTACK_RANGE)) {
        if (e instanceof Wolf && e instanceof Tameable) {
            Tameable t = (Tameable) e;
            if (t.isTamed() && t.getOwner() == this.player) {
                entities.add((Wolf) e);
            }
        }
    }
    return entities;
}
项目:StableMaster    文件:Teleport.java   
public void handleInteract(Stable stable, Player player, Tameable animal) {
    final Animals a = (Animals) animal;
    // Storing location
    new LangString("command.teleport.location-saved").send(player);
    StableMaster.teleportChunk.add(a.getLocation().getChunk());
    StableMaster.commandQueue.put(player, this);
    teleportQueue.put(player, a);
}
项目:StableMaster    文件:Give.java   
public void handleInteract(Stable stable, Player player, Tameable animal) {
    OfflinePlayer newOwner = giveQueue.get(player);
    removeFromQueue(player);

    if (animal instanceof AbstractHorse) {
        AbstractHorse horse = (AbstractHorse) animal;
        Stable newStable = StableMaster.getStable(newOwner);
        stable.removeHorse(horse);
        newStable.addHorse(horse);
    }

    animal.setOwner(newOwner);
    new LangString("command.give.given", getAnimal(((Animals) animal).getType()), newOwner.getName()).send(player);
}
项目:StableMaster    文件:AddRider.java   
public void handleInteract(Stable stable, Player player, Tameable animal) {
    final AbstractHorse horse = (AbstractHorse) animal;
    StabledHorse stabledHorse = stable.getHorse(horse);
    OfflinePlayer rider = addRiderQueue.get(player);
    removeFromQueue(player);

    if (stabledHorse.isRider(rider)) {
        new LangString("command.addrider.is-rider", rider.getName()).send(player);
    }
    else {
        stabledHorse.addRider(rider);
        new LangString("command.addrider.added", rider.getName(), getAnimal(horse.getType())).send(player);
    }
}
项目:StableMaster    文件:DelRider.java   
public void handleInteract(Stable stable, Player player, Tameable animal) {
    final AbstractHorse horse = (AbstractHorse) animal;
    StabledHorse stabledHorse = stable.getHorse(horse);
    OfflinePlayer rider = delRiderQueue.get(player);
    removeFromQueue(player);

    if (!stabledHorse.isRider(rider)) {
        new LangString("command.delrider.not-rider", rider.getName()).send(player);
    }
    else {
        stabledHorse.delRider(rider);
        new LangString("command.delrider.removed", rider.getName(), getAnimal(horse.getType())).send(player);
    }
}
项目:StableMaster    文件:Rename.java   
public void handleInteract(Stable stable, Player player, Tameable animal) {
    final Animals a = (Animals) animal;
    final ConfigurationSection config = StableMaster.getPlugin().getConfig().getConfigurationSection("command.rename");
    String name = renameQueue.get(player);
    removeFromQueue(player);

    a.setCustomName(name);
    a.setCustomNameVisible(config.getBoolean("name-always-visible"));
    new LangString("command.rename.renamed", getAnimal(a.getType()), name).send(player);
}
项目:PopulationDensity    文件:EntityHelper.java   
public static boolean isTamed(LivingEntity ent) {
    if (ent instanceof Tameable) {
        Tameable t = (Tameable) ent;
        if (t.isTamed()) return true;
    }
    return false;
}
项目:PlotSquared    文件:EntityWrapper.java   
private void restoreTameable(Tameable entity) {
    if (this.tamed.tamed) {
        if (this.tamed.owner != null) {
            entity.setTamed(true);
            entity.setOwner(this.tamed.owner);
        }
    }
}
项目:McMMOPlus    文件:TamingManager.java   
/**
 * Handle the Beast Lore ability.
 *
 * @param target The entity to examine
 */
public void beastLore(LivingEntity target) {
    Player player = getPlayer();
    Tameable beast = (Tameable) target;

    String message = LocaleLoader.getString("Combat.BeastLore") + " ";

    if (beast.isTamed() && beast.getOwner() != null) {
        message = message.concat(LocaleLoader.getString("Combat.BeastLoreOwner", beast.getOwner().getName()) + " ");
    }

    message = message.concat(LocaleLoader.getString("Combat.BeastLoreHealth", target.getHealth(), target.getMaxHealth()));
    player.sendMessage(message);
}
项目:McMMOPlus    文件:TamingManager.java   
/**
 * Handle the Call of the Wild ability.
 *
 * @param type The type of entity to summon.
 * @param summonAmount The amount of material needed to summon the entity
 */
private void callOfTheWild(EntityType type, int summonAmount) {
    Player player = getPlayer();

    ItemStack heldItem = player.getItemInHand();
    int heldItemAmount = heldItem.getAmount();

    if (heldItemAmount < summonAmount) {
        player.sendMessage(LocaleLoader.getString("Skills.NeedMore", StringUtils.getPrettyItemString(heldItem.getType())));
        return;
    }

    if (!rangeCheck(type)) {
        return;
    }

    int amount = Config.getInstance().getTamingCOTWAmount(type);

    for (int i = 0; i < amount; i++) {
        LivingEntity entity = (LivingEntity) player.getWorld().spawnEntity(player.getLocation(), type);

        FakeEntityTameEvent event = new FakeEntityTameEvent(entity, player);
        mcMMO.p.getServer().getPluginManager().callEvent(event);

        if (event.isCancelled()) {
            continue;
        }

        entity.setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
        ((Tameable) entity).setOwner(player);
        entity.setRemoveWhenFarAway(false);

        switch (type) {
            case OCELOT:
                ((Ocelot) entity).setCatType(Ocelot.Type.values()[1 + Misc.getRandom().nextInt(3)]);
                break;

            case WOLF:
                entity.setMaxHealth(20.0);
                entity.setHealth(entity.getMaxHealth());
                break;

            case HORSE:
                Horse horse = (Horse) entity;

                entity.setMaxHealth(15.0 + (Misc.getRandom().nextDouble() * 15));
                entity.setHealth(entity.getMaxHealth());
                horse.setColor(Horse.Color.values()[Misc.getRandom().nextInt(Horse.Color.values().length)]);
                horse.setStyle(Horse.Style.values()[Misc.getRandom().nextInt(Horse.Style.values().length)]);
                horse.setJumpStrength(Math.max(AdvancedConfig.getInstance().getMinHorseJumpStrength(), Math.min(Math.min(Misc.getRandom().nextDouble(), Misc.getRandom().nextDouble()) * 2, AdvancedConfig.getInstance().getMaxHorseJumpStrength())));
                //TODO: setSpeed, once available
                break;

            default:
                break;
        }

        if (Permissions.renamePets(player)) {
            entity.setCustomName(LocaleLoader.getString("Taming.Summon.Name.Format", player.getName(), StringUtils.getPrettyEntityTypeString(type)));
            entity.setCustomNameVisible(true);
        }
    }

    player.setItemInHand(heldItemAmount == summonAmount ? null : new ItemStack(heldItem.getType(), heldItemAmount - summonAmount));
    player.sendMessage(LocaleLoader.getString("Taming.Summon.Complete"));
}
项目:McMMOPlus    文件:CombatUtils.java   
/**
 * Check to see if the given LivingEntity should be affected by a combat ability.
 *
 * @param player The attacking Player
 * @param entity The defending Entity
 * @return true if the Entity should be damaged, false otherwise.
 */
private static boolean shouldBeAffected(Player player, Entity entity) {
    if (entity instanceof Player) {
        Player defender = (Player) entity;

        if (!defender.getWorld().getPVP() || defender == player || UserManager.getPlayer(defender).getGodMode()) {
            return false;
        }

        if ((PartyManager.inSameParty(player, defender) || PartyManager.areAllies(player, defender)) && !(Permissions.friendlyFire(player) && Permissions.friendlyFire(defender))) {
            return false;
        }

        // Vanished players should not be able to get hit by AoE effects
        if (!player.canSee(defender)) {
            return false;
        }

        // It may seem a bit redundant but we need a check here to prevent bleed from being applied in applyAbilityAoE()
        if (callFakeDamageEvent(player, entity, 1.0) == 0) {
            return false;
        }
    }
    else if (entity instanceof Tameable) {
        if (isFriendlyPet(player, (Tameable) entity)) {
            // isFriendlyPet ensures that the Tameable is: Tamed, owned by a player, and the owner is in the same party
            // So we can make some assumptions here, about our casting and our check
            Player owner = (Player) ((Tameable) entity).getOwner();
            if (!(Permissions.friendlyFire(player) && Permissions.friendlyFire(owner))) {
                return false;
            }
        }
    }

    return true;
}
项目:McMMOPlus    文件:CombatUtils.java   
/**
 * Checks to see if an entity is currently friendly toward a given player.
 *
 * @param attacker The player to check.
 * @param pet The entity to check.
 * @return true if the entity is friendly, false otherwise
 */
public static boolean isFriendlyPet(Player attacker, Tameable pet) {
    if (pet.isTamed()) {
        AnimalTamer tamer = pet.getOwner();

        if (tamer instanceof Player) {
            Player owner = (Player) tamer;

            return (owner == attacker || PartyManager.inSameParty(attacker, owner) || PartyManager.areAllies(attacker, owner));
        }
    }

    return false;
}
项目:Stoa    文件:BattleUtil.java   
public static boolean canParticipate(Entity entity) {
    if (entity instanceof Player) {
        CharacterModel character = CharacterUtil.currentFromPlayer((Player) entity);
        return character != null && !character.getDeity().getFlags().contains(Deity.Flag.NO_BATTLE);
    }
    return entity instanceof Tameable && TameableUtil.fromEntity((LivingEntity) entity) != null && isInBattle(TameableUtil.fromEntity((LivingEntity) entity).getCharacter());
}
项目:modules-extra    文件:DeathPet.java   
@Override
public void setKilled(Entity entity)
{
    super.setKilled(entity);
    Tamer owner = ((Tameable)entity).getOwner();
    if (owner instanceof Player)
    {
        this.owner = new PlayerSection((Player)owner);
    }
}
项目:AnnounceMobDeaths    文件:AnnounceMobDeaths.java   
@EventHandler
public void onEntityDeath(EntityDeathEvent event) {
    LivingEntity entity = event.getEntity();
    Player killer = entity.getKiller();

    // Capitalize first letter of mob type and replace underscores with spaces.
    String entityType = entity.getType().toString().substring(0, 1).toUpperCase() + entity.getType().toString().substring(1).toLowerCase();
    entityType = entityType.replace('_', ' ');

    if (entity instanceof Player || killer == null) {
        return;
    }

    if (entity instanceof Tameable) {
        Tameable tameable = (Tameable) entity;

        if (tameable.getOwner() != null) {
            String owner = tameable.getOwner().getName();

            if (entity.getCustomName() == null) {
                getServer().broadcastMessage(killer.getDisplayName() + " killed " + owner + "'s " + entityType + ".");
            } else {
                getServer().broadcastMessage(killer.getDisplayName() + " killed " + entity.getCustomName() + ", " + owner + "'s " + entityType + ".");
            }

            return;
        }
    }

    if (entity.getCustomName() != null) {
        String message = killer.getDisplayName() + " killed " + entity.getCustomName() + " the " + entityType + ".";

        getServer().broadcastMessage(message);
    }
}
项目:CraftoPlugin    文件:OwnerTransferComponent.java   
void openOwnerTransferWindow(final Player player, final Tameable entity) {
    try {
        final Menu menu = this.createTransferMenu(player, entity);
        menu.show(player);
    }
    catch (final Exception e) {
        CraftoMessenger.report(this, "Failed to create owner transfer menu for player " + player.getName(), e);
    }
}
项目:CraftoPlugin    文件:OwnerTransferComponent.java   
Menu createTransferMenu(final Player player, final Tameable entity) {
    final Menu menu = new Menu("Besitzrechte �bertragen");

    final Collection<Player> players = Utility.getOnlinePlayers();
    final Iterator<Player> iterator = players.iterator();

    for (int i = 0; i < 36 && iterator.hasNext(); i++) {
        final Player onlinePlayer = iterator.next();
        if (onlinePlayer.getUniqueId().equals(player.getUniqueId())) { continue; }

        final Optional<CraftoPlayer> onlineCraftoPlayer = CraftoPlayer.getPlayer(onlinePlayer.getUniqueId());
        if (!onlineCraftoPlayer.isPresent()) { continue; }

        final Optional<ItemStack> playerItem = Utility.getPlayerHead(onlinePlayer.getName());
        if (!playerItem.isPresent()) { continue; } // Prob warn staff if this happens?

        Utility.setItemName(playerItem.get(), onlinePlayer.getName());
        Utility.setItemLore(playerItem.get(), "Klicke hier um diesem Spieler",
                "die Besitzrechte deines Tieres zu �bertragen.");

        menu.addItem(playerItem.get(), clickEvent -> {
            player.closeInventory();
            player.playSound(player.getLocation(), Sound.UI_BUTTON_CLICK, 1.0f, 1.75f);
            entity.setOwner(onlinePlayer);

            CraftoMessenger.sendSuccess(player, "Du hast " + onlinePlayer.getName() + " die Besitzrechte deines Tieres �bertragen!");
        });
    }

    return menu;
}