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();
}
}
}
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);
}
}
}
}
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);
}
}
}
}
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()));
}
}
}
}
}
}
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);
}
}
}
}
}
Aggregations