diff --git a/pom.xml b/pom.xml
index 60ccb7b..8cdf11a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
com.songoda
UltimateStacker
4.0.0
- 2.0.4
+ 2.0.5
clean install
UltimateStacker-${project.version}
diff --git a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java
index 0b3062c..11f7bfb 100644
--- a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java
+++ b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java
@@ -14,7 +14,13 @@ import com.songoda.core.gui.GuiManager;
import com.songoda.core.hooks.HologramManager;
import com.songoda.core.hooks.WorldGuardHook;
import com.songoda.core.utils.TextUtils;
-import com.songoda.ultimatestacker.commands.*;
+import com.songoda.ultimatestacker.commands.CommandConvert;
+import com.songoda.ultimatestacker.commands.CommandGiveSpawner;
+import com.songoda.ultimatestacker.commands.CommandLootables;
+import com.songoda.ultimatestacker.commands.CommandReload;
+import com.songoda.ultimatestacker.commands.CommandRemoveAll;
+import com.songoda.ultimatestacker.commands.CommandSettings;
+import com.songoda.ultimatestacker.commands.CommandSpawn;
import com.songoda.ultimatestacker.database.DataManager;
import com.songoda.ultimatestacker.database.migrations._1_InitialMigration;
import com.songoda.ultimatestacker.database.migrations._2_EntityStacks;
@@ -34,14 +40,10 @@ import com.songoda.ultimatestacker.stackable.entity.EntityStack;
import com.songoda.ultimatestacker.stackable.entity.EntityStackManager;
import com.songoda.ultimatestacker.stackable.spawner.SpawnerStack;
import com.songoda.ultimatestacker.stackable.spawner.SpawnerStackManager;
-import com.songoda.ultimatestacker.storage.Storage;
-import com.songoda.ultimatestacker.storage.StorageRow;
-import com.songoda.ultimatestacker.storage.types.StorageYaml;
import com.songoda.ultimatestacker.tasks.StackingTask;
import com.songoda.ultimatestacker.utils.Methods;
import org.apache.commons.lang.WordUtils;
import org.bukkit.Bukkit;
-import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Item;
@@ -50,8 +52,11 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.PluginManager;
-import java.io.File;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
public class UltimateStacker extends SongodaPlugin {
@@ -110,13 +115,13 @@ public class UltimateStacker extends SongodaPlugin {
// Setup plugin commands
this.commandManager = new CommandManager(this);
this.commandManager.addMainCommand("us")
- .addSubCommands(new CommandSettings(guiManager),
- new CommandRemoveAll(),
- new CommandReload(),
- new CommandGiveSpawner(),
- new CommandSpawn(),
- new CommandLootables(),
- new CommandConvert(guiManager)
+ .addSubCommands(new CommandSettings(this, guiManager),
+ new CommandRemoveAll(this),
+ new CommandReload(this),
+ new CommandGiveSpawner(this),
+ new CommandSpawn(this),
+ new CommandLootables(this),
+ new CommandConvert( guiManager)
);
this.lootablesManager = new LootablesManager();
@@ -215,31 +220,6 @@ public class UltimateStacker extends SongodaPlugin {
@Override
public void onDataLoad() {
- // Legacy Data
- File folder = getDataFolder();
- File dataFile = new File(folder, "data.yml");
-
- if (dataFile.exists()) {
- Storage storage = new StorageYaml(this);
- if (storage.containsGroup("spawners")) {
- for (StorageRow row : storage.getRowsByGroup("spawners")) {
- try {
- Location location = Methods.unserializeLocation(row.getKey());
-
- SpawnerStack stack = new SpawnerStack(
- location,
- row.get("amount").asInt());
-
- getDataManager().createSpawner(stack);
- } catch (Exception e) {
- console.sendMessage("Failed to load spawner.");
- e.printStackTrace();
- }
- }
- }
- dataFile.delete();
- }
-
// Load current data.
final boolean useSpawnerHolo = Settings.SPAWNER_HOLOGRAMS.getBoolean();
this.dataManager.getSpawners((spawners) -> {
@@ -258,7 +238,7 @@ public class UltimateStacker extends SongodaPlugin {
entityStackManager.addStacks(entities.values());
entityStackManager.tryAndLoadColdEntities();
this.stackingTask = new StackingTask(this);
- getServer().getPluginManager().registerEvents(new ChunkListeners(this), this);
+ getServer().getPluginManager().registerEvents(new ChunkListeners(entityStackManager), this);
});
final boolean useBlockHolo = Settings.SPAWNER_HOLOGRAMS.getBoolean();
this.dataManager.getBlocks((blocks) -> {
diff --git a/src/main/java/com/songoda/ultimatestacker/commands/CommandConvert.java b/src/main/java/com/songoda/ultimatestacker/commands/CommandConvert.java
index 9e7b13f..8ed02a2 100644
--- a/src/main/java/com/songoda/ultimatestacker/commands/CommandConvert.java
+++ b/src/main/java/com/songoda/ultimatestacker/commands/CommandConvert.java
@@ -2,7 +2,6 @@ package com.songoda.ultimatestacker.commands;
import com.songoda.core.commands.AbstractCommand;
import com.songoda.core.gui.GuiManager;
-import com.songoda.ultimatestacker.UltimateStacker;
import com.songoda.ultimatestacker.gui.GUIConvert;
import com.songoda.ultimatestacker.utils.Methods;
import org.bukkit.Bukkit;
@@ -13,13 +12,11 @@ import java.util.List;
public class CommandConvert extends AbstractCommand {
- UltimateStacker instance;
- GuiManager guiManager;
+ private final GuiManager guiManager;
public CommandConvert(GuiManager guiManager) {
- super(true, "convert");
+ super(CommandType.PLAYER_ONLY, "convert");
this.guiManager = guiManager;
- instance = UltimateStacker.getInstance();
}
@Override
diff --git a/src/main/java/com/songoda/ultimatestacker/commands/CommandGiveSpawner.java b/src/main/java/com/songoda/ultimatestacker/commands/CommandGiveSpawner.java
index 665a31d..a0804d7 100644
--- a/src/main/java/com/songoda/ultimatestacker/commands/CommandGiveSpawner.java
+++ b/src/main/java/com/songoda/ultimatestacker/commands/CommandGiveSpawner.java
@@ -16,18 +16,18 @@ import java.util.stream.Collectors;
public class CommandGiveSpawner extends AbstractCommand {
- UltimateStacker instance;
+ private final UltimateStacker plugin;
- public CommandGiveSpawner() {
- super(false, "givespawner");
- instance = UltimateStacker.getInstance();
+ public CommandGiveSpawner(UltimateStacker plugin) {
+ super(CommandType.CONSOLE_OK, "givespawner");
+ this.plugin = plugin;
}
@Override
protected ReturnType runCommand(CommandSender sender, String... args) {
if (args.length < 2) return ReturnType.SYNTAX_ERROR;
- if (Bukkit.getPlayer(args[0]) == null && !args[0].trim().toLowerCase().equals("all")) {
+ if (Bukkit.getPlayer(args[0]) == null && !args[0].trim().equalsIgnoreCase("all")) {
sender.sendMessage(args[0] + " is not a player...");
return ReturnType.SYNTAX_ERROR;
}
@@ -41,7 +41,7 @@ public class CommandGiveSpawner extends AbstractCommand {
}
if (type == null) {
- instance.getLocale().newMessage("&7The entity StackType &6" + args[1] + " &7does not exist. Try one of these:").sendPrefixedMessage(sender);
+ plugin.getLocale().newMessage("&7The entity StackType &6" + args[1] + " &7does not exist. Try one of these:").sendPrefixedMessage(sender);
StringBuilder list = new StringBuilder();
for (EntityType types : EntityType.values()) {
@@ -53,16 +53,16 @@ public class CommandGiveSpawner extends AbstractCommand {
int amt = args.length == 3 ? Integer.parseInt(args[2]) : 1;
ItemStack itemStack = Methods.getSpawnerItem(type, amt);
- if (!args[0].trim().toLowerCase().equals("all")) {
+ if (!args[0].trim().equalsIgnoreCase("all")) {
Player player = Bukkit.getOfflinePlayer(args[0]).getPlayer();
player.getInventory().addItem(itemStack);
- instance.getLocale().getMessage("command.give.success")
+ plugin.getLocale().getMessage("command.give.success")
.processPlaceholder("type", Methods.compileSpawnerName(type, amt))
.sendPrefixedMessage(player);
} else {
for (Player player : Bukkit.getOnlinePlayers()) {
player.getInventory().addItem(itemStack);
- instance.getLocale().getMessage("command.give.success")
+ plugin.getLocale().getMessage("command.give.success")
.processPlaceholder("type", Methods.compileSpawnerName(type, amt))
.sendPrefixedMessage(player);
}
diff --git a/src/main/java/com/songoda/ultimatestacker/commands/CommandLootables.java b/src/main/java/com/songoda/ultimatestacker/commands/CommandLootables.java
index d83935c..d8f2f05 100644
--- a/src/main/java/com/songoda/ultimatestacker/commands/CommandLootables.java
+++ b/src/main/java/com/songoda/ultimatestacker/commands/CommandLootables.java
@@ -10,17 +10,17 @@ import java.util.List;
public class CommandLootables extends AbstractCommand {
- UltimateStacker instance;
+ private final UltimateStacker plugin;
- public CommandLootables() {
- super(true, "lootables");
- instance = UltimateStacker.getInstance();
+ public CommandLootables(UltimateStacker plugin) {
+ super(CommandType.PLAYER_ONLY, "lootables");
+ this.plugin = plugin;
}
@Override
protected ReturnType runCommand(CommandSender sender, String... args) {
Player p = (Player) sender;
- instance.getGuiManager().showGUI(p, new GuiEditor(instance.getLootablesManager().getLootManager()));
+ plugin.getGuiManager().showGUI(p, new GuiEditor(plugin.getLootablesManager().getLootManager()));
return ReturnType.SUCCESS;
}
diff --git a/src/main/java/com/songoda/ultimatestacker/commands/CommandReload.java b/src/main/java/com/songoda/ultimatestacker/commands/CommandReload.java
index 1f6a7d3..7f3b82a 100644
--- a/src/main/java/com/songoda/ultimatestacker/commands/CommandReload.java
+++ b/src/main/java/com/songoda/ultimatestacker/commands/CommandReload.java
@@ -8,17 +8,17 @@ import java.util.List;
public class CommandReload extends AbstractCommand {
- UltimateStacker instance;
+ private final UltimateStacker plugin;
- public CommandReload() {
- super(false, "reload");
- instance = UltimateStacker.getInstance();
+ public CommandReload(UltimateStacker plugin) {
+ super(CommandType.CONSOLE_OK, "reload");
+ this.plugin = plugin;
}
@Override
protected ReturnType runCommand(CommandSender sender, String... args) {
- instance.reloadConfig();
- instance.getLocale().getMessage("&7Configuration and Language files reloaded.").sendPrefixedMessage(sender);
+ plugin.reloadConfig();
+ plugin.getLocale().getMessage("&7Configuration and Language files reloaded.").sendPrefixedMessage(sender);
return ReturnType.SUCCESS;
}
diff --git a/src/main/java/com/songoda/ultimatestacker/commands/CommandRemoveAll.java b/src/main/java/com/songoda/ultimatestacker/commands/CommandRemoveAll.java
index 45495f6..59c1bae 100644
--- a/src/main/java/com/songoda/ultimatestacker/commands/CommandRemoveAll.java
+++ b/src/main/java/com/songoda/ultimatestacker/commands/CommandRemoveAll.java
@@ -19,11 +19,11 @@ import java.util.List;
public class CommandRemoveAll extends AbstractCommand {
- UltimateStacker instance;
+ private final UltimateStacker plugin;
- public CommandRemoveAll() {
- super(false, "removeall");
- instance = UltimateStacker.getInstance();
+ public CommandRemoveAll(UltimateStacker plugin) {
+ super(CommandType.CONSOLE_OK, "removeall");
+ this.plugin = plugin;
}
@Override
@@ -40,7 +40,7 @@ public class CommandRemoveAll extends AbstractCommand {
}
int amountRemoved = 0;
- EntityStackManager stackManager = instance.getEntityStackManager();
+ EntityStackManager stackManager = plugin.getEntityStackManager();
for (World world : Bukkit.getWorlds()) {
for (Entity entityO : world.getEntities()) {
if (entityO instanceof Player || !(entityO instanceof LivingEntity)) continue;
@@ -61,10 +61,10 @@ public class CommandRemoveAll extends AbstractCommand {
if (type.equalsIgnoreCase("items") && amountRemoved == 1) type = "Item";
if (amountRemoved == 0) {
- instance.getLocale().newMessage("&7No" + (all ? " " : " stacked ")
+ plugin.getLocale().newMessage("&7No" + (all ? " " : " stacked ")
+ type + " exist that could be removed.").sendPrefixedMessage(sender);
} else {
- instance.getLocale().newMessage("&7Removed &6" + amountRemoved + (all ? " " : " stacked ")
+ plugin.getLocale().newMessage("&7Removed &6" + amountRemoved + (all ? " " : " stacked ")
+ Methods.formatText(type.toLowerCase(), true) + " &7Successfully.").sendPrefixedMessage(sender);
}
return ReturnType.SUCCESS;
diff --git a/src/main/java/com/songoda/ultimatestacker/commands/CommandSettings.java b/src/main/java/com/songoda/ultimatestacker/commands/CommandSettings.java
index 58156e5..194bcce 100644
--- a/src/main/java/com/songoda/ultimatestacker/commands/CommandSettings.java
+++ b/src/main/java/com/songoda/ultimatestacker/commands/CommandSettings.java
@@ -12,18 +12,18 @@ import java.util.List;
public class CommandSettings extends AbstractCommand {
- UltimateStacker instance;
- GuiManager guiManager;
+ private final UltimateStacker plugin;
+ private final GuiManager guiManager;
- public CommandSettings(GuiManager guiManager) {
+ public CommandSettings(UltimateStacker plugin, GuiManager guiManager) {
super(CommandType.PLAYER_ONLY, "Settings");
this.guiManager = guiManager;
- instance = UltimateStacker.getInstance();
+ this.plugin = plugin;
}
@Override
protected ReturnType runCommand(CommandSender sender, String... args) {
- guiManager.showGUI((Player) sender, new PluginConfigGui(instance));
+ guiManager.showGUI((Player) sender, new PluginConfigGui(plugin));
return ReturnType.SUCCESS;
}
diff --git a/src/main/java/com/songoda/ultimatestacker/commands/CommandSpawn.java b/src/main/java/com/songoda/ultimatestacker/commands/CommandSpawn.java
index c4fb326..0b2d174 100644
--- a/src/main/java/com/songoda/ultimatestacker/commands/CommandSpawn.java
+++ b/src/main/java/com/songoda/ultimatestacker/commands/CommandSpawn.java
@@ -22,11 +22,11 @@ import java.util.stream.Collectors;
*/
public class CommandSpawn extends AbstractCommand {
- UltimateStacker instance;
+ private final UltimateStacker plugin;
- public CommandSpawn() {
- super(true, "spawn");
- instance = UltimateStacker.getInstance();
+ public CommandSpawn(UltimateStacker plugin) {
+ super(CommandType.PLAYER_ONLY, "spawn");
+ this.plugin = plugin;
}
@Override
@@ -44,7 +44,7 @@ public class CommandSpawn extends AbstractCommand {
}
if (type == null) {
- instance.getLocale().newMessage("&7The entity &6" + args[0] + " &7does not exist. Try one of these:").sendPrefixedMessage(sender);
+ plugin.getLocale().newMessage("&7The entity &6" + args[0] + " &7does not exist. Try one of these:").sendPrefixedMessage(sender);
StringBuilder list = new StringBuilder();
for (EntityType types : EntityType.values()) {
@@ -54,10 +54,10 @@ public class CommandSpawn extends AbstractCommand {
sender.sendMessage(Methods.formatText("&6" + list));
} else {
LivingEntity entity = (LivingEntity)player.getWorld().spawnEntity(player.getTargetBlock((Set)null, 200).getLocation(), type);
- EntityStack stack = instance.getEntityStackManager().addStack(entity);
+ EntityStack stack = plugin.getEntityStackManager().addStack(entity);
stack.createDuplicates(((Methods.isInt(args[1])) ? Integer.parseInt(args[1]) : 1) - 1);
stack.updateStack();
- instance.getStackingTask().attemptSplit(stack, entity);
+ plugin.getStackingTask().attemptSplit(stack, entity);
}
return ReturnType.SUCCESS;
diff --git a/src/main/java/com/songoda/ultimatestacker/database/DataManager.java b/src/main/java/com/songoda/ultimatestacker/database/DataManager.java
index ce6d292..d736955 100644
--- a/src/main/java/com/songoda/ultimatestacker/database/DataManager.java
+++ b/src/main/java/com/songoda/ultimatestacker/database/DataManager.java
@@ -16,7 +16,11 @@ import org.bukkit.plugin.Plugin;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
-import java.util.*;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
import java.util.function.Consumer;
public class DataManager extends DataManagerAbstract {
diff --git a/src/main/java/com/songoda/ultimatestacker/gui/GUIConvertWhat.java b/src/main/java/com/songoda/ultimatestacker/gui/GUIConvertWhat.java
index 78214c8..d41e860 100644
--- a/src/main/java/com/songoda/ultimatestacker/gui/GUIConvertWhat.java
+++ b/src/main/java/com/songoda/ultimatestacker/gui/GUIConvertWhat.java
@@ -11,7 +11,7 @@ import org.bukkit.entity.Player;
public class GUIConvertWhat extends Gui {
- private Convert convertFrom = null;
+ private Convert convertFrom;
private boolean entities = true;
private boolean spawners = true;
@@ -41,17 +41,17 @@ public class GUIConvertWhat extends Gui {
}
- void toggleEntities() {
+ private void toggleEntities() {
entities = !entities;
this.updateItem(0, ChatColor.GRAY + "Stacked Entities", entities ? ChatColor.GREEN + "Yes" : ChatColor.RED + "No");
}
- void toggleSpawners() {
+ private void toggleSpawners() {
spawners = !spawners;
this.updateItem(1, ChatColor.GRAY + "Stacked Spawners", spawners ? ChatColor.GREEN + "Yes" : ChatColor.RED + "No");
}
- void run(Player player) {
+ private void run(Player player) {
if (entities) {
convertFrom.convertEntities();
UltimateStacker.getInstance().getEntityStackManager().tryAndLoadColdEntities();
diff --git a/src/main/java/com/songoda/ultimatestacker/hook/hooks/JobsHook.java b/src/main/java/com/songoda/ultimatestacker/hook/hooks/JobsHook.java
index 585558c..3ab30ae 100644
--- a/src/main/java/com/songoda/ultimatestacker/hook/hooks/JobsHook.java
+++ b/src/main/java/com/songoda/ultimatestacker/hook/hooks/JobsHook.java
@@ -4,8 +4,8 @@ import com.gamingmesh.jobs.Jobs;
import com.gamingmesh.jobs.actions.EntityActionInfo;
import com.gamingmesh.jobs.container.ActionType;
import com.gamingmesh.jobs.container.JobsPlayer;
-import com.songoda.ultimatestacker.stackable.entity.EntityStack;
import com.songoda.ultimatestacker.hook.StackerHook;
+import com.songoda.ultimatestacker.stackable.entity.EntityStack;
import org.bukkit.GameMode;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/BreedListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/BreedListeners.java
index 1bd3684..d0d1899 100644
--- a/src/main/java/com/songoda/ultimatestacker/listeners/BreedListeners.java
+++ b/src/main/java/com/songoda/ultimatestacker/listeners/BreedListeners.java
@@ -10,21 +10,21 @@ import org.bukkit.metadata.FixedMetadataValue;
public class BreedListeners implements Listener {
- private final UltimateStacker instance;
+ private final UltimateStacker plugin;
- public BreedListeners(UltimateStacker instance) {
- this.instance = instance;
+ public BreedListeners(UltimateStacker plugin) {
+ this.plugin = plugin;
}
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onBread(EntityBreedEvent event) {
- Bukkit.getScheduler().scheduleSyncDelayedTask(instance, () -> {
- event.getFather().removeMetadata("breedCooldown", instance);
- event.getMother().removeMetadata("breedCooldown", instance);
+ Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> {
+ event.getFather().removeMetadata("breedCooldown", plugin);
+ event.getMother().removeMetadata("breedCooldown", plugin);
}, 5 * 20 * 60);
- event.getFather().setMetadata("breedCooldown", new FixedMetadataValue(instance, true));
- event.getFather().removeMetadata("inLove", instance);
- event.getMother().setMetadata("breedCooldown", new FixedMetadataValue(instance, true));
- event.getMother().removeMetadata("inLove", instance);
+ event.getFather().setMetadata("breedCooldown", new FixedMetadataValue(plugin, true));
+ event.getFather().removeMetadata("inLove", plugin);
+ event.getMother().setMetadata("breedCooldown", new FixedMetadataValue(plugin, true));
+ event.getMother().removeMetadata("inLove", plugin);
}
}
diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/ChunkListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/ChunkListeners.java
index 686fbfd..95b58d0 100644
--- a/src/main/java/com/songoda/ultimatestacker/listeners/ChunkListeners.java
+++ b/src/main/java/com/songoda/ultimatestacker/listeners/ChunkListeners.java
@@ -1,6 +1,5 @@
package com.songoda.ultimatestacker.listeners;
-import com.songoda.ultimatestacker.UltimateStacker;
import com.songoda.ultimatestacker.stackable.entity.EntityStackManager;
import org.bukkit.Chunk;
import org.bukkit.entity.Entity;
@@ -14,8 +13,8 @@ public class ChunkListeners implements Listener {
private final EntityStackManager entityStackManager;
- public ChunkListeners(UltimateStacker plugin) {
- this.entityStackManager = plugin.getEntityStackManager();
+ public ChunkListeners(EntityStackManager entityStackManager) {
+ this.entityStackManager = entityStackManager;
}
@EventHandler
diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/ClearLagListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/ClearLagListeners.java
index 90746f2..d87a293 100644
--- a/src/main/java/com/songoda/ultimatestacker/listeners/ClearLagListeners.java
+++ b/src/main/java/com/songoda/ultimatestacker/listeners/ClearLagListeners.java
@@ -9,17 +9,17 @@ import org.bukkit.event.Listener;
public class ClearLagListeners implements Listener {
- private final UltimateStacker instance;
+ private final UltimateStacker plugin;
- public ClearLagListeners(UltimateStacker instance) {
- this.instance = instance;
+ public ClearLagListeners(UltimateStacker plugin) {
+ this.plugin = plugin;
}
@EventHandler
public void onClearLaggTask(EntityRemoveEvent event) {
for (Entity entity : event.getWorld().getEntities()) {
- if (entity instanceof LivingEntity && instance.getEntityStackManager().isStackedAndLoaded((LivingEntity)entity)) {
- instance.getEntityStackManager().removeStack(entity);
+ if (entity instanceof LivingEntity && plugin.getEntityStackManager().isStackedAndLoaded((LivingEntity)entity)) {
+ plugin.getEntityStackManager().removeStack(entity);
event.addEntity(entity);
}
}
diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java
index c2d3c95..561fe79 100644
--- a/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java
+++ b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java
@@ -5,8 +5,8 @@ import com.songoda.core.compatibility.ServerVersion;
import com.songoda.lootables.loot.Drop;
import com.songoda.lootables.loot.DropUtils;
import com.songoda.ultimatestacker.UltimateStacker;
-import com.songoda.ultimatestacker.stackable.entity.EntityStack;
import com.songoda.ultimatestacker.settings.Settings;
+import com.songoda.ultimatestacker.stackable.entity.EntityStack;
import org.bukkit.GameRule;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
@@ -29,12 +29,12 @@ import java.util.stream.Collectors;
public class DeathListeners implements Listener {
- private final UltimateStacker instance;
- private Random random;
+ private final UltimateStacker plugin;
+ private final Random random;
- public DeathListeners(UltimateStacker instance) {
- this.instance = instance;
- random = new Random();
+ public DeathListeners(UltimateStacker plugin) {
+ this.plugin = plugin;
+ this.random = new Random();
}
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
@@ -43,7 +43,7 @@ public class DeathListeners implements Listener {
|| event.getEntityType() == EntityType.ARMOR_STAND) return;
boolean custom = Settings.CUSTOM_DROPS.getBoolean();
- List drops = custom ? instance.getLootablesManager().getDrops(event.getEntity())
+ List drops = custom ? plugin.getLootablesManager().getDrops(event.getEntity())
: event.getDrops().stream().map(Drop::new).collect(Collectors.toList());
if (custom) {
@@ -57,8 +57,8 @@ public class DeathListeners implements Listener {
&& !event.getEntity().getWorld().getGameRuleValue(GameRule.DO_MOB_LOOT))
drops.clear();
- if (instance.getEntityStackManager().isStackedAndLoaded(event.getEntity()))
- instance.getEntityStackManager().getStack(event.getEntity())
+ if (plugin.getEntityStackManager().isStackedAndLoaded(event.getEntity()))
+ plugin.getEntityStackManager().getStack(event.getEntity())
.onDeath(event.getEntity(), drops, custom, event.getDroppedExp(), event);
else
DropUtils.processStackedDrop(event.getEntity(), drops, event);
@@ -70,15 +70,14 @@ public class DeathListeners implements Listener {
items.add(entity.getEquipment().getItemInHand());
if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_9))
items.add(entity.getEquipment().getItemInOffHand());
- for (ItemStack item : items) {
+ for (ItemStack item : items)
if (item.getType() == material)
return true;
- }
- }
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11) && entity instanceof ChestedHorse) {
- if (((ChestedHorse) entity).getInventory().contains(material))
- return true;
}
+ if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11)
+ && entity instanceof ChestedHorse
+ && ((ChestedHorse) entity).getInventory().contains(material))
+ return true;
switch (material.name()) {
case "SADDLE":
@@ -118,8 +117,8 @@ public class DeathListeners implements Listener {
if (!(event.getEntity() instanceof LivingEntity)) return;
LivingEntity entity = (LivingEntity) event.getEntity();
- if (!instance.getEntityStackManager().isStackedAndLoaded(entity)) return;
- EntityStack stack = instance.getEntityStackManager().getStack(entity);
+ if (!plugin.getEntityStackManager().isStackedAndLoaded(entity)) return;
+ EntityStack stack = plugin.getEntityStackManager().getStack(entity);
if (Settings.KILL_WHOLE_STACK_ON_DEATH.getBoolean() && Settings.REALISTIC_DAMAGE.getBoolean()) {
Player player = (Player) event.getDamager();
diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/EntityListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/EntityListeners.java
index 6ef0884..b0a3f42 100644
--- a/src/main/java/com/songoda/ultimatestacker/listeners/EntityListeners.java
+++ b/src/main/java/com/songoda/ultimatestacker/listeners/EntityListeners.java
@@ -13,7 +13,12 @@ import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.CreatureSpawner;
import org.bukkit.enchantments.Enchantment;
-import org.bukkit.entity.*;
+import org.bukkit.entity.Creeper;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.entity.Player;
+import org.bukkit.entity.TNTPrimed;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/InteractListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/InteractListeners.java
index c134c29..8f44abd 100644
--- a/src/main/java/com/songoda/ultimatestacker/listeners/InteractListeners.java
+++ b/src/main/java/com/songoda/ultimatestacker/listeners/InteractListeners.java
@@ -3,9 +3,9 @@ package com.songoda.ultimatestacker.listeners;
import com.songoda.core.compatibility.CompatibleMaterial;
import com.songoda.core.compatibility.ServerVersion;
import com.songoda.ultimatestacker.UltimateStacker;
+import com.songoda.ultimatestacker.settings.Settings;
import com.songoda.ultimatestacker.stackable.entity.EntityStack;
import com.songoda.ultimatestacker.stackable.entity.Split;
-import com.songoda.ultimatestacker.settings.Settings;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Ageable;
@@ -125,8 +125,9 @@ public class InteractListeners implements Listener {
return type == Material.HAY_BLOCK;
case "TURTLE":
return type == Material.SEAGRASS;
+ default:
+ return false;
}
- return false;
}
}
diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/ShearListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/ShearListeners.java
index 4dffdd9..6af0d97 100644
--- a/src/main/java/com/songoda/ultimatestacker/listeners/ShearListeners.java
+++ b/src/main/java/com/songoda/ultimatestacker/listeners/ShearListeners.java
@@ -3,13 +3,17 @@ package com.songoda.ultimatestacker.listeners;
import com.songoda.core.compatibility.CompatibleMaterial;
import com.songoda.core.compatibility.ServerVersion;
import com.songoda.ultimatestacker.UltimateStacker;
+import com.songoda.ultimatestacker.settings.Settings;
import com.songoda.ultimatestacker.stackable.entity.EntityStack;
import com.songoda.ultimatestacker.stackable.entity.EntityStackManager;
import com.songoda.ultimatestacker.stackable.entity.Split;
-import com.songoda.ultimatestacker.settings.Settings;
import org.bukkit.Material;
import org.bukkit.World;
-import org.bukkit.entity.*;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.entity.MushroomCow;
+import org.bukkit.entity.Sheep;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@@ -20,7 +24,7 @@ import java.util.Random;
public class ShearListeners implements Listener {
- private UltimateStacker plugin;
+ private final UltimateStacker plugin;
public ShearListeners(UltimateStacker plugin) {
this.plugin = plugin;
diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/SheepDyeListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/SheepDyeListeners.java
index 21d9379..5c7b396 100644
--- a/src/main/java/com/songoda/ultimatestacker/listeners/SheepDyeListeners.java
+++ b/src/main/java/com/songoda/ultimatestacker/listeners/SheepDyeListeners.java
@@ -1,11 +1,11 @@
package com.songoda.ultimatestacker.listeners;
import com.songoda.ultimatestacker.UltimateStacker;
+import com.songoda.ultimatestacker.settings.Settings;
import com.songoda.ultimatestacker.stackable.entity.EntityStack;
import com.songoda.ultimatestacker.stackable.entity.EntityStackManager;
import com.songoda.ultimatestacker.stackable.entity.Split;
-import com.songoda.ultimatestacker.settings.Settings;
-import org.bukkit.entity.*;
+import org.bukkit.entity.LivingEntity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@@ -13,7 +13,7 @@ import org.bukkit.event.entity.SheepDyeWoolEvent;
public class SheepDyeListeners implements Listener {
- private UltimateStacker plugin;
+ private final UltimateStacker plugin;
public SheepDyeListeners(UltimateStacker plugin) {
this.plugin = plugin;
diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/SpawnerListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/SpawnerListeners.java
index d3ff69c..298b689 100644
--- a/src/main/java/com/songoda/ultimatestacker/listeners/SpawnerListeners.java
+++ b/src/main/java/com/songoda/ultimatestacker/listeners/SpawnerListeners.java
@@ -3,12 +3,12 @@ package com.songoda.ultimatestacker.listeners;
import com.songoda.core.compatibility.ServerVersion;
import com.songoda.core.nms.NmsManager;
import com.songoda.ultimatestacker.UltimateStacker;
-import com.songoda.ultimatestacker.stackable.entity.EntityStack;
import com.songoda.ultimatestacker.settings.Settings;
+import com.songoda.ultimatestacker.stackable.entity.EntityStack;
import com.songoda.ultimatestacker.stackable.spawner.SpawnerStack;
import com.songoda.ultimatestacker.stackable.spawner.SpawnerStackManager;
import com.songoda.ultimatestacker.utils.Methods;
-import com.songoda.ultimatestacker.utils.Reflection;
+import com.songoda.ultimatestacker.utils.ReflectionUtil;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.block.Block;
@@ -92,7 +92,7 @@ public class SpawnerListeners implements Listener {
.replace("MOOSHROOM", "MUSHROOM_COW")
.replace("ZOMBIE_PIGMAN", "PIG_ZOMBIE"));
else if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_12)) {
- String str = Reflection.getNBTTagCompound(Reflection.getNMSItemStack(event.getItem())).toString();
+ String str = ReflectionUtil.getNBTTagCompound(ReflectionUtil.getNMSItemStack(event.getItem())).toString();
if (str.contains("minecraft:"))
entityType = EntityType.fromName(str.substring(str.indexOf("minecraft:") + 10, str.indexOf("\"}")));
else
diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/TameListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/TameListeners.java
index a5397c1..d993b4e 100644
--- a/src/main/java/com/songoda/ultimatestacker/listeners/TameListeners.java
+++ b/src/main/java/com/songoda/ultimatestacker/listeners/TameListeners.java
@@ -11,7 +11,7 @@ import org.bukkit.event.entity.EntityTameEvent;
public class TameListeners implements Listener {
- private UltimateStacker plugin;
+ private final UltimateStacker plugin;
public TameListeners(UltimateStacker plugin) {
this.plugin = plugin;
diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemCurrentListener.java b/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemCurrentListener.java
index 6f643f7..d3fe4dc 100644
--- a/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemCurrentListener.java
+++ b/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemCurrentListener.java
@@ -14,6 +14,7 @@ import org.bukkit.event.entity.EntityPickupItemEvent;
import org.bukkit.inventory.ItemStack;
public class ItemCurrentListener implements Listener {
+
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onPickup(EntityPickupItemEvent event) {
if (!Settings.STACK_ITEMS.getBoolean() || event.getItem() instanceof Arrow) return;
diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemListeners.java
index d9f1acd..e36b74f 100644
--- a/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemListeners.java
+++ b/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemListeners.java
@@ -19,10 +19,10 @@ import java.util.List;
public class ItemListeners implements Listener {
- private final UltimateStacker instance;
+ private final UltimateStacker plugin;
- public ItemListeners(UltimateStacker instance) {
- this.instance = instance;
+ public ItemListeners(UltimateStacker plugin) {
+ this.plugin = plugin;
}
@EventHandler
@@ -39,7 +39,7 @@ public class ItemListeners implements Listener {
event.setCancelled(true);
- int specific = instance.getItemFile().getInt("Items." + itemStack.getType().name() + ".Max Stack Size");
+ int specific = plugin.getItemFile().getInt("Items." + itemStack.getType().name() + ".Max Stack Size");
int max;
if (UltimateStacker.isMaterialBlacklisted(itemStack))
diff --git a/src/main/java/com/songoda/ultimatestacker/lootables/LootablesManager.java b/src/main/java/com/songoda/ultimatestacker/lootables/LootablesManager.java
index 0973821..d830086 100644
--- a/src/main/java/com/songoda/ultimatestacker/lootables/LootablesManager.java
+++ b/src/main/java/com/songoda/ultimatestacker/lootables/LootablesManager.java
@@ -4,11 +4,21 @@ import com.songoda.core.compatibility.CompatibleMaterial;
import com.songoda.core.compatibility.ServerVersion;
import com.songoda.lootables.Lootables;
import com.songoda.lootables.Modify;
-import com.songoda.lootables.loot.*;
+import com.songoda.lootables.loot.Drop;
+import com.songoda.lootables.loot.Loot;
+import com.songoda.lootables.loot.LootBuilder;
+import com.songoda.lootables.loot.LootManager;
+import com.songoda.lootables.loot.Lootable;
import com.songoda.ultimatestacker.UltimateStacker;
import com.songoda.ultimatestacker.settings.Settings;
import org.bukkit.enchantments.Enchantment;
-import org.bukkit.entity.*;
+import org.bukkit.entity.Ageable;
+import org.bukkit.entity.Creeper;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.entity.Projectile;
+import org.bukkit.entity.Sheep;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import java.io.File;
diff --git a/src/main/java/com/songoda/ultimatestacker/settings/Settings.java b/src/main/java/com/songoda/ultimatestacker/settings/Settings.java
index eea9a0c..6b1744f 100644
--- a/src/main/java/com/songoda/ultimatestacker/settings/Settings.java
+++ b/src/main/java/com/songoda/ultimatestacker/settings/Settings.java
@@ -5,7 +5,6 @@ import com.songoda.core.configuration.ConfigSetting;
import com.songoda.ultimatestacker.UltimateStacker;
import com.songoda.ultimatestacker.stackable.entity.Check;
import com.songoda.ultimatestacker.stackable.entity.Split;
-import jdk.nashorn.internal.ir.LiteralNode;
import java.util.Arrays;
import java.util.Collections;
diff --git a/src/main/java/com/songoda/ultimatestacker/stackable/block/BlockStack.java b/src/main/java/com/songoda/ultimatestacker/stackable/block/BlockStack.java
index 3054473..ab08de5 100644
--- a/src/main/java/com/songoda/ultimatestacker/stackable/block/BlockStack.java
+++ b/src/main/java/com/songoda/ultimatestacker/stackable/block/BlockStack.java
@@ -4,8 +4,8 @@ import com.songoda.core.compatibility.CompatibleMaterial;
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.Stackable;
import org.bukkit.Location;
import org.bukkit.World;
diff --git a/src/main/java/com/songoda/ultimatestacker/stackable/block/BlockStackManager.java b/src/main/java/com/songoda/ultimatestacker/stackable/block/BlockStackManager.java
index 88453e2..b53dfe7 100644
--- a/src/main/java/com/songoda/ultimatestacker/stackable/block/BlockStackManager.java
+++ b/src/main/java/com/songoda/ultimatestacker/stackable/block/BlockStackManager.java
@@ -1,7 +1,6 @@
package com.songoda.ultimatestacker.stackable.block;
import com.songoda.core.compatibility.CompatibleMaterial;
-import com.songoda.ultimatestacker.stackable.spawner.SpawnerStack;
import org.bukkit.Location;
import org.bukkit.block.Block;
diff --git a/src/main/java/com/songoda/ultimatestacker/stackable/entity/ColdEntityStack.java b/src/main/java/com/songoda/ultimatestacker/stackable/entity/ColdEntityStack.java
index 0408e32..97486f1 100644
--- a/src/main/java/com/songoda/ultimatestacker/stackable/entity/ColdEntityStack.java
+++ b/src/main/java/com/songoda/ultimatestacker/stackable/entity/ColdEntityStack.java
@@ -8,7 +8,11 @@ import org.bukkit.Location;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
-import java.util.*;
+import java.util.Deque;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Objects;
+import java.util.UUID;
import java.util.concurrent.ConcurrentLinkedDeque;
import java.util.stream.Collectors;
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 beda971..b52e5b8 100644
--- a/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStack.java
+++ b/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStack.java
@@ -16,7 +16,6 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
import java.util.ArrayList;
-import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
diff --git a/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStackManager.java b/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStackManager.java
index 4b41c18..0eb9c75 100644
--- a/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStackManager.java
+++ b/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStackManager.java
@@ -9,7 +9,11 @@ import org.bukkit.World;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
-import java.util.*;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
public class EntityStackManager {
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 da6c461..9c0981b 100644
--- a/src/main/java/com/songoda/ultimatestacker/stackable/spawner/SpawnerStack.java
+++ b/src/main/java/com/songoda/ultimatestacker/stackable/spawner/SpawnerStack.java
@@ -6,7 +6,7 @@ import com.songoda.ultimatestacker.UltimateStacker;
import com.songoda.ultimatestacker.settings.Settings;
import com.songoda.ultimatestacker.stackable.Hologramable;
import com.songoda.ultimatestacker.utils.Methods;
-import com.songoda.ultimatestacker.utils.Reflection;
+import com.songoda.ultimatestacker.utils.ReflectionUtil;
import com.songoda.ultimatestacker.utils.Stackable;
import org.bukkit.Bukkit;
import org.bukkit.Location;
@@ -56,7 +56,7 @@ public class SpawnerStack implements Stackable, Hologramable {
creatureSpawner.setMaxNearbyEntities(maxNearby);
creatureSpawner.setSpawnCount(count);
} else {
- Reflection.updateSpawner(creatureSpawner, count, maxNearby);
+ ReflectionUtil.updateSpawner(creatureSpawner, count, maxNearby);
}
creatureSpawner.update();
}, 1L);
diff --git a/src/main/java/com/songoda/ultimatestacker/storage/Storage.java b/src/main/java/com/songoda/ultimatestacker/storage/Storage.java
deleted file mode 100644
index 1c79169..0000000
--- a/src/main/java/com/songoda/ultimatestacker/storage/Storage.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.songoda.ultimatestacker.storage;
-
-import com.songoda.core.configuration.Config;
-import com.songoda.ultimatestacker.UltimateStacker;
-
-import java.util.List;
-
-public abstract class Storage {
-
- protected final UltimateStacker instance;
- protected final Config dataFile;
-
- public Storage(UltimateStacker instance) {
- this.instance = instance;
- this.dataFile = new Config(instance, "data.yml");
- this.dataFile.setHeader("UltimateStacker Data File");
- this.dataFile.setAutosave(true).setAutosaveInterval(120);
- }
-
- public abstract boolean containsGroup(String group);
-
- public abstract List getRowsByGroup(String group);
-
- public abstract void prepareSaveItem(String group, StorageItem... items);
-
- public void updateData(UltimateStacker instance) {
- }
-
- public abstract void doSave();
-
- public abstract void save();
-
- public abstract void makeBackup();
-
- public abstract void closeConnection();
-
-}
diff --git a/src/main/java/com/songoda/ultimatestacker/storage/StorageItem.java b/src/main/java/com/songoda/ultimatestacker/storage/StorageItem.java
deleted file mode 100644
index 57d88e2..0000000
--- a/src/main/java/com/songoda/ultimatestacker/storage/StorageItem.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.songoda.ultimatestacker.storage;
-
-import org.bukkit.Material;
-import org.bukkit.entity.EntityType;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-public class StorageItem {
-
- private final Object object;
- private String key = null;
-
- public StorageItem(Object object) {
- this.object = object;
- }
-
- public StorageItem(String key, Object object) {
- this.key = key;
- this.object = object;
- }
-
- public StorageItem(String key, List material) {
- String object = "";
- for (Material m : material) {
- object += m.name() + ";";
- }
- this.key = key;
- this.object = object;
- }
-
- public StorageItem(String key, Map entityKills) {
- String object = "";
- for (Map.Entry entry : entityKills.entrySet()) {
- object += entry.getKey().name() + ":" + entry.getValue() + ";";
- }
- this.key = key;
- this.object = object;
- }
-
- public String getKey() {
- return key;
- }
-
- public String asString() {
- if (object == null) return null;
- return (String) object;
- }
-
- public boolean asBoolean() {
- if (object == null) return false;
- return (boolean) object;
- }
-
- public int asInt() {
- if (object == null) return 0;
- return (int) object;
- }
-
- public Object asObject() {
- return object;
- }
-
- public List asMaterialList() {
- List list = new ArrayList<>();
- if (object == null) return list;
- String[] stack = ((String) object).split(";");
- for (String item : stack) {
- if (item.equals("")) continue;
- list.add(Material.valueOf(item));
- }
- return list;
- }
-}
diff --git a/src/main/java/com/songoda/ultimatestacker/storage/StorageRow.java b/src/main/java/com/songoda/ultimatestacker/storage/StorageRow.java
deleted file mode 100644
index 7333c9f..0000000
--- a/src/main/java/com/songoda/ultimatestacker/storage/StorageRow.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.songoda.ultimatestacker.storage;
-
-import java.util.Collections;
-import java.util.Map;
-
-public class StorageRow {
-
- private final String key;
-
- private final Map items;
-
- public StorageRow(String key, Map items) {
- this.key = key;
- this.items = items;
- }
-
- public String getKey() {
- return key;
- }
-
- public Map getItems() {
- return Collections.unmodifiableMap(items);
- }
-
- public StorageItem get(String key) {
- if (!items.containsKey(key) || items.get(key).asObject().toString().equals("")) return new StorageItem(null);
- return items.get(key);
- }
-}
diff --git a/src/main/java/com/songoda/ultimatestacker/storage/types/StorageMysql.java b/src/main/java/com/songoda/ultimatestacker/storage/types/StorageMysql.java
deleted file mode 100644
index 7ff414b..0000000
--- a/src/main/java/com/songoda/ultimatestacker/storage/types/StorageMysql.java
+++ /dev/null
@@ -1,195 +0,0 @@
-package com.songoda.ultimatestacker.storage.types;
-
-import com.songoda.ultimatestacker.UltimateStacker;
-import com.songoda.ultimatestacker.storage.Storage;
-import com.songoda.ultimatestacker.storage.StorageItem;
-import com.songoda.ultimatestacker.storage.StorageRow;
-import com.songoda.ultimatestacker.utils.MySQLDatabase;
-
-import java.sql.DatabaseMetaData;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class StorageMysql extends Storage {
-
- private static Map toSave = new HashMap<>();
- private static Map lastSave = null;
- private MySQLDatabase database;
-
- public StorageMysql(UltimateStacker instance) {
- super(instance);
- this.database = new MySQLDatabase(instance);
- }
-
- @Override
- public boolean containsGroup(String group) {
- try {
- DatabaseMetaData dbm = database.getConnection().getMetaData();
- ResultSet rs = dbm.getTables(null, null, instance.getConfig().getString("Database.Prefix") + group, null);
- if (rs.next()) {
- return true;
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return false;
-
- }
-
- @Override
- public List getRowsByGroup(String group) {
- List rows = new ArrayList<>();
- try {
- ResultSet set = database.getConnection().createStatement().executeQuery(String.format("SELECT * FROM `" + instance.getConfig().getString("Database.Prefix") + "%s`", group));
- while (set.next()) {
- Map items = new HashMap<>();
-
- String key = set.getString(1);
- for (int i = 2; i <= set.getMetaData().getColumnCount(); i++) {
- if (set.getObject(i) == null || set.getObject(i) == "") continue;
- StorageItem item = new StorageItem(set.getObject(i));
- items.put(set.getMetaData().getColumnName(i), item);
- }
- StorageRow row = new StorageRow(key, items);
- rows.add(row);
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return rows;
- }
-
- @Override
- public void prepareSaveItem(String group, StorageItem... items) {
- toSave.put(group + "]" + items[0].asObject().toString(), items);
- }
-
- @Override
- public void doSave() {
- this.updateData(instance);
-
- if (lastSave == null)
- lastSave = new HashMap<>(toSave);
-
- if (toSave.isEmpty()) return;
- Map nextSave = new HashMap<>(toSave);
-
- this.makeBackup();
- this.save();
-
- toSave.clear();
- lastSave.clear();
- lastSave.putAll(nextSave);
- }
-
- @Override
- public void save() {
- try {
- Statement stmt = database.getConnection().createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
-
- last:
- for (Map.Entry last : lastSave.entrySet()) {
- String lastKey = last.getKey().split("]")[0];
- String lastValue = last.getValue()[0].asObject().toString();
-
- for (Map.Entry to : toSave.entrySet()) {
- String toKey = to.getKey().split("]")[0];
- if (!toKey.equals(lastKey)
- || !to.getValue()[0].asObject().equals(lastValue)
- || to.getValue().length != last.getValue().length)
- continue;
- toSave.remove(to.getKey());
- for (int i = 0; i < to.getValue().length; i ++) {
- if (!to.getValue()[i].asObject().toString()
- .equals(last.getValue()[i].asObject().toString())) {
- //Update
- StorageItem[] items = to.getValue();
- StringBuilder sql = new StringBuilder(String.format("UPDATE `" + instance.getConfig().getString("Database.Prefix") + "%s`", toKey));
-
- sql.append(" SET");
-
- for (StorageItem item : items) {
- if (item == null || item.asObject() == null) continue;
- String key = item.getKey().split("]")[0];
- sql.append(String.format("`%s` = '%s', ", key, item.asObject().toString()));
- }
-
- sql = new StringBuilder(sql.substring(0, sql.length() - 2));
-
- sql.append(String.format(" WHERE `%s`='%s'", last.getValue()[0].getKey(), last.getValue()[0].asObject().toString()));
-
- stmt.addBatch(sql.toString());
-
- continue last;
- }
- }
- // Already up to date.
-
- continue last;
- }
- //Was not found delete.
- StringBuilder sql = new StringBuilder(String.format("DELETE FROM `" + instance.getConfig().getString("Database.Prefix") + "%s`", lastKey));
- sql.append(String.format(" WHERE `%s`='%s'", last.getValue()[0].getKey(), last.getValue()[0].asObject().toString()));
- stmt.addBatch(sql.toString());
-
- }
-
- for (Map.Entry to : toSave.entrySet()) {
- String toKey = to.getKey().split("]")[0];
- //Add
- StorageItem[] items = to.getValue();
- StringBuilder sql = new StringBuilder(String.format("INSERT INTO `" + instance.getConfig().getString("Database.Prefix") + "%s`", toKey));
-
- sql.append(" (");
-
- for (StorageItem item : items) {
- if (item == null || item.asObject() == null) continue;
- String key = item.getKey().split("]")[0];
- sql.append(String.format("`%s`, ", key));
- }
-
- sql = new StringBuilder(sql.substring(0, sql.length() - 2));
-
- sql.append(") VALUES (");
-
- for (StorageItem item : items) {
- if (item == null || item.asObject() == null) continue;
- sql.append(String.format("'%s', ", item.asObject().toString()));
- }
-
- sql = new StringBuilder(sql.substring(0, sql.length() - 2));
-
- sql.append(");");
-
- stmt.addBatch(sql.toString());
- }
-
- stmt.executeBatch();
-
- toSave.clear();
-
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public void makeBackup() {
-
- }
-
- @Override
- public void closeConnection() {
- try {
- database.getConnection().close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
-}
-
diff --git a/src/main/java/com/songoda/ultimatestacker/storage/types/StorageYaml.java b/src/main/java/com/songoda/ultimatestacker/storage/types/StorageYaml.java
deleted file mode 100644
index fa7fa34..0000000
--- a/src/main/java/com/songoda/ultimatestacker/storage/types/StorageYaml.java
+++ /dev/null
@@ -1,157 +0,0 @@
-package com.songoda.ultimatestacker.storage.types;
-
-import com.songoda.ultimatestacker.UltimateStacker;
-import com.songoda.ultimatestacker.storage.Storage;
-import com.songoda.ultimatestacker.storage.StorageItem;
-import com.songoda.ultimatestacker.storage.StorageRow;
-import org.bukkit.configuration.ConfigurationSection;
-import org.bukkit.configuration.MemorySection;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.Deque;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-public class StorageYaml extends Storage {
-
- private static final Map toSave = new HashMap<>();
- private static Map lastSave = null;
-
- public StorageYaml(UltimateStacker instance) {
- super(instance);
- }
-
- @Override
- public boolean containsGroup(String group) {
- return dataFile.contains("data." + group);
- }
-
- @Override
- public List getRowsByGroup(String group) {
- List rows = new ArrayList<>();
- ConfigurationSection currentSection = dataFile.getConfigurationSection("data." + group);
- for (String key : currentSection.getKeys(false)) {
-
- Map items = new HashMap<>();
- ConfigurationSection currentSection2 = dataFile.getConfigurationSection("data." + group + "." + key);
- for (String key2 : currentSection2.getKeys(false)) {
- String path = "data." + group + "." + key + "." + key2;
- items.put(key2, new StorageItem(dataFile.get(path) instanceof MemorySection
- ? convertToInLineList(path) : dataFile.get(path)));
- }
- if (items.isEmpty()) continue;
- StorageRow row = new StorageRow(key, items);
- rows.add(row);
- }
- return rows;
- }
-
- private String convertToInLineList(String path) {
- StringBuilder converted = new StringBuilder();
- for (String key : dataFile.getConfigurationSection(path).getKeys(false)) {
- converted.append(key).append(":").append(dataFile.getInt(path + "." + key)).append(";");
- }
- return converted.toString();
- }
-
- @Override
- public void prepareSaveItem(String group, StorageItem... items) {
- for (StorageItem item : items) {
- if (item == null || item.asObject() == null) continue;
- toSave.put("data." + group + "." + items[0].asString() + "." + item.getKey(), item.asObject());
- }
- }
-
- @Override
- public void doSave() {
- this.updateData(instance);
-
- if (lastSave == null)
- lastSave = new HashMap<>(toSave);
-
- if (toSave.isEmpty()) return;
- Map nextSave = new HashMap<>(toSave);
-
- this.makeBackup();
- this.save();
-
- toSave.clear();
- lastSave.clear();
- lastSave.putAll(nextSave);
- }
-
- @Override
- public void save() {
- try {
- for (Map.Entry entry : lastSave.entrySet()) {
- if (toSave.containsKey(entry.getKey())) {
- Object newValue = toSave.get(entry.getKey());
- if (!entry.getValue().equals(newValue)) {
- dataFile.set(entry.getKey(), newValue);
- }
- toSave.remove(entry.getKey());
- } else {
- dataFile.set(entry.getKey(), null);
- }
- }
-
- for (Map.Entry entry : toSave.entrySet()) {
- dataFile.set(entry.getKey(), entry.getValue());
- }
-
- dataFile.save();
- } catch (NullPointerException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public void makeBackup() {
- File data = new File(instance.getDataFolder(), "data.yml");
- File dataClone = new File(instance.getDataFolder(), "data-backup-" + System.currentTimeMillis() + ".yml");
- try {
- copyFile(data, dataClone);
- } catch (IOException e) {
- e.printStackTrace();
- }
- Deque backups = new ArrayDeque<>();
- for (File file : Objects.requireNonNull(instance.getDataFolder().listFiles())) {
- if (file.getName().toLowerCase().contains("data-backup")) {
- backups.add(file);
- }
- }
- if (backups.size() > 3) {
- backups.getFirst().delete();
- }
- }
-
- @Override
- public void closeConnection() {
- dataFile.saveChanges();
- }
-
- private static void copyFile(File source, File dest) throws IOException {
- InputStream is = null;
- OutputStream os = null;
- try {
- is = new FileInputStream(source);
- os = new FileOutputStream(dest);
- byte[] buffer = new byte[1024];
- int length;
- while ((length = is.read(buffer)) > 0) {
- os.write(buffer, 0, length);
- }
- } finally {
- is.close();
- os.close();
- }
- }
-}
diff --git a/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java b/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java
index e187cb4..3a87c30 100644
--- a/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java
+++ b/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java
@@ -19,7 +19,15 @@ import org.bukkit.entity.*;
import org.bukkit.inventory.EntityEquipment;
import org.bukkit.scheduler.BukkitRunnable;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
public class StackingTask extends BukkitRunnable {
@@ -345,12 +353,17 @@ public class StackingTask extends BukkitRunnable {
List entities = new ArrayList<>();
for (CachedChunk chunk : getNearbyChunks(location, radius, singleChunk)) {
if (chunk == null) continue;
- Entity[] entityArray;
+ Entity[] entityArray = new Entity[0];
if (cachedChunks.containsKey(chunk)) {
entityArray = cachedChunks.get(chunk);
} else {
- entityArray = chunk.getEntities();
- cachedChunks.put(chunk, entityArray);
+ try {
+ entityArray = chunk.getEntities();
+ cachedChunks.put(chunk, entityArray);
+ } catch (Exception ignored) {
+ // Sometimes accessing this method asynchronously throws an error. This is super rare and
+ // as such doesn't really affect the plugin so we're just going to ignore this failure.
+ }
}
if (entityArray == null) continue;
for (Entity e : entityArray) {
diff --git a/src/main/java/com/songoda/ultimatestacker/utils/Methods.java b/src/main/java/com/songoda/ultimatestacker/utils/Methods.java
index 8be86dc..8956f34 100644
--- a/src/main/java/com/songoda/ultimatestacker/utils/Methods.java
+++ b/src/main/java/com/songoda/ultimatestacker/utils/Methods.java
@@ -6,21 +6,26 @@ import com.songoda.core.nms.nbt.NBTItem;
import com.songoda.core.utils.TextUtils;
import com.songoda.ultimatestacker.UltimateStacker;
import com.songoda.ultimatestacker.settings.Settings;
-import org.bukkit.*;
-import org.bukkit.block.Block;
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.GameMode;
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.World;
import org.bukkit.block.CreatureSpawner;
-import org.bukkit.entity.*;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.Item;
+import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BlockStateMeta;
import org.bukkit.inventory.meta.ItemMeta;
-import org.bukkit.util.Vector;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.ThreadLocalRandom;
public class Methods {
diff --git a/src/main/java/com/songoda/ultimatestacker/utils/Reflection.java b/src/main/java/com/songoda/ultimatestacker/utils/ReflectionUtil.java
similarity index 85%
rename from src/main/java/com/songoda/ultimatestacker/utils/Reflection.java
rename to src/main/java/com/songoda/ultimatestacker/utils/ReflectionUtil.java
index d4edc5b..5abf0e2 100644
--- a/src/main/java/com/songoda/ultimatestacker/utils/Reflection.java
+++ b/src/main/java/com/songoda/ultimatestacker/utils/ReflectionUtil.java
@@ -7,7 +7,8 @@ import org.bukkit.inventory.ItemStack;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
-public class Reflection {
+public class ReflectionUtil {
+
private static Class> clazzCraftCreatureSpawner, clazzTileEntityMobSpawner = null;
private static Method methodGetTileEntity, methodGetSpawner;
private static Field fieldSpawnount, fieldMaxNearbyEntities, fieldSpawner;
@@ -68,12 +69,11 @@ public class Reflection {
}
public static Object getNMSItemStack(ItemStack item) {
- @SuppressWarnings("rawtypes")
- Class cis = getCraftItemStack();
- java.lang.reflect.Method method;
+ Class> cis = getCraftItemStack();
+ java.lang.reflect.Method methodAsNMSCopy;
try {
- method = cis.getMethod("asNMSCopy", ItemStack.class);
- Object answer = method.invoke(cis, item);
+ methodAsNMSCopy = cis.getMethod("asNMSCopy", ItemStack.class);
+ Object answer = methodAsNMSCopy.invoke(cis, item);
return answer;
} catch (Exception e) {
// TODO Auto-generated catch block
@@ -82,15 +82,12 @@ public class Reflection {
return null;
}
- @SuppressWarnings({"unchecked"})
public static Object getNBTTagCompound(Object nmsitem) {
- @SuppressWarnings("rawtypes")
- Class c = nmsitem.getClass();
- java.lang.reflect.Method method;
+ Class> c = nmsitem.getClass();
+ java.lang.reflect.Method methodGetTag;
try {
- method = c.getMethod("getTag");
- Object answer = method.invoke(nmsitem);
- return answer;
+ methodGetTag = c.getMethod("getTag");
+ return methodGetTag.invoke(nmsitem);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
@@ -98,14 +95,10 @@ public class Reflection {
return null;
}
- @SuppressWarnings("rawtypes")
- public static Class getCraftItemStack() {
+ public static Class> getCraftItemStack() {
String version = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
try {
- Class c = Class.forName("org.bukkit.craftbukkit." + version + ".inventory.CraftItemStack");
- //Constructor> cons = c.getConstructor(ItemStack.class);
- //return cons.newInstance(item);
- return c;
+ return Class.forName("org.bukkit.craftbukkit." + version + ".inventory.CraftItemStack");
} catch (Exception ex) {
System.out.println("Error in ItemNBTAPI! (Outdated plugin?)");
ex.printStackTrace();