Search in sources :

Example 21 with MyPet

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

the class SqLiteRepository method savePets.

private void savePets() {
    for (MyPet myPet : MyPetApi.getMyPetManager().getAllActiveMyPets()) {
        try {
            PreparedStatement statement = connection.prepareStatement("UPDATE pets SET " + "owner_uuid=?, " + "exp=?, " + "health=?, " + "respawn_time=?, " + "name=?, " + "type=?, " + "last_used=?, " + "hunger=?, " + "world_group=?, " + "wants_to_spawn=?, " + "skilltree=?, " + "skills=?, " + "info=? " + "WHERE uuid=?;");
            statement.setString(1, myPet.getOwner().getInternalUUID().toString());
            statement.setDouble(2, myPet.getExp());
            statement.setDouble(3, myPet.getHealth());
            statement.setInt(4, myPet.getRespawnTime());
            statement.setBytes(5, myPet.getPetName().getBytes(StandardCharsets.UTF_8));
            statement.setString(6, myPet.getPetType().name());
            statement.setLong(7, myPet.getLastUsed());
            statement.setDouble(8, myPet.getSaturation());
            statement.setString(9, myPet.getWorldGroup());
            statement.setBoolean(10, myPet.wantsToRespawn());
            statement.setString(11, myPet.getSkilltree() != null ? myPet.getSkilltree().getName() : null);
            statement.setBytes(12, TagStream.writeTag(myPet.getSkillInfo(), true));
            statement.setBytes(13, TagStream.writeTag(myPet.getInfo(), true));
            statement.setString(14, myPet.getUUID().toString());
            int result = statement.executeUpdate();
        // MyPetLogger.write("UPDATE pet: " + result);
        } catch (SQLException | IOException e) {
            e.printStackTrace();
        }
    }
}
Also used : MyPet(de.Keyle.MyPet.api.entity.MyPet) InactiveMyPet(de.Keyle.MyPet.entity.InactiveMyPet) StoredMyPet(de.Keyle.MyPet.api.entity.StoredMyPet) IOException(java.io.IOException)

Example 22 with MyPet

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

the class SkillApiHook method on.

@EventHandler
public void on(PlayerExperienceLostEvent event) {
    if (Configuration.Hooks.SkillAPI.GRANT_EXP) {
        Player player = event.getPlayerData().getPlayer();
        if (MyPetApi.getPlayerManager().isMyPetPlayer(player)) {
            MyPetPlayer petPlayer = MyPetApi.getPlayerManager().getMyPetPlayer(player);
            if (petPlayer.hasMyPet()) {
                MyPet myPet = petPlayer.getMyPet();
                if (Configuration.Skilltree.PREVENT_LEVELLING_WITHOUT_SKILLTREE && myPet.getSkilltree() == null) {
                    if (!myPet.autoAssignSkilltree()) {
                        return;
                    }
                }
                // TODO -> removeExp
                myPet.getExperience().removeCurrentExp(event.getExp() * Configuration.Hooks.SkillAPI.EXP_PERCENT / 100);
            }
        }
    }
}
Also used : MyPetPlayer(de.Keyle.MyPet.api.player.MyPetPlayer) Player(org.bukkit.entity.Player) MyPetPlayer(de.Keyle.MyPet.api.player.MyPetPlayer) MyPet(de.Keyle.MyPet.api.entity.MyPet) EventHandler(org.bukkit.event.EventHandler)

Example 23 with MyPet

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

the class SkillApiHook method on.

@EventHandler
public void on(PlayerExperienceGainEvent event) {
    if (Configuration.Hooks.SkillAPI.GRANT_EXP) {
        Player player = event.getPlayerData().getPlayer();
        if (MyPetApi.getPlayerManager().isMyPetPlayer(player)) {
            MyPetPlayer petPlayer = MyPetApi.getPlayerManager().getMyPetPlayer(player);
            if (petPlayer.hasMyPet()) {
                MyPet myPet = petPlayer.getMyPet();
                if (Configuration.Skilltree.PREVENT_LEVELLING_WITHOUT_SKILLTREE && myPet.getSkilltree() == null) {
                    if (!myPet.autoAssignSkilltree()) {
                        return;
                    }
                }
                myPet.getExperience().addExp(event.getExp() * Configuration.Hooks.SkillAPI.EXP_PERCENT / 100);
            }
        }
    }
}
Also used : MyPetPlayer(de.Keyle.MyPet.api.player.MyPetPlayer) Player(org.bukkit.entity.Player) MyPetPlayer(de.Keyle.MyPet.api.player.MyPetPlayer) MyPet(de.Keyle.MyPet.api.entity.MyPet) EventHandler(org.bukkit.event.EventHandler)

Example 24 with MyPet

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

the class MyPetPlayerImpl method schedule.

public void schedule() {
    if (!isOnline()) {
        return;
    }
    if (hasMyPet()) {
        MyPet myPet = getMyPet();
        Player p = this.getPlayer();
        if (myPet.getStatus() == PetState.Here) {
            if (myPet.getLocation().get().getWorld() != p.getLocation().getWorld() || MyPetApi.getPlatformHelper().distance(myPet.getLocation().get(), p.getLocation()) > 40) {
                myPet.removePet(true);
                myPet.getOwner().sendMessage(Util.formatText(Translation.getString("Message.Spawn.Despawn", myPet.getOwner()), myPet.getPetName()));
            }
            if (!Configuration.Misc.DISABLE_ALL_ACTIONBAR_MESSAGES && showHealthBar) {
                String msg = myPet.getPetName() + ChatColor.RESET + ": ";
                if (myPet.getHealth() > myPet.getMaxHealth() / 3 * 2) {
                    msg += org.bukkit.ChatColor.GREEN;
                } else if (myPet.getHealth() > myPet.getMaxHealth() / 3) {
                    msg += org.bukkit.ChatColor.YELLOW;
                } else {
                    msg += org.bukkit.ChatColor.RED;
                }
                msg += String.format("%1.2f", myPet.getHealth()) + org.bukkit.ChatColor.WHITE + "/" + String.format("%1.2f", myPet.getMaxHealth());
                MyPetApi.getPlatformHelper().sendMessageActionBar(getPlayer(), msg);
            }
        } else if (myPet.getStatus() == PetState.Despawned) {
            if (myPet.wantsToRespawn() && !p.isFlying()) {
                boolean velocity = p.getVelocity().getY() >= 0;
                boolean fall = p.getFallDistance() == 0;
                if (velocity || fall || p.isOnGround()) {
                    boolean spawn = true;
                    if (velocity) {
                        spawn = !p.isInsideVehicle();
                        if (spawn && MyPetApi.getCompatUtil().compareWithMinecraftVersion("1.9") >= 0) {
                            spawn = !p.isGliding();
                        }
                    }
                    if (spawn && fall) {
                        switch(p.getWorld().getBlockAt(p.getLocation().subtract(0, 0.5, 0)).getType()) {
                            case AIR:
                            case WATER:
                            case STATIONARY_WATER:
                            case LAVA:
                            case STATIONARY_LAVA:
                                spawn = false;
                        }
                    }
                    if (spawn && myPet.createEntity() == MyPet.SpawnFlags.Success) {
                        p.sendMessage(Util.formatText(Translation.getString("Message.Command.Call.Success", p), myPet.getPetName()));
                    }
                }
            }
        }
    }
}
Also used : Player(org.bukkit.entity.Player) OfflinePlayer(org.bukkit.OfflinePlayer) MyPet(de.Keyle.MyPet.api.entity.MyPet)

Example 25 with MyPet

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

the class Stomp method stomp.

public void stomp(Location location) {
    location.getWorld().playEffect(location, Effect.STEP_SOUND, Material.BEDROCK);
    if (MyPetApi.getCompatUtil().compareWithMinecraftVersion("1.9") >= 0) {
        location.getWorld().playSound(location, Sound.ENTITY_HOSTILE_BIG_FALL, 0.9F, 0.7F);
    } else {
        location.getWorld().playSound(location, Sound.valueOf("FALL_BIG"), 0.9F, 0.7F);
    }
    double posX = location.getX();
    double posY = location.getY();
    double posZ = location.getZ();
    for (Entity e : myPet.getEntity().get().getNearbyEntities(2.5, 2.5, 2.5)) {
        if (e instanceof LivingEntity) {
            final LivingEntity livingEntity = (LivingEntity) e;
            if (livingEntity instanceof Player) {
                Player targetPlayer = (Player) livingEntity;
                if (myPet.getOwner().equals(targetPlayer)) {
                    continue;
                } else if (!MyPetApi.getHookHelper().canHurt(myPet.getOwner().getPlayer(), targetPlayer, true)) {
                    continue;
                }
            } else if (livingEntity instanceof Tameable) {
                Tameable tameable = (Tameable) livingEntity;
                if (tameable.isTamed() && tameable.getOwner() != null) {
                    AnimalTamer tameableOwner = tameable.getOwner();
                    if (myPet.getOwner().equals(tameableOwner)) {
                        continue;
                    } else {
                        if (!MyPetApi.getHookHelper().canHurt(myPet.getOwner().getPlayer(), livingEntity)) {
                            continue;
                        }
                    }
                }
            } else if (livingEntity instanceof MyPetBukkitEntity) {
                MyPet targetMyPet = ((MyPetBukkitEntity) livingEntity).getMyPet();
                if (!MyPetApi.getHookHelper().canHurt(myPet.getOwner().getPlayer(), targetMyPet.getOwner().getPlayer(), true)) {
                    continue;
                }
            }
            if (!MyPetApi.getHookHelper().canHurt(myPet.getOwner().getPlayer(), livingEntity)) {
                continue;
            }
            ((LivingEntity) e).damage(this.damage, myPet.getEntity().get());
            double distancePercent = MyPetApi.getPlatformHelper().distance(livingEntity.getLocation(), new Location(livingEntity.getWorld(), posX, posY, posZ)) / 2.5;
            if (distancePercent <= 1.0D) {
                double distanceX = livingEntity.getLocation().getX() - posX;
                double distanceY = livingEntity.getLocation().getX() + livingEntity.getEyeHeight() - posY;
                double distanceZ = livingEntity.getLocation().getX() - posZ;
                double distance = Math.sqrt(distanceX * distanceX + distanceY * distanceY + distanceZ * distanceZ);
                if (distance != 0.0D) {
                    double motFactor = (1.0D - distancePercent);
                    final Vector velocity = livingEntity.getVelocity();
                    velocity.multiply(motFactor);
                    new BukkitRunnable() {

                        @Override
                        public void run() {
                            livingEntity.setVelocity(velocity);
                        }
                    }.runTaskLater(MyPetApi.getPlugin(), 0);
                }
            }
        }
    }
}
Also used : MyPetBukkitEntity(de.Keyle.MyPet.api.entity.MyPetBukkitEntity) MyPet(de.Keyle.MyPet.api.entity.MyPet) BukkitRunnable(org.bukkit.scheduler.BukkitRunnable) Vector(org.bukkit.util.Vector) MyPetBukkitEntity(de.Keyle.MyPet.api.entity.MyPetBukkitEntity)

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