Skip to content
47 changes: 25 additions & 22 deletions src/main/java/net/awesomepowered/rotator/RotatoR.java
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}

Expand Down
29 changes: 14 additions & 15 deletions src/main/java/net/awesomepowered/rotator/types/EntitySpinner.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand All @@ -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
Expand Down