Search in sources :

Example 11 with MyPet

use of de.Keyle.MyPet.api.entity.MyPet in project MyPet by xXKeyleXx.

the class LevelUpListener method on.

@EventHandler
public void on(MyPetLevelUpEvent event) {
    MyPet myPet = event.getPet();
    int lvl = event.getLevel();
    int lastLvl = event.getLastLevel();
    if (!event.isQuiet()) {
        int maxlevel = myPet.getSkilltree() != null ? myPet.getSkilltree().getMaxLevel() : 0;
        if (maxlevel != 0 && lvl >= maxlevel) {
            myPet.getOwner().sendMessage(Util.formatText(Translation.getString("Message.LevelSystem.ReachedMaxLevel", event.getOwner().getLanguage()), myPet.getPetName(), maxlevel));
        } else {
            myPet.getOwner().sendMessage(Util.formatText(Translation.getString("Message.LevelSystem.LevelUp", event.getOwner().getLanguage()), myPet.getPetName(), event.getLevel()));
        }
    }
    SkillTree skillTree = myPet.getSkilltree();
    if (skillTree != null) {
        if (skillTree.getLastLevelWithSkills() < lvl) {
            lvl = skillTree.getLastLevelWithSkills();
        }
        for (int i = lastLvl + 1; i <= lvl; i++) {
            if (skillTree.hasLevel(i)) {
                SkillTreeLevel level = skillTree.getLevel(i);
                if (!event.isQuiet()) {
                    if (level.hasLevelupMessage()) {
                        myPet.getOwner().sendMessage(Colorizer.setColors(level.getLevelupMessage()));
                    }
                }
                List<SkillInfo> skillList = level.getSkills();
                for (SkillInfo skill : skillList) {
                    myPet.getSkills().getSkill(skill.getName()).upgrade(skill, event.isQuiet());
                }
            }
        }
    }
    if (myPet.getStatus() == MyPet.PetState.Here) {
        MyPetBukkitEntity entity = myPet.getEntity().get();
        entity.getHandle().updateNameTag();
        if (!event.isQuiet()) {
            myPet.setHealth(myPet.getMaxHealth());
            myPet.setSaturation(100);
            final boolean version17 = MyPetApi.getCompatUtil().compareWithMinecraftVersion("1.8") < 0;
            new SpiralAnimation(1, entity.getEyeHeight() + 0.5, new EntityLocationHolder(entity)) {

                @Override
                protected void playParticleEffect(Location location) {
                    if (version17) {
                        MyPetApi.getPlatformHelper().playParticleEffect(location, "magicCrit", 0, 0, 0, 0, 1, 32);
                    } else {
                        MyPetApi.getPlatformHelper().playParticleEffect(location, "CRIT_MAGIC", 0, 0, 0, 0, 1, 32);
                    }
                // MyPetApi.getPlatformHelper().playParticleEffect(location, "flame", 0, 0, 0, 0, 1, 32);
                }
            }.loop(2);
            if (MyPetApi.getCompatUtil().compareWithMinecraftVersion("1.9") >= 0) {
                entity.getWorld().playSound(entity.getLocation(), "entity.player.levelup", 1F, 0.7F);
            } else {
                entity.getWorld().playSound(entity.getLocation(), Sound.valueOf("LEVEL_UP"), 1F, 0.7F);
            }
        }
    }
}
Also used : SkillTreeLevel(de.Keyle.MyPet.api.skill.skilltree.SkillTreeLevel) SkillInfo(de.Keyle.MyPet.api.skill.SkillInfo) MyPet(de.Keyle.MyPet.api.entity.MyPet) SpiralAnimation(de.Keyle.MyPet.api.util.animation.particle.SpiralAnimation) EntityLocationHolder(de.Keyle.MyPet.api.util.location.EntityLocationHolder) SkillTree(de.Keyle.MyPet.api.skill.skilltree.SkillTree) MyPetBukkitEntity(de.Keyle.MyPet.api.entity.MyPetBukkitEntity) Location(org.bukkit.Location) EventHandler(org.bukkit.event.EventHandler)

Example 12 with MyPet

use of de.Keyle.MyPet.api.entity.MyPet in project MyPet by xXKeyleXx.

the class PlayerListener method on.

@EventHandler(priority = EventPriority.LOWEST)
public void on(PlayerQuitEvent event) {
    if (MyPetApi.getPlayerManager().isMyPetPlayer(event.getPlayer())) {
        MyPetPlayer player = MyPetApi.getPlayerManager().getMyPetPlayer(event.getPlayer());
        if (player.hasMyPet()) {
            MyPet myPet = player.getMyPet();
            if (myPet.getStatus() == MyPet.PetState.Here) {
                myPet.removePet(true);
            }
            MyPetApi.getMyPetManager().deactivateMyPet(player, true);
        }
        MyPetApi.getPlayerManager().setOffline(player);
    }
}
Also used : MyPetPlayer(de.Keyle.MyPet.api.player.MyPetPlayer) MyPet(de.Keyle.MyPet.api.entity.MyPet) StoredMyPet(de.Keyle.MyPet.api.entity.StoredMyPet) EventHandler(org.bukkit.event.EventHandler)

Example 13 with MyPet

use of de.Keyle.MyPet.api.entity.MyPet in project MyPet by xXKeyleXx.

the class PlayerListener method on.

@EventHandler
public void on(final PlayerJoinEvent event) {
    long delay = MyPetApi.getRepository() instanceof SqLiteRepository ? 1L : Configuration.Repository.EXTERNAL_LOAD_DELAY;
    new BukkitRunnable() {

        @Override
        public void run() {
            MyPetApi.getRepository().getMyPetPlayer(event.getPlayer(), new RepositoryCallback<MyPetPlayer>() {

                @Override
                public void callback(final MyPetPlayer p) {
                    final MyPetPlayerImpl joinedPlayer = (MyPetPlayerImpl) p;
                    joinedPlayer.setLastKnownName(event.getPlayer().getName());
                    if (!event.getPlayer().getUniqueId().equals(joinedPlayer.getOfflineUUID())) {
                        if (joinedPlayer.getMojangUUID() == null) {
                            joinedPlayer.setMojangUUID(event.getPlayer().getUniqueId());
                        }
                        joinedPlayer.setOnlineMode(true);
                    }
                    MyPetApi.getPlayerManager().setOnline(joinedPlayer);
                    final WorldGroup joinGroup = WorldGroup.getGroupByWorld(event.getPlayer().getWorld().getName());
                    if (joinedPlayer.hasMyPet()) {
                        MyPet myPet = joinedPlayer.getMyPet();
                        if (!myPet.getWorldGroup().equals(joinGroup.getName())) {
                            MyPetApi.getMyPetManager().deactivateMyPet(joinedPlayer, true);
                        }
                    }
                    if (!joinedPlayer.hasMyPet() && joinedPlayer.hasMyPetInWorldGroup(joinGroup.getName())) {
                        final UUID petUUID = joinedPlayer.getMyPetForWorldGroup(joinGroup.getName());
                        MyPetApi.getRepository().getMyPet(petUUID, new RepositoryCallback<StoredMyPet>() {

                            @Override
                            public void callback(StoredMyPet storedMyPet) {
                                MyPetApi.getMyPetManager().activateMyPet(storedMyPet);
                                if (joinedPlayer.hasMyPet()) {
                                    final MyPet myPet = joinedPlayer.getMyPet();
                                    if (myPet.wantsToRespawn()) {
                                        switch(myPet.createEntity()) {
                                            case Canceled:
                                                joinedPlayer.sendMessage(Util.formatText(Translation.getString("Message.Spawn.Prevent", joinedPlayer), myPet.getPetName()));
                                                break;
                                            case NotAllowed:
                                                joinedPlayer.sendMessage(Util.formatText(Translation.getString("Message.No.AllowedHere", joinedPlayer), myPet.getPetName()));
                                                break;
                                            case Dead:
                                                joinedPlayer.sendMessage(Util.formatText(Translation.getString("Message.Spawn.Respawn.In", joinedPlayer), myPet.getPetName(), myPet.getRespawnTime()));
                                                break;
                                            case Flying:
                                                joinedPlayer.sendMessage(Util.formatText(Translation.getString("Message.Spawn.Flying", joinedPlayer), myPet.getPetName()));
                                                break;
                                            case NoSpace:
                                                joinedPlayer.sendMessage(Util.formatText(Translation.getString("Message.Spawn.NoSpace", joinedPlayer), myPet.getPetName()));
                                                break;
                                        }
                                    }
                                }
                            }
                        });
                    }
                    joinedPlayer.checkForDonation();
                    Bukkit.getServer().getPluginManager().callEvent(new MyPetPlayerJoinEvent(joinedPlayer));
                }
            });
        }
    }.runTaskLater(MyPetApi.getPlugin(), delay);
    if (event.getPlayer().isOp() && Updater.isUpdateAvailable()) {
        event.getPlayer().sendMessage(Util.formatText(Translation.getString("Message.Update.Available", event.getPlayer())) + " " + Updater.getLatest());
        event.getPlayer().sendMessage(ChatColor.DARK_GREEN + "    https://mypet-plugin.de/download");
    }
}
Also used : MyPetPlayerImpl(de.Keyle.MyPet.util.player.MyPetPlayerImpl) MyPetPlayer(de.Keyle.MyPet.api.player.MyPetPlayer) WorldGroup(de.Keyle.MyPet.api.WorldGroup) MyPet(de.Keyle.MyPet.api.entity.MyPet) StoredMyPet(de.Keyle.MyPet.api.entity.StoredMyPet) BukkitRunnable(org.bukkit.scheduler.BukkitRunnable) RepositoryCallback(de.Keyle.MyPet.api.repository.RepositoryCallback) MyPetPlayerJoinEvent(de.Keyle.MyPet.api.event.MyPetPlayerJoinEvent) SqLiteRepository(de.Keyle.MyPet.repository.types.SqLiteRepository) UUID(java.util.UUID) StoredMyPet(de.Keyle.MyPet.api.entity.StoredMyPet) EventHandler(org.bukkit.event.EventHandler)

Example 14 with MyPet

use of de.Keyle.MyPet.api.entity.MyPet in project MyPet by xXKeyleXx.

the class CommandCall method onCommand.

public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (sender instanceof Player) {
        Player petOwner = (Player) sender;
        if (MyPetApi.getMyPetManager().hasActiveMyPet(petOwner)) {
            MyPet myPet = MyPetApi.getMyPetManager().getMyPet(petOwner);
            myPet.removePet(true);
            switch(myPet.createEntity()) {
                case Success:
                    sender.sendMessage(Util.formatText(Translation.getString("Message.Command.Call.Success", petOwner), myPet.getPetName()));
                    break;
                case Canceled:
                    sender.sendMessage(Util.formatText(Translation.getString("Message.Spawn.Prevent", petOwner), myPet.getPetName()));
                    break;
                case NoSpace:
                    sender.sendMessage(Util.formatText(Translation.getString("Message.Spawn.NoSpace", petOwner), myPet.getPetName()));
                    break;
                case NotAllowed:
                    sender.sendMessage(Util.formatText(Translation.getString("Message.No.AllowedHere", petOwner), myPet.getPetName()));
                    break;
                case Dead:
                    sender.sendMessage(Util.formatText(Translation.getString("Message.Call.Dead", petOwner), myPet.getPetName(), myPet.getRespawnTime()));
                    break;
                case Flying:
                    sender.sendMessage(Util.formatText(Translation.getString("Message.Spawn.Flying", petOwner), myPet.getPetName()));
                    break;
                case Spectator:
                    sender.sendMessage(Util.formatText(Translation.getString("Message.Spawn.Spectator", petOwner), myPet.getPetName()));
                    break;
            }
            return true;
        } else {
            sender.sendMessage(Translation.getString("Message.No.HasPet", petOwner));
        }
        return true;
    }
    sender.sendMessage("You can't use this command from server console!");
    return true;
}
Also used : Player(org.bukkit.entity.Player) MyPet(de.Keyle.MyPet.api.entity.MyPet)

Example 15 with MyPet

use of de.Keyle.MyPet.api.entity.MyPet in project MyPet by xXKeyleXx.

the class CommandChooseSkilltree method onTabComplete.

@Override
public List<String> onTabComplete(CommandSender sender, Command command, String s, String[] strings) {
    if (sender instanceof Player) {
        Player player = (Player) sender;
        if (MyPetApi.getMyPetManager().hasActiveMyPet(player)) {
            MyPet myPet = MyPetApi.getMyPetManager().getMyPet(player);
            if (Configuration.Skilltree.AUTOMATIC_SKILLTREE_ASSIGNMENT && !myPet.getOwner().isMyPetAdmin()) {
                return CommandAdmin.EMPTY_LIST;
            } else if (myPet.getSkilltree() != null && Configuration.Skilltree.CHOOSE_SKILLTREE_ONLY_ONCE && !myPet.getOwner().isMyPetAdmin()) {
                return CommandAdmin.EMPTY_LIST;
            } else if (SkillTreeMobType.hasMobType(myPet.getPetType())) {
                SkillTreeMobType skillTreeMobType = SkillTreeMobType.byPetType(myPet.getPetType());
                List<String> skilltreeList = new ArrayList<>();
                for (SkillTree skillTree : skillTreeMobType.getSkillTrees()) {
                    if (Permissions.hasLegacy(player, "MyPet.skilltree.", skillTree.getPermission())) {
                        skilltreeList.add(skillTree.getName());
                    }
                }
                return skilltreeList;
            }
        }
    }
    return CommandAdmin.EMPTY_LIST;
}
Also used : Player(org.bukkit.entity.Player) MyPetPlayer(de.Keyle.MyPet.api.player.MyPetPlayer) MyPet(de.Keyle.MyPet.api.entity.MyPet) SkillTreeMobType(de.Keyle.MyPet.api.skill.skilltree.SkillTreeMobType) ArrayList(java.util.ArrayList) SkillTree(de.Keyle.MyPet.api.skill.skilltree.SkillTree)

Aggregations

MyPet (de.Keyle.MyPet.api.entity.MyPet)55 Player (org.bukkit.entity.Player)32 Behavior (de.Keyle.MyPet.skill.skills.Behavior)19 MyPetPlayer (de.Keyle.MyPet.api.player.MyPetPlayer)18 StoredMyPet (de.Keyle.MyPet.api.entity.StoredMyPet)14 EventHandler (org.bukkit.event.EventHandler)9 SkillTree (de.Keyle.MyPet.api.skill.skilltree.SkillTree)6 WorldGroup (de.Keyle.MyPet.api.WorldGroup)5 SkillTreeMobType (de.Keyle.MyPet.api.skill.skilltree.SkillTreeMobType)5 ArrayList (java.util.ArrayList)5 List (java.util.List)4 BukkitRunnable (org.bukkit.scheduler.BukkitRunnable)4 RepositoryCallback (de.Keyle.MyPet.api.repository.RepositoryCallback)3 SkillInstance (de.Keyle.MyPet.api.skill.SkillInstance)3 InactiveMyPet (de.Keyle.MyPet.entity.InactiveMyPet)3 FancyMessage (de.keyle.fanciful.FancyMessage)3 UUID (java.util.UUID)3 MyPetBukkitEntity (de.Keyle.MyPet.api.entity.MyPetBukkitEntity)2 MyPetRemoveEvent (de.Keyle.MyPet.api.event.MyPetRemoveEvent)2 MyPetSaveEvent (de.Keyle.MyPet.api.event.MyPetSaveEvent)2