diff --git a/src/main/java/net/awesomepowered/rotator/RotatoR.java b/src/main/java/net/awesomepowered/rotator/RotatoR.java index 04a4095..1ef71e5 100644 --- a/src/main/java/net/awesomepowered/rotator/RotatoR.java +++ b/src/main/java/net/awesomepowered/rotator/RotatoR.java @@ -148,30 +148,33 @@ public void spoolSpinners() { } else { for (String s : getConfig().getConfigurationSection("espinner").getKeys(false)) { debug("Loading espinner", s); - String location = getConfig().getString("espinner."+s+".loc"); - if (location != null) { - Location loc = stringToLoc(location); - if (loc != null && loc.getWorld() != null) { - loc.getChunk().load(false); - } + UUID uuid = UUID.fromString(s); + if (entitySpinners.containsKey(uuid)) { + continue; + } + Entity entity = Bukkit.getEntity(uuid); + if (entity == null) { + getLogger().log(Level.WARNING, "[espinner] Entity " + s + " not loaded, skipping spool."); + continue; } - Entity entity = Bukkit.getEntity(UUID.fromString(s)); - if (entity != null && !entitySpinners.containsKey(UUID.fromString(s)) && Spinner.isSpinnable(entity)) { - debug("It's espinnable"); - String sound = getConfig().getString("espinner."+s+".sound"); - String effect = getConfig().getString("espinner."+s+".effect"); - String particle = getConfig().getString("espinner."+s+".particle"); - int rpm = getConfig().getInt("espinner."+s+".rpm", this.rpm); - double yaw = getConfig().getDouble("espinner."+s+".yaw", 12.5); - EntitySpinner entitySpinner = new EntitySpinner(entity, 0, rpm); - entitySpinner.setEffect(effect); - entitySpinner.setSound(sound); - entitySpinner.setParticle(particle); - entitySpinner.setYawChange(yaw); - debug( "Main", "Spooling up espinner id " + s, "RPM: " + rpm, "Sound: " + sound, "Effect: " + effect, "Particle: " + particle, "Yaw: " + yaw); - entitySpinner.spoolUp(); - entitySpinners.put(UUID.fromString(s), entitySpinner); + if (entity.isDead() || !Spinner.isSpinnable(entity)) { + getLogger().log(Level.WARNING, "[espinner] Entity " + s + " is " + + (entity.isDead() ? "dead" : "not spinnable") + ", skipping spool."); + continue; } + String sound = getConfig().getString("espinner." + s + ".sound"); + String effect = getConfig().getString("espinner." + s + ".effect"); + String particle = getConfig().getString("espinner." + s + ".particle"); + int rpm = getConfig().getInt("espinner." + s + ".rpm", this.rpm); + double yaw = getConfig().getDouble("espinner." + s + ".yaw", 12.5); + EntitySpinner entitySpinner = new EntitySpinner(entity, 0, rpm); + entitySpinner.setEffect(effect); + entitySpinner.setSound(sound); + entitySpinner.setParticle(particle); + entitySpinner.setYawChange(yaw); + debug("Main", "Spooling up espinner id " + s, "RPM: " + rpm, "Sound: " + sound, "Effect: " + effect, "Particle: " + particle, "Yaw: " + yaw); + entitySpinner.spoolUp(); + entitySpinners.put(uuid, entitySpinner); } } diff --git a/src/main/java/net/awesomepowered/rotator/types/EntitySpinner.java b/src/main/java/net/awesomepowered/rotator/types/EntitySpinner.java index f0fbaf0..6b005a6 100644 --- a/src/main/java/net/awesomepowered/rotator/types/EntitySpinner.java +++ b/src/main/java/net/awesomepowered/rotator/types/EntitySpinner.java @@ -8,15 +8,12 @@ import org.bukkit.Effect; import org.bukkit.Location; import org.bukkit.Particle; -import org.bukkit.Rotation; import org.bukkit.Sound; import org.bukkit.block.BlockFace; import org.bukkit.entity.Entity; import org.bukkit.entity.ItemFrame; import org.bukkit.entity.LivingEntity; -import java.util.logging.Level; - public class EntitySpinner implements Spinnable { private Entity entity; @@ -133,14 +130,15 @@ public void spoolUp() { if (rotatorSpinEvent.isCancelled()) { return; } - if (entity.isDead()) { - RotatoR.getMain().getLogger().log(Level.WARNING, "Oh noes! An entity is ded!"); - selfDestruct(); - } - if (!entity.isValid()) { + if (!entity.isValid() || entity.isDead()) { Entity newEntity = Bukkit.getEntity(entity.getUniqueId()); - if (newEntity == null) + if (newEntity == null) { + return; + } + if (newEntity.isDead()) { + selfDestruct(); return; + } entity = newEntity; } ItemFrame itemFrame = (ItemFrame) entity; @@ -159,14 +157,15 @@ public void spoolUp() { if (rotatorSpinEvent.isCancelled()) { return; } - if (entity.isDead()) { - RotatoR.getMain().getLogger().log(Level.WARNING, "Oh noes! An entity is ded!"); - selfDestruct(); - } - if (!entity.isValid()) { + if (!entity.isValid() || entity.isDead()) { Entity newEntity = Bukkit.getEntity(entity.getUniqueId()); - if (newEntity == null) + if (newEntity == null) { + return; + } + if (newEntity.isDead()) { + selfDestruct(); return; + } entity = newEntity; } constant.setYaw((float) trouble.getAndAdd(yawChange) % 360); //shhh