mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-04-01 01:06:24 +02:00
70 lines
2.2 KiB
Java
70 lines
2.2 KiB
Java
package com.gmail.nossr50.skills.taming;
|
|
|
|
import java.util.UUID;
|
|
|
|
import org.bukkit.Location;
|
|
import org.bukkit.Sound;
|
|
import org.bukkit.entity.AnimalTamer;
|
|
import org.bukkit.entity.LivingEntity;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.entity.Tameable;
|
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
|
import org.bukkit.scheduler.BukkitRunnable;
|
|
|
|
import com.gmail.nossr50.mcMMO;
|
|
import com.gmail.nossr50.config.Config;
|
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
|
import com.gmail.nossr50.util.Misc;
|
|
import com.gmail.nossr50.util.player.UserManager;
|
|
import com.gmail.nossr50.util.skills.CombatUtils;
|
|
import com.gmail.nossr50.util.skills.ParticleEffectUtils;
|
|
|
|
public class TrackedTamingEntity extends BukkitRunnable {
|
|
private LivingEntity livingEntity;
|
|
private UUID id;
|
|
private int length;
|
|
private Player owner;
|
|
|
|
protected TrackedTamingEntity(LivingEntity livingEntity) {
|
|
this.livingEntity = livingEntity;
|
|
this.id = livingEntity.getUniqueId();
|
|
|
|
AnimalTamer tamer = ((Tameable)livingEntity).getOwner();
|
|
|
|
if (tamer != null && tamer instanceof Player) {
|
|
this.owner = (Player) tamer;
|
|
}
|
|
|
|
int tamingCOTWLength = Config.getInstance().getTamingCOTWLength(livingEntity.getType());
|
|
|
|
if (tamingCOTWLength > 0) {
|
|
this.length = tamingCOTWLength * Misc.TICK_CONVERSION_FACTOR;
|
|
this.runTaskLater(mcMMO.p, length);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void run() {
|
|
if (livingEntity.isValid()) {
|
|
Location location = livingEntity.getLocation();
|
|
location.getWorld().playSound(location, Sound.FIZZ, 0.8F, 0.8F);
|
|
ParticleEffectUtils.playCallOfTheWildEffect(livingEntity);
|
|
CombatUtils.dealDamage(livingEntity, livingEntity.getMaxHealth(), DamageCause.SUICIDE, livingEntity);
|
|
}
|
|
|
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(owner);
|
|
TamingManager tamingManager = mcMMOPlayer.getTamingManager();
|
|
|
|
tamingManager.removeFromTracker(this);
|
|
this.cancel();
|
|
}
|
|
|
|
protected LivingEntity getLivingEntity() {
|
|
return livingEntity;
|
|
}
|
|
|
|
protected UUID getID() {
|
|
return id;
|
|
}
|
|
}
|