To prevent disguises remaining on players after death, and enderdragons from missing out on animations
This commit is contained in:
parent
f3b3c15685
commit
a49cea54e7
@ -19,6 +19,7 @@ import org.bukkit.event.entity.EntityTargetEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||
import org.bukkit.event.vehicle.VehicleEnterEvent;
|
||||
import org.bukkit.event.vehicle.VehicleExitEvent;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
@ -103,6 +104,16 @@ public class DisguiseListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onRespawn(PlayerRespawnEvent event) {
|
||||
Disguise[] disguises = DisguiseAPI.getDisguises(event.getPlayer());
|
||||
for (Disguise disguise : disguises) {
|
||||
if (disguise.isRemoveDisguiseOnDeath()) {
|
||||
disguise.removeDisguise();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onRightClick(PlayerInteractEntityEvent event) {
|
||||
if (disguiseSlap.containsKey(event.getPlayer().getName())) {
|
||||
|
@ -189,16 +189,8 @@ public abstract class Disguise {
|
||||
// This is to ensure that this disguise isn't removed while clients think its the real entity
|
||||
// The delay is because if it sends the destroy entity packets straight away, then it means no death animation
|
||||
// This is probably still a problem for wither and enderdragon deaths.
|
||||
if (deadTicks++ > 30) {
|
||||
|
||||
if (getEntity() instanceof Player ?
|
||||
|
||||
(Bukkit.getPlayerExact(((Player) getEntity()).getName()) == null ? !isKeepDisguiseOnPlayerLogout()
|
||||
: !isKeepDisguiseOnPlayerDeath())
|
||||
|
||||
:
|
||||
|
||||
(!isKeepDisguiseOnEntityDespawn() || getEntity().isDead())) {
|
||||
if (deadTicks++ > (getType() == DisguiseType.ENDER_DRAGON ? 200 : 20)) {
|
||||
if (isRemoveDisguiseOnDeath()) {
|
||||
removeDisguise();
|
||||
} else {
|
||||
entity = null;
|
||||
@ -369,6 +361,20 @@ public abstract class Disguise {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal use
|
||||
*/
|
||||
public boolean isRemoveDisguiseOnDeath() {
|
||||
return getEntity() instanceof Player ?
|
||||
|
||||
(Bukkit.getPlayerExact(((Player) getEntity()).getName()) == null ? !isKeepDisguiseOnPlayerLogout()
|
||||
: !isKeepDisguiseOnPlayerDeath())
|
||||
|
||||
:
|
||||
|
||||
(!isKeepDisguiseOnEntityDespawn() || getEntity().isDead());
|
||||
}
|
||||
|
||||
public boolean isSelfDisguiseSoundsReplaced() {
|
||||
return hearSelfDisguise;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user