From 4e889efcdbbeb2fdbbea6b6fb1c574ae44b1a883 Mon Sep 17 00:00:00 2001 From: Brianna Date: Tue, 1 Sep 2020 13:13:53 -0500 Subject: [PATCH 1/7] Organized imports. --- .../ultimatestacker/hook/hooks/JobsHook.java | 2 +- .../listeners/DeathListeners.java | 2 +- .../listeners/InteractListeners.java | 10 ++-------- .../listeners/ShearListeners.java | 2 +- .../listeners/SheepDyeListeners.java | 4 ++-- .../listeners/SpawnerListeners.java | 2 +- .../ultimatestacker/settings/Settings.java | 1 - .../stackable/block/BlockStack.java | 2 +- .../stackable/block/BlockStackManager.java | 1 - .../stackable/entity/EntityStack.java | 1 - .../storage/types/StorageYaml.java | 16 +++------------- .../songoda/ultimatestacker/utils/Methods.java | 8 ++++---- 12 files changed, 16 insertions(+), 35 deletions(-) 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/DeathListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java index c2d3c95..fd988aa 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; diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/InteractListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/InteractListeners.java index c134c29..9ffa87c 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/InteractListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/InteractListeners.java @@ -3,18 +3,12 @@ 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; -import org.bukkit.entity.Cat; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Horse; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.entity.Wolf; +import org.bukkit.entity.*; 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/ShearListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/ShearListeners.java index 4dffdd9..7bd5199 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/ShearListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/ShearListeners.java @@ -3,10 +3,10 @@ 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.*; diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/SheepDyeListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/SheepDyeListeners.java index 21d9379..7beb197 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; diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/SpawnerListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/SpawnerListeners.java index d3ff69c..129824f 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/SpawnerListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/SpawnerListeners.java @@ -3,8 +3,8 @@ 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; 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/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/storage/types/StorageYaml.java b/src/main/java/com/songoda/ultimatestacker/storage/types/StorageYaml.java index fa7fa34..c87040e 100644 --- a/src/main/java/com/songoda/ultimatestacker/storage/types/StorageYaml.java +++ b/src/main/java/com/songoda/ultimatestacker/storage/types/StorageYaml.java @@ -6,19 +6,9 @@ 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; + +import java.io.*; +import java.util.*; public class StorageYaml extends Storage { diff --git a/src/main/java/com/songoda/ultimatestacker/utils/Methods.java b/src/main/java/com/songoda/ultimatestacker/utils/Methods.java index 8be86dc..1e77d1b 100644 --- a/src/main/java/com/songoda/ultimatestacker/utils/Methods.java +++ b/src/main/java/com/songoda/ultimatestacker/utils/Methods.java @@ -7,20 +7,20 @@ 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.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 { From 50f5a5d5b4f39840c9359cf5a199d0c971ebafc4 Mon Sep 17 00:00:00 2001 From: Brianna Date: Tue, 1 Sep 2020 13:15:35 -0500 Subject: [PATCH 2/7] Remove the old storage system. --- .../ultimatestacker/UltimateStacker.java | 30 --- .../ultimatestacker/storage/Storage.java | 37 ---- .../ultimatestacker/storage/StorageItem.java | 75 ------- .../ultimatestacker/storage/StorageRow.java | 29 --- .../storage/types/StorageMysql.java | 195 ------------------ .../storage/types/StorageYaml.java | 147 ------------- 6 files changed, 513 deletions(-) delete mode 100644 src/main/java/com/songoda/ultimatestacker/storage/Storage.java delete mode 100644 src/main/java/com/songoda/ultimatestacker/storage/StorageItem.java delete mode 100644 src/main/java/com/songoda/ultimatestacker/storage/StorageRow.java delete mode 100644 src/main/java/com/songoda/ultimatestacker/storage/types/StorageMysql.java delete mode 100644 src/main/java/com/songoda/ultimatestacker/storage/types/StorageYaml.java diff --git a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java index 0b3062c..dc95a8d 100644 --- a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java +++ b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java @@ -34,14 +34,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,7 +46,6 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.plugin.PluginManager; -import java.io.File; import java.util.*; public class UltimateStacker extends SongodaPlugin { @@ -215,31 +210,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) -> { 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 c87040e..0000000 --- a/src/main/java/com/songoda/ultimatestacker/storage/types/StorageYaml.java +++ /dev/null @@ -1,147 +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.*; -import java.util.*; - -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(); - } - } -} From f61e9e17f76927aa251d05473e455bd98ce77792 Mon Sep 17 00:00:00 2001 From: Brianna Date: Tue, 1 Sep 2020 13:30:08 -0500 Subject: [PATCH 3/7] Clean up commands. --- .../songoda/ultimatestacker/UltimateStacker.java | 14 +++++++------- .../ultimatestacker/commands/CommandConvert.java | 10 +++++----- .../commands/CommandGiveSpawner.java | 16 ++++++++-------- .../commands/CommandLootables.java | 10 +++++----- .../ultimatestacker/commands/CommandReload.java | 12 ++++++------ .../commands/CommandRemoveAll.java | 14 +++++++------- .../commands/CommandSettings.java | 10 +++++----- .../ultimatestacker/commands/CommandSpawn.java | 14 +++++++------- 8 files changed, 50 insertions(+), 50 deletions(-) diff --git a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java index dc95a8d..a31c767 100644 --- a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java +++ b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java @@ -105,13 +105,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(this, guiManager) ); this.lootablesManager = new LootablesManager(); diff --git a/src/main/java/com/songoda/ultimatestacker/commands/CommandConvert.java b/src/main/java/com/songoda/ultimatestacker/commands/CommandConvert.java index 9e7b13f..c2c6bc4 100644 --- a/src/main/java/com/songoda/ultimatestacker/commands/CommandConvert.java +++ b/src/main/java/com/songoda/ultimatestacker/commands/CommandConvert.java @@ -13,13 +13,13 @@ import java.util.List; public class CommandConvert extends AbstractCommand { - UltimateStacker instance; - GuiManager guiManager; + private final UltimateStacker plugin; + private final GuiManager guiManager; - public CommandConvert(GuiManager guiManager) { - super(true, "convert"); + public CommandConvert(UltimateStacker plugin, GuiManager guiManager) { + super(CommandType.PLAYER_ONLY, "convert"); this.guiManager = guiManager; - instance = UltimateStacker.getInstance(); + this.plugin = plugin; } @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..07503cd 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()) { @@ -56,13 +56,13 @@ public class CommandGiveSpawner extends AbstractCommand { if (!args[0].trim().toLowerCase().equals("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; From 4eaebd4de2bce00f4af6aeb13e857e24c58fb646 Mon Sep 17 00:00:00 2001 From: Brianna Date: Tue, 1 Sep 2020 13:54:43 -0500 Subject: [PATCH 4/7] General cleanup. --- .../ultimatestacker/UltimateStacker.java | 4 +-- .../commands/CommandConvert.java | 5 +-- .../commands/CommandGiveSpawner.java | 2 +- .../ultimatestacker/gui/GUIConvertWhat.java | 8 ++--- .../listeners/BreedListeners.java | 20 ++++++------ .../listeners/ChunkListeners.java | 5 ++- .../listeners/ClearLagListeners.java | 10 +++--- .../listeners/DeathListeners.java | 31 +++++++++---------- .../listeners/InteractListeners.java | 3 +- .../listeners/ShearListeners.java | 2 +- .../listeners/SheepDyeListeners.java | 2 +- .../listeners/SpawnerListeners.java | 4 +-- .../listeners/TameListeners.java | 2 +- .../listeners/item/ItemCurrentListener.java | 1 + .../listeners/item/ItemListeners.java | 8 ++--- .../stackable/spawner/SpawnerStack.java | 4 +-- .../{Reflection.java => ReflectionUtil.java} | 31 +++++++------------ 17 files changed, 66 insertions(+), 76 deletions(-) rename src/main/java/com/songoda/ultimatestacker/utils/{Reflection.java => ReflectionUtil.java} (85%) diff --git a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java index a31c767..efcb4db 100644 --- a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java +++ b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java @@ -111,7 +111,7 @@ public class UltimateStacker extends SongodaPlugin { new CommandGiveSpawner(this), new CommandSpawn(this), new CommandLootables(this), - new CommandConvert(this, guiManager) + new CommandConvert( guiManager) ); this.lootablesManager = new LootablesManager(); @@ -228,7 +228,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 c2c6bc4..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 { - private final UltimateStacker plugin; private final GuiManager guiManager; - public CommandConvert(UltimateStacker plugin, GuiManager guiManager) { + public CommandConvert(GuiManager guiManager) { super(CommandType.PLAYER_ONLY, "convert"); this.guiManager = guiManager; - this.plugin = plugin; } @Override diff --git a/src/main/java/com/songoda/ultimatestacker/commands/CommandGiveSpawner.java b/src/main/java/com/songoda/ultimatestacker/commands/CommandGiveSpawner.java index 07503cd..a0804d7 100644 --- a/src/main/java/com/songoda/ultimatestacker/commands/CommandGiveSpawner.java +++ b/src/main/java/com/songoda/ultimatestacker/commands/CommandGiveSpawner.java @@ -53,7 +53,7 @@ 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); plugin.getLocale().getMessage("command.give.success") 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/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 fd988aa..561fe79 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java @@ -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/InteractListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/InteractListeners.java index 9ffa87c..3ced4ed 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/InteractListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/InteractListeners.java @@ -119,8 +119,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 7bd5199..33aa60e 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/ShearListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/ShearListeners.java @@ -20,7 +20,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 7beb197..5c7b396 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/SheepDyeListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/SheepDyeListeners.java @@ -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 129824f..298b689 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/SpawnerListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/SpawnerListeners.java @@ -8,7 +8,7 @@ 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/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/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(); From 1940dfc8c02996df712d6b73e285800b9049e7e4 Mon Sep 17 00:00:00 2001 From: Brianna Date: Tue, 1 Sep 2020 13:44:39 -0500 Subject: [PATCH 5/7] Changed import style. --- .../songoda/ultimatestacker/UltimateStacker.java | 14 ++++++++++++-- .../ultimatestacker/database/DataManager.java | 6 +++++- .../ultimatestacker/listeners/EntityListeners.java | 7 ++++++- .../listeners/InteractListeners.java | 8 +++++++- .../ultimatestacker/listeners/ShearListeners.java | 6 +++++- .../lootables/LootablesManager.java | 14 ++++++++++++-- .../stackable/entity/ColdEntityStack.java | 6 +++++- .../stackable/entity/EntityStackManager.java | 6 +++++- .../ultimatestacker/tasks/StackingTask.java | 10 +++++++++- .../com/songoda/ultimatestacker/utils/Methods.java | 7 ++++++- 10 files changed, 72 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java index efcb4db..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; @@ -46,7 +52,11 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.plugin.PluginManager; -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 { 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/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 3ced4ed..8f44abd 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/InteractListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/InteractListeners.java @@ -8,7 +8,13 @@ import com.songoda.ultimatestacker.stackable.entity.EntityStack; import com.songoda.ultimatestacker.stackable.entity.Split; import org.bukkit.Bukkit; import org.bukkit.Material; -import org.bukkit.entity.*; +import org.bukkit.entity.Ageable; +import org.bukkit.entity.Cat; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Horse; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.entity.Wolf; 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/ShearListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/ShearListeners.java index 33aa60e..6af0d97 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/ShearListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/ShearListeners.java @@ -9,7 +9,11 @@ import com.songoda.ultimatestacker.stackable.entity.EntityStackManager; import com.songoda.ultimatestacker.stackable.entity.Split; 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; 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/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/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/tasks/StackingTask.java b/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java index e187cb4..7bce7f5 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 { diff --git a/src/main/java/com/songoda/ultimatestacker/utils/Methods.java b/src/main/java/com/songoda/ultimatestacker/utils/Methods.java index 1e77d1b..8956f34 100644 --- a/src/main/java/com/songoda/ultimatestacker/utils/Methods.java +++ b/src/main/java/com/songoda/ultimatestacker/utils/Methods.java @@ -6,7 +6,12 @@ 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.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.Entity; import org.bukkit.entity.EntityType; From 17eb90e5ea5a7026e84eba22d259bbecb8c8e95f Mon Sep 17 00:00:00 2001 From: Brianna Date: Mon, 7 Sep 2020 09:49:08 -0500 Subject: [PATCH 6/7] Hid an unavoidable rare error. --- .../songoda/ultimatestacker/tasks/StackingTask.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java b/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java index 7bce7f5..3a87c30 100644 --- a/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java +++ b/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java @@ -353,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) { From ea19394b9dd139345408cef07d0f634e5ce5ef19 Mon Sep 17 00:00:00 2001 From: Brianna Date: Tue, 1 Sep 2020 13:34:48 -0500 Subject: [PATCH 7/7] version 2.0.5 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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}