Search in sources :

Example 6 with MyPet

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

the class ControlTarget method shouldStart.

@Override
public boolean shouldStart() {
    if (controlPathfinderGoal == null) {
        if (petEntity.getPathfinder().hasGoal("Control")) {
            controlPathfinderGoal = (Control) petEntity.getPathfinder().getGoal("Control");
        }
    }
    if (controlPathfinderGoal == null) {
        return false;
    }
    if (myPet.getDamage() <= 0 && myPet.getRangedDamage() <= 0) {
        return false;
    }
    if (controlPathfinderGoal.moveTo != null && petEntity.canMove()) {
        Behavior behaviorSkill = null;
        if (myPet.getSkills().isSkillActive(Behavior.class)) {
            behaviorSkill = myPet.getSkills().getSkill(Behavior.class).get();
            if (behaviorSkill.getBehavior() == Behavior.BehaviorState.Friendly) {
                return false;
            }
        }
        for (Object entityObj : this.petEntity.world.a(EntityLiving.class, this.petEntity.getBoundingBox().grow((double) this.range, 4.0D, (double) this.range))) {
            EntityLiving entityLiving = (EntityLiving) entityObj;
            if (entityLiving != petEntity && !(entityLiving instanceof EntityArmorStand)) {
                if (entityLiving instanceof EntityPlayer) {
                    Player targetPlayer = (Player) entityLiving.getBukkitEntity();
                    if (myPet.getOwner().equals(targetPlayer)) {
                        continue;
                    } else if (!MyPetApi.getHookHelper().canHurt(myPet.getOwner().getPlayer(), targetPlayer, true)) {
                        continue;
                    }
                } else if (entityLiving instanceof EntityTameableAnimal) {
                    EntityTameableAnimal tameable = (EntityTameableAnimal) entityLiving;
                    if (tameable.isTamed() && tameable.getOwner() != null) {
                        Player tameableOwner = (Player) tameable.getOwner().getBukkitEntity();
                        if (myPet.getOwner().equals(tameableOwner)) {
                            continue;
                        } else if (!MyPetApi.getHookHelper().canHurt(myPet.getOwner().getPlayer(), tameableOwner, true)) {
                            continue;
                        }
                    }
                } else if (entityLiving instanceof EntityMyPet) {
                    MyPet targetMyPet = ((EntityMyPet) entityLiving).getMyPet();
                    if (!MyPetApi.getHookHelper().canHurt(myPet.getOwner().getPlayer(), targetMyPet.getOwner().getPlayer(), true)) {
                        continue;
                    }
                }
                if (!MyPetApi.getHookHelper().canHurt(myPet.getOwner().getPlayer(), entityLiving.getBukkitEntity())) {
                    continue;
                }
                if (behaviorSkill != null) {
                    if (behaviorSkill.getBehavior() == BehaviorState.Raid) {
                        if (entityLiving instanceof EntityTameableAnimal) {
                            continue;
                        } else if (entityLiving instanceof EntityMyPet) {
                            continue;
                        } else if (entityLiving instanceof EntityPlayer) {
                            continue;
                        }
                    }
                }
                controlPathfinderGoal.stopControl();
                this.target = entityLiving;
                return true;
            }
        }
    }
    return false;
}
Also used : Player(org.bukkit.entity.Player) EntityPlayer(net.minecraft.server.v1_9_R2.EntityPlayer) CraftPlayer(org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer) EntityMyPet(de.Keyle.MyPet.compat.v1_9_R2.entity.EntityMyPet) EntityLiving(net.minecraft.server.v1_9_R2.EntityLiving) MyPet(de.Keyle.MyPet.api.entity.MyPet) EntityMyPet(de.Keyle.MyPet.compat.v1_9_R2.entity.EntityMyPet) EntityPlayer(net.minecraft.server.v1_9_R2.EntityPlayer) EntityTameableAnimal(net.minecraft.server.v1_9_R2.EntityTameableAnimal) EntityArmorStand(net.minecraft.server.v1_9_R2.EntityArmorStand) Behavior(de.Keyle.MyPet.skill.skills.Behavior)

Example 7 with MyPet

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

the class BehaviorDuelTarget method shouldStart.

@Override
public boolean shouldStart() {
    if (behaviorSkill == null || !behaviorSkill.isActive() || behaviorSkill.getBehavior() != BehaviorState.Duel) {
        return false;
    }
    if (myPet.getDamage() <= 0 && myPet.getRangedDamage() <= 0) {
        return false;
    }
    if (!petEntity.canMove()) {
        return false;
    }
    if (petEntity.hasTarget()) {
        return false;
    }
    if (duelOpponent != null) {
        this.target = duelOpponent;
        return true;
    }
    for (Object entityObj : this.petEntity.world.a(EntityMyPet.class, this.petOwnerEntity.getBoundingBox().grow((double) range, (double) range, (double) range))) {
        EntityMyPet entityMyPet = (EntityMyPet) entityObj;
        MyPet targetMyPet = entityMyPet.getMyPet();
        if (entityMyPet != petEntity && entityMyPet.isAlive()) {
            if (!targetMyPet.getSkills().isSkillActive(Behavior.class) || !targetMyPet.getEntity().get().canMove()) {
                continue;
            }
            Behavior targetbehavior = targetMyPet.getSkills().getSkill(Behavior.class).get();
            if (targetbehavior.getBehavior() != BehaviorState.Duel) {
                continue;
            }
            if (targetMyPet.getDamage() == 0) {
                continue;
            }
            this.target = entityMyPet;
            return true;
        }
    }
    return false;
}
Also used : EntityMyPet(de.Keyle.MyPet.compat.v1_10_R1.entity.EntityMyPet) MyPet(de.Keyle.MyPet.api.entity.MyPet) EntityMyPet(de.Keyle.MyPet.compat.v1_10_R1.entity.EntityMyPet) Behavior(de.Keyle.MyPet.skill.skills.Behavior)

Example 8 with MyPet

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

the class ControlTarget method shouldStart.

@Override
public boolean shouldStart() {
    if (controlPathfinderGoal == null) {
        if (petEntity.getPathfinder().hasGoal("Control")) {
            controlPathfinderGoal = (Control) petEntity.getPathfinder().getGoal("Control");
        }
    }
    if (controlPathfinderGoal == null) {
        return false;
    }
    if (myPet.getDamage() <= 0 && myPet.getRangedDamage() <= 0) {
        return false;
    }
    if (controlPathfinderGoal.moveTo != null && petEntity.canMove()) {
        Behavior behaviorSkill = null;
        if (myPet.getSkills().isSkillActive(Behavior.class)) {
            behaviorSkill = myPet.getSkills().getSkill(Behavior.class).get();
            if (behaviorSkill.getBehavior() == Behavior.BehaviorState.Friendly) {
                return false;
            }
        }
        for (Object entityObj : this.petEntity.world.a(EntityLiving.class, this.petEntity.getBoundingBox().grow((double) this.range, 4.0D, (double) this.range))) {
            EntityLiving entityLiving = (EntityLiving) entityObj;
            if (entityLiving != petEntity && !(entityLiving instanceof EntityArmorStand)) {
                if (entityLiving instanceof EntityPlayer) {
                    Player targetPlayer = (Player) entityLiving.getBukkitEntity();
                    if (myPet.getOwner().equals(targetPlayer)) {
                        continue;
                    } else if (!MyPetApi.getHookHelper().canHurt(myPet.getOwner().getPlayer(), targetPlayer, true)) {
                        continue;
                    }
                } else if (entityLiving instanceof EntityTameableAnimal) {
                    EntityTameableAnimal tameable = (EntityTameableAnimal) entityLiving;
                    if (tameable.isTamed() && tameable.getOwner() != null) {
                        Player tameableOwner = (Player) tameable.getOwner().getBukkitEntity();
                        if (myPet.getOwner().equals(tameableOwner)) {
                            continue;
                        } else if (!MyPetApi.getHookHelper().canHurt(myPet.getOwner().getPlayer(), tameableOwner, true)) {
                            continue;
                        }
                    }
                } else if (entityLiving instanceof EntityMyPet) {
                    MyPet targetMyPet = ((EntityMyPet) entityLiving).getMyPet();
                    if (!MyPetApi.getHookHelper().canHurt(myPet.getOwner().getPlayer(), targetMyPet.getOwner().getPlayer(), true)) {
                        continue;
                    }
                }
                if (!MyPetApi.getHookHelper().canHurt(myPet.getOwner().getPlayer(), entityLiving.getBukkitEntity())) {
                    continue;
                }
                if (behaviorSkill != null) {
                    if (behaviorSkill.getBehavior() == BehaviorState.Raid) {
                        if (entityLiving instanceof EntityTameableAnimal) {
                            continue;
                        } else if (entityLiving instanceof EntityMyPet) {
                            continue;
                        } else if (entityLiving instanceof EntityPlayer) {
                            continue;
                        }
                    }
                }
                controlPathfinderGoal.stopControl();
                this.target = entityLiving;
                return true;
            }
        }
    }
    return false;
}
Also used : EntityPlayer(net.minecraft.server.v1_10_R1.EntityPlayer) Player(org.bukkit.entity.Player) CraftPlayer(org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer) EntityMyPet(de.Keyle.MyPet.compat.v1_10_R1.entity.EntityMyPet) EntityLiving(net.minecraft.server.v1_10_R1.EntityLiving) MyPet(de.Keyle.MyPet.api.entity.MyPet) EntityMyPet(de.Keyle.MyPet.compat.v1_10_R1.entity.EntityMyPet) EntityPlayer(net.minecraft.server.v1_10_R1.EntityPlayer) EntityTameableAnimal(net.minecraft.server.v1_10_R1.EntityTameableAnimal) EntityArmorStand(net.minecraft.server.v1_10_R1.EntityArmorStand) Behavior(de.Keyle.MyPet.skill.skills.Behavior)

Example 9 with MyPet

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

the class CommandOptionSkilltree method onTabComplete.

@Override
public List<String> onTabComplete(CommandSender commandSender, String[] strings) {
    if (strings.length == 2) {
        return null;
    }
    if (strings.length == 3) {
        Player player = Bukkit.getServer().getPlayer(strings[1]);
        if (player == null || !player.isOnline()) {
            return CommandAdmin.EMPTY_LIST;
        }
        if (MyPetApi.getMyPetManager().hasActiveMyPet(player)) {
            MyPet myPet = MyPetApi.getMyPetManager().getMyPet(player);
            SkillTreeMobType skillTreeMobType = SkillTreeMobType.byPetType(myPet.getPetType());
            List<String> skilltreeList = new ArrayList<>();
            for (SkillTree skillTree : skillTreeMobType.getSkillTrees()) {
                skilltreeList.add(skillTree.getName());
            }
            return skilltreeList;
        }
    }
    return CommandAdmin.EMPTY_LIST;
}
Also used : Player(org.bukkit.entity.Player) 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)

Example 10 with MyPet

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

the class CommandOptionSwitch method onCommandOption.

@Override
public boolean onCommandOption(final CommandSender sender, String[] parameter) {
    boolean show = true;
    MyPetPlayer o = null;
    UUID petUUID = null;
    final String lang = MyPetApi.getPlatformHelper().getCommandSenderLanguage(sender);
    if (parameter.length == 0) {
        if (sender instanceof Player) {
            Player petOwner = (Player) sender;
            if (MyPetApi.getPlayerManager().isMyPetPlayer(petOwner)) {
                o = MyPetApi.getPlayerManager().getMyPetPlayer(petOwner);
            }
        } else {
            sender.sendMessage("You can't use this command from server console!");
            return true;
        }
    } else if (parameter.length == 1) {
        Player player = Bukkit.getPlayer(parameter[0]);
        if (player == null || !player.isOnline()) {
            sender.sendMessage("[" + ChatColor.AQUA + "MyPet" + ChatColor.RESET + "] " + Translation.getString("Message.No.PlayerOnline", lang));
            return true;
        }
        if (MyPetApi.getPlayerManager().isMyPetPlayer(player)) {
            o = MyPetApi.getPlayerManager().getMyPetPlayer(player);
        }
        if (o == null) {
            sender.sendMessage("[" + ChatColor.AQUA + "MyPet" + ChatColor.RESET + "] " + Util.formatText(Translation.getString("Message.No.UserHavePet", lang), o.getName()));
        }
    } else if (parameter.length == 2) {
        show = false;
        try {
            o = MyPetApi.getPlayerManager().getMyPetPlayer(UUID.fromString(parameter[0]));
            petUUID = UUID.fromString(parameter[1]);
        } catch (IllegalArgumentException ignored) {
        }
    }
    final MyPetPlayer owner = o;
    if (show && owner != null) {
        MyPetApi.getRepository().getMyPets(owner, new RepositoryCallback<List<StoredMyPet>>() {

            @Override
            public void callback(List<StoredMyPet> value) {
                sender.sendMessage("Select the MyPet you want the player to switch to:");
                boolean doComma = false;
                FancyMessage message = new FancyMessage("");
                for (StoredMyPet mypet : value) {
                    if (doComma) {
                        message.then(", ");
                    }
                    message.then(mypet.getPetName()).color(ChatColor.AQUA).command("/petadmin switch " + owner.getInternalUUID() + " " + mypet.getUUID()).itemTooltip(Util.myPetToItemTooltip(mypet, lang));
                    if (!doComma) {
                        doComma = true;
                    }
                }
                MyPetApi.getPlatformHelper().sendMessageRaw((Player) sender, message.toJSONString());
            }
        });
    } else if (!show && owner != null && petUUID != null) {
        MyPetApi.getRepository().getMyPet(petUUID, new RepositoryCallback<StoredMyPet>() {

            @Override
            public void callback(StoredMyPet newPet) {
                if (newPet != null) {
                    if (owner.hasMyPet()) {
                        MyPetApi.getMyPetManager().deactivateMyPet(owner, true);
                    }
                    Optional<MyPet> myPet = MyPetApi.getMyPetManager().activateMyPet(newPet);
                    sender.sendMessage(Translation.getString("Message.Command.Success", sender));
                    if (myPet.isPresent()) {
                        WorldGroup worldGroup = WorldGroup.getGroupByWorld(owner.getPlayer().getWorld().getName());
                        newPet.setWorldGroup(worldGroup.getName());
                        newPet.getOwner().setMyPetForWorldGroup(worldGroup, newPet.getUUID());
                        owner.sendMessage(Util.formatText(Translation.getString("Message.MultiWorld.NowActivePet", owner), myPet.get().getPetName()));
                        switch(myPet.get().createEntity()) {
                            case Success:
                                sender.sendMessage(Util.formatText(Translation.getString("Message.Command.Call.Success", owner), myPet.get().getPetName()));
                                break;
                            case Canceled:
                                sender.sendMessage(Util.formatText(Translation.getString("Message.Spawn.Prevent", owner), myPet.get().getPetName()));
                                break;
                            case NoSpace:
                                sender.sendMessage(Util.formatText(Translation.getString("Message.Spawn.NoSpace", owner), myPet.get().getPetName()));
                                break;
                            case NotAllowed:
                                sender.sendMessage(Util.formatText(Translation.getString("Message.No.AllowedHere", owner), myPet.get().getPetName()));
                                break;
                            case Dead:
                                sender.sendMessage(Util.formatText(Translation.getString("Message.Call.Dead", owner), myPet.get().getPetName(), myPet.get().getRespawnTime()));
                                break;
                            case Flying:
                                sender.sendMessage(Util.formatText(Translation.getString("Message.Spawn.Flying", owner), myPet.get().getPetName()));
                                break;
                        }
                    }
                }
            }
        });
    }
    return true;
}
Also used : Player(org.bukkit.entity.Player) MyPetPlayer(de.Keyle.MyPet.api.player.MyPetPlayer) MyPetPlayer(de.Keyle.MyPet.api.player.MyPetPlayer) MyPet(de.Keyle.MyPet.api.entity.MyPet) StoredMyPet(de.Keyle.MyPet.api.entity.StoredMyPet) WorldGroup(de.Keyle.MyPet.api.WorldGroup) FancyMessage(de.keyle.fanciful.FancyMessage) RepositoryCallback(de.Keyle.MyPet.api.repository.RepositoryCallback) List(java.util.List) UUID(java.util.UUID) StoredMyPet(de.Keyle.MyPet.api.entity.StoredMyPet)

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