diff --git a/pom.xml b/pom.xml
index 5d1c60d..13a3563 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
com.songoda
UltimateStacker
4.0.0
- 2.0.2
+ 2.0.3
clean install
UltimateStacker-${project.version}
diff --git a/src/main/java/com/songoda/ultimatestacker/database/DataManager.java b/src/main/java/com/songoda/ultimatestacker/database/DataManager.java
index c243c64..ce6d292 100644
--- a/src/main/java/com/songoda/ultimatestacker/database/DataManager.java
+++ b/src/main/java/com/songoda/ultimatestacker/database/DataManager.java
@@ -119,9 +119,9 @@ public class DataManager extends DataManagerAbstract {
public void createStackedEntity(EntityStack hostStack, StackedEntity stackedEntity) {
this.queueAsync(() -> this.databaseConnector.connect(connection -> {
- if (hostStack.getHostUniqueId() == null) return;
String createSerializedEntity = "INSERT INTO " + this.getTablePrefix() + "stacked_entities (uuid, host, serialized_entity) VALUES (?, ?, ?)";
try (PreparedStatement statement = connection.prepareStatement(createSerializedEntity)) {
+ if (hostStack.getHostUniqueId() == null) return;
statement.setString(1, stackedEntity.getUniqueId().toString());
statement.setInt(2, hostStack.getId());
statement.setBytes(3, stackedEntity.getSerializedEntity());
@@ -132,10 +132,10 @@ public class DataManager extends DataManagerAbstract {
public void createStackedEntities(ColdEntityStack hostStack, List stackedEntities) {
this.queueAsync(() -> this.databaseConnector.connect(connection -> {
- if (hostStack.getHostUniqueId() == null) return;
String createSerializedEntity = "INSERT INTO " + this.getTablePrefix() + "stacked_entities (uuid, host, serialized_entity) VALUES (?, ?, ?)" +
"ON CONFLICT(uuid) DO UPDATE SET host = ?, serialized_entity = ?";
try (PreparedStatement statement = connection.prepareStatement(createSerializedEntity)) {
+ if (hostStack.getHostUniqueId() == null) return;
for (StackedEntity entity : stackedEntities) {
statement.setString(1, entity.getUniqueId().toString());
statement.setInt(2, hostStack.getId());
@@ -151,9 +151,9 @@ public class DataManager extends DataManagerAbstract {
public void updateHost(ColdEntityStack hostStack) {
this.async(() -> this.databaseConnector.connect(connection -> {
- if (hostStack.getHostUniqueId() == null) return;
String updateHost = "UPDATE " + this.getTablePrefix() + "host_entities SET uuid = ?, create_duplicates = ? WHERE id = ?";
try (PreparedStatement statement = connection.prepareStatement(updateHost)) {
+ if (hostStack.getHostUniqueId() == null) return;
statement.setString(1, hostStack.getHostUniqueId().toString());
statement.setInt(2, hostStack.getCreateDuplicates());
statement.setInt(3, hostStack.getId());
diff --git a/src/main/java/com/songoda/ultimatestacker/lootables/LootablesManager.java b/src/main/java/com/songoda/ultimatestacker/lootables/LootablesManager.java
index e5aeac7..0973821 100644
--- a/src/main/java/com/songoda/ultimatestacker/lootables/LootablesManager.java
+++ b/src/main/java/com/songoda/ultimatestacker/lootables/LootablesManager.java
@@ -66,10 +66,12 @@ public class LootablesManager {
Entity killerEntity = null;
if (entity.getLastDamageCause() instanceof EntityDamageByEntityEvent) {
killerEntity = ((EntityDamageByEntityEvent) entity.getLastDamageCause()).getDamager();
+ killer = killerEntity.getType();
if (killerEntity instanceof Projectile) {
Projectile projectile = (Projectile) killerEntity;
if (projectile.getShooter() instanceof Entity) {
- killer = ((Entity) projectile.getShooter()).getType();
+ killerEntity = ((Entity) projectile.getShooter());
+ killer = killerEntity.getType();
}
}
}
diff --git a/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStack.java b/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStack.java
index 09ef640..f333ebf 100644
--- a/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStack.java
+++ b/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStack.java
@@ -17,7 +17,6 @@ import org.bukkit.util.Vector;
import java.util.ArrayList;
import java.util.List;
-import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;
public class EntityStack extends ColdEntityStack {
@@ -83,7 +82,6 @@ public class EntityStack extends ColdEntityStack {
plugin.getEntityStackManager().removeStack(event.getEntity());
plugin.getDataManager().deleteHost(this);
-
Location killedLocation = killed.getLocation();
List preStackedDrops = new ArrayList<>();
for (int i = 1; i < getAmount(); i++) {
@@ -98,14 +96,14 @@ public class EntityStack extends ColdEntityStack {
drops = plugin.getLootablesManager().getDrops(killed);
preStackedDrops.addAll(drops);
}
- if (!preStackedDrops.isEmpty())
- DropUtils.processStackedDrop(killed, preStackedDrops, event);
+
+ DropUtils.processStackedDrop(killed, preStackedDrops, event);
if (droppedExp > 0)
killedLocation.getWorld().spawn(killedLocation, ExperienceOrb.class).setExperience(droppedExp * getAmount());
if (killed.getKiller() == null) return;
- UltimateStacker.getInstance().addExp(killed.getKiller(), this);
+ plugin.addExp(killed.getKiller(), this);
}
private void handleSingleStackDeath(LivingEntity killed, List drops, EntityDeathEvent event) {
diff --git a/src/main/java/com/songoda/ultimatestacker/stackable/spawner/SpawnerStack.java b/src/main/java/com/songoda/ultimatestacker/stackable/spawner/SpawnerStack.java
index 91477c6..da6c461 100644
--- a/src/main/java/com/songoda/ultimatestacker/stackable/spawner/SpawnerStack.java
+++ b/src/main/java/com/songoda/ultimatestacker/stackable/spawner/SpawnerStack.java
@@ -5,9 +5,9 @@ import com.songoda.core.compatibility.ServerVersion;
import com.songoda.ultimatestacker.UltimateStacker;
import com.songoda.ultimatestacker.settings.Settings;
import com.songoda.ultimatestacker.stackable.Hologramable;
-import com.songoda.ultimatestacker.utils.Stackable;
import com.songoda.ultimatestacker.utils.Methods;
import com.songoda.ultimatestacker.utils.Reflection;
+import com.songoda.ultimatestacker.utils.Stackable;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
@@ -85,6 +85,10 @@ public class SpawnerStack implements Stackable, Hologramable {
@Override
public String getHologramName() {
+ if (!(location.getBlock().getState() instanceof CreatureSpawner)) {
+ plugin.getSpawnerStackManager().removeSpawner(location);
+ return null;
+ }
CreatureSpawner creatureSpawner = (CreatureSpawner) location.getBlock().getState();
return Methods.compileSpawnerName(creatureSpawner.getSpawnedType(), amount);
}