From 1917f427fca9466702086b75d110e4efc2f01ff3 Mon Sep 17 00:00:00 2001 From: nicuch Date: Sat, 11 Jan 2020 00:30:35 +0200 Subject: Everything --- pom.xml | 9 +++-- .../java/com/leonardobishop/quests/QuestsAPI.java | 7 +--- .../leonardobishop/quests/QuestsConfigLoader.java | 8 ++-- .../com/leonardobishop/quests/bstats/Metrics.java | 21 +++++----- .../quests/commands/CommandQuests.java | 34 +++++++--------- .../quests/events/EventInventory.java | 23 ++++++----- .../quests/events/EventPlayerJoin.java | 9 +---- .../java/com/leonardobishop/quests/obj/Items.java | 2 +- .../com/leonardobishop/quests/obj/Options.java | 2 +- .../quests/obj/misc/QMenuCancel.java | 8 ++-- .../quests/obj/misc/QMenuCategory.java | 4 +- .../leonardobishop/quests/obj/misc/QMenuDaily.java | 21 +++++++--- .../leonardobishop/quests/obj/misc/QMenuQuest.java | 8 ++-- .../quests/obj/misc/creator/QMenuCreator.java | 15 +++---- .../com/leonardobishop/quests/player/QPlayer.java | 23 +++++++---- .../quests/player/QPlayerManager.java | 6 +-- .../com/leonardobishop/quests/quests/Category.java | 2 +- .../com/leonardobishop/quests/quests/Quest.java | 22 +++++----- .../leonardobishop/quests/quests/QuestManager.java | 5 ++- .../com/leonardobishop/quests/quests/Task.java | 4 +- .../quests/quests/tasktypes/ConfigValue.java | 6 +-- .../quests/quests/tasktypes/TaskType.java | 4 +- .../tasktypes/types/BuildingCertainTaskType.java | 7 +--- .../tasktypes/types/CitizensDeliverTaskType.java | 10 ++--- .../quests/tasktypes/types/DealDamageTaskType.java | 7 ++-- .../quests/tasktypes/types/FarmingTaskType.java | 2 +- .../quests/tasktypes/types/FishingTaskType.java | 2 - .../quests/tasktypes/types/InventoryTaskType.java | 11 ++--- .../quests/tasktypes/types/MilkingTaskType.java | 1 + .../tasktypes/types/MiningCertainTaskType.java | 7 +--- .../quests/tasktypes/types/PlaytimeTaskType.java | 47 ++++++++++------------ 31 files changed, 163 insertions(+), 174 deletions(-) diff --git a/pom.xml b/pom.xml index 007660d8..5c6b2a71 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,8 @@ Quests - ${version} + ${project.version} + UTF-8 @@ -109,6 +110,7 @@ org.apache.maven.plugins maven-compiler-plugin + 3.8.1 8 8 @@ -118,17 +120,18 @@ org.apache.maven.plugins maven-antrun-plugin + 1.8 replace prepare-package - + - + run diff --git a/src/main/java/com/leonardobishop/quests/QuestsAPI.java b/src/main/java/com/leonardobishop/quests/QuestsAPI.java index d36fece3..aaacea55 100644 --- a/src/main/java/com/leonardobishop/quests/QuestsAPI.java +++ b/src/main/java/com/leonardobishop/quests/QuestsAPI.java @@ -3,6 +3,7 @@ package com.leonardobishop.quests; import com.leonardobishop.quests.player.QPlayerManager; import com.leonardobishop.quests.quests.QuestManager; import com.leonardobishop.quests.quests.tasktypes.TaskTypeManager; +import org.bukkit.Bukkit; /** * This contains some methods from the main Quests class which @@ -16,11 +17,7 @@ import com.leonardobishop.quests.quests.tasktypes.TaskTypeManager; */ public class QuestsAPI { - private static Quests plugin; - - protected static void initialise(Quests plugin) { - QuestsAPI.plugin = plugin; - } + private final static Quests plugin = (Quests) Bukkit.getPluginManager().getPlugin("Quests") ; public static QuestManager getQuestManager() { return plugin.getQuestManager(); diff --git a/src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java b/src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java index 3b45b523..24a2f19f 100644 --- a/src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java +++ b/src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java @@ -20,8 +20,8 @@ import java.util.logging.Level; public class QuestsConfigLoader { - private Map brokenFiles = new HashMap<>(); - private Quests plugin; + private final Map brokenFiles = new HashMap<>(); + private final Quests plugin; public QuestsConfigLoader(Quests plugin) { this.plugin = plugin; @@ -36,7 +36,7 @@ public class QuestsConfigLoader { // test CONFIG file integrity try { YamlConfiguration config = new YamlConfiguration(); - config.load(new File(String.valueOf(plugin.getDataFolder() + File.separator + "config.yml"))); + config.load(new File(plugin.getDataFolder() + File.separator + "config.yml")); } catch (Exception ex) { brokenFiles.put("
config.yml", ConfigLoadError.MALFORMED_YAML); plugin.setBrokenConfig(true); @@ -136,7 +136,7 @@ public class QuestsConfigLoader { List cLoreStarted = config.getStringList(path + ".lore-started"); String name; - Material type = null; + Material type; int data = 0; List loreNormal = new ArrayList<>(); if (cLoreNormal != null) { diff --git a/src/main/java/com/leonardobishop/quests/bstats/Metrics.java b/src/main/java/com/leonardobishop/quests/bstats/Metrics.java index 88ae12f3..c2fdf1ae 100644 --- a/src/main/java/com/leonardobishop/quests/bstats/Metrics.java +++ b/src/main/java/com/leonardobishop/quests/bstats/Metrics.java @@ -288,7 +288,7 @@ public class Metrics { if (logFailedRequests) { this.plugin.getLogger().log(Level.SEVERE, "Encountered unexpected exception", e); } - continue; // continue looping since we cannot do any other thing. + // continue looping since we cannot do any other thing. } } } catch (NullPointerException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) { } @@ -299,17 +299,14 @@ public class Metrics { data.add("plugins", pluginData); // Create a new thread for the connection to the bStats server - new Thread(new Runnable() { - @Override - public void run() { - try { - // Send the data - sendData(plugin, data); - } catch (Exception e) { - // Something went wrong! :( - if (logFailedRequests) { - plugin.getLogger().log(Level.WARNING, "Could not submit plugin stats of " + plugin.getName(), e); - } + new Thread(() -> { + try { + // Send the data + sendData(plugin, data); + } catch (Exception e) { + // Something went wrong! :( + if (logFailedRequests) { + plugin.getLogger().log(Level.WARNING, "Could not submit plugin stats of " + plugin.getName(), e); } } }).start(); diff --git a/src/main/java/com/leonardobishop/quests/commands/CommandQuests.java b/src/main/java/com/leonardobishop/quests/commands/CommandQuests.java index d7299fdb..159ebb41 100644 --- a/src/main/java/com/leonardobishop/quests/commands/CommandQuests.java +++ b/src/main/java/com/leonardobishop/quests/commands/CommandQuests.java @@ -16,19 +16,20 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; import java.util.Map; import java.util.UUID; public class CommandQuests implements CommandExecutor { - private Quests plugin; + private final Quests plugin; public CommandQuests(Quests plugin) { this.plugin = plugin; } + @SuppressWarnings("deprecation") + @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if (plugin.isBrokenConfig()) { sender.sendMessage(ChatColor.RED + "The main config must be in tact before quests can be used. Quests has failed to load the following files:"); @@ -80,17 +81,14 @@ public class CommandQuests implements CommandExecutor { return true; } else if (args[1].equalsIgnoreCase("update")) { sender.sendMessage(ChatColor.GRAY + "Checking for updates..."); - new BukkitRunnable() { - @Override - public void run() { - plugin.getUpdater().check(); - if (plugin.getUpdater().isUpdateReady()) { - sender.sendMessage(plugin.getUpdater().getMessage()); - } else { - sender.sendMessage(ChatColor.GRAY + "No updates were found."); - } + Bukkit.getScheduler().runTaskAsynchronously(this.plugin, () -> { + plugin.getUpdater().check(); + if (plugin.getUpdater().isUpdateReady()) { + sender.sendMessage(plugin.getUpdater().getMessage()); + } else { + sender.sendMessage(ChatColor.GRAY + "No updates were found."); } - }.runTaskAsynchronously(plugin); + }); return true; } } else if (args.length == 3) { @@ -134,14 +132,12 @@ public class CommandQuests implements CommandExecutor { showAdminHelp(sender, "opengui"); return true; } else if (args[1].equalsIgnoreCase("moddata")) { - Player player; - OfflinePlayer ofp; + OfflinePlayer ofp = Bukkit.getOfflinePlayer(args[3]); UUID uuid; String name; - if ((player = Bukkit.getPlayer(args[3])) != null) { - uuid = player.getUniqueId(); - name = player.getName(); - } else if ((ofp = Bukkit.getOfflinePlayer(args[3])) != null) { + // Player.class is a superclass for OfflinePlayer. + // getofflinePlayer return a player regardless if exists or not + if (ofp != null) { uuid = ofp.getUniqueId(); name = ofp.getName(); } else { @@ -226,7 +222,7 @@ public class CommandQuests implements CommandExecutor { Quest quest = plugin.getQuestManager().getQuestById(args[4]); if (quest == null) { sender.sendMessage(Messages.COMMAND_QUEST_START_DOESNTEXIST.getMessage().replace("{quest}", args[4])); - success = true; + //success = true; return true; } if (args[2].equalsIgnoreCase("reset")) { diff --git a/src/main/java/com/leonardobishop/quests/events/EventInventory.java b/src/main/java/com/leonardobishop/quests/events/EventInventory.java index a791500e..1ac57ed7 100644 --- a/src/main/java/com/leonardobishop/quests/events/EventInventory.java +++ b/src/main/java/com/leonardobishop/quests/events/EventInventory.java @@ -13,6 +13,7 @@ import org.bukkit.event.Listener; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.event.inventory.InventoryType; import java.util.ArrayList; import java.util.HashMap; @@ -34,7 +35,7 @@ public class EventInventory implements Listener { /** * Add a player to the tracker so the event can watch them in the menu. * - * @param uuid UUID of player to track + * @param uuid UUID of player to track * @param qMenu The menu they have open */ public static void track(UUID uuid, QMenu qMenu) { @@ -46,6 +47,10 @@ public class EventInventory implements Listener { // check if the player has a quest menu open if (tracker.containsKey(event.getWhoClicked().getUniqueId())) { event.setCancelled(true); + if (event.getClickedInventory() == null) + return; //The player clicked outside the inventory + if (event.getClickedInventory().getType() == InventoryType.PLAYER) + return; //The clicked inventory is a player inventory type QMenu qMenu = tracker.get(event.getWhoClicked().getUniqueId()); // **** MENU TYPE: QUESTS IN CATEGORY/ALL QUESTS **** @@ -58,18 +63,20 @@ public class EventInventory implements Listener { event.getWhoClicked().openInventory(qMenuQuest.toInventory(qMenuQuest.getCurrentPage() - 1)); } else if (qMenuQuest.getPageNextLocation() == event.getSlot()) { + if (!event.getClickedInventory().equals(qMenuQuest.toInventory(qMenuQuest.getCurrentPage() + 1))) + return; buffer.add(event.getWhoClicked().getUniqueId()); event.getWhoClicked().openInventory(qMenuQuest.toInventory(qMenuQuest.getCurrentPage() + 1)); - // return to QMenuCategory (category listing) + // return to QMenuCategory (category listing) } else if (Options.CATEGORIES_ENABLED.getBooleanValue() && qMenuQuest.getBackButtonLocation() == event.getSlot()) { QMenuCategory qMenuCategory = qMenuQuest.getSuperMenu(); buffer.add(event.getWhoClicked().getUniqueId()); event.getWhoClicked().openInventory(qMenuCategory.toInventory(1)); tracker.put(event.getWhoClicked().getUniqueId(), qMenuCategory); - // handle when player wishes to start a quest by matching the slot they clicked to a predetermined - // map which maps quests to slots so you do not have to compare the item stack + // handle when player wishes to start a quest by matching the slot they clicked to a predetermined + // map which maps quests to slots so you do not have to compare the item stack } else if (event.getSlot() < qMenuQuest.getPageSize() && qMenuQuest.getSlotsToMenu().containsKey(event.getSlot() + (((qMenuQuest .getCurrentPage()) - 1) * qMenuQuest.getPageSize()))) { if (Options.QUEST_AUTOSTART.getBooleanValue()) return; @@ -88,7 +95,7 @@ public class EventInventory implements Listener { } } - // **** MENU TYPE: CATEGORY LISTING **** + // **** MENU TYPE: CATEGORY LISTING **** } else if (qMenu instanceof QMenuCategory) { QMenuCategory qMenuCategory = (QMenuCategory) qMenu; @@ -101,7 +108,7 @@ public class EventInventory implements Listener { } } - // **** MENU TYPE: CANCELLING QUEST MENU **** + // **** MENU TYPE: CANCELLING QUEST MENU **** } else if (qMenu instanceof QMenuCancel) { QMenuCancel qMenuCancel = (QMenuCancel) qMenu; @@ -126,9 +133,7 @@ public class EventInventory implements Listener { // an anticipated menu change if (buffer.contains(event.getPlayer().getUniqueId())) { buffer.remove(event.getPlayer().getUniqueId()); - } else if (tracker.containsKey(event.getPlayer().getUniqueId())) { - tracker.remove(event.getPlayer().getUniqueId()); - } + } else tracker.remove(event.getPlayer().getUniqueId()); } } diff --git a/src/main/java/com/leonardobishop/quests/events/EventPlayerJoin.java b/src/main/java/com/leonardobishop/quests/events/EventPlayerJoin.java index 3ddf18cd..904bf619 100644 --- a/src/main/java/com/leonardobishop/quests/events/EventPlayerJoin.java +++ b/src/main/java/com/leonardobishop/quests/events/EventPlayerJoin.java @@ -2,10 +2,10 @@ package com.leonardobishop.quests.events; import com.leonardobishop.quests.Quests; import com.leonardobishop.quests.obj.Messages; +import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.scheduler.BukkitRunnable; import java.util.UUID; @@ -26,12 +26,7 @@ public class EventPlayerJoin implements Listener { } if (plugin.getUpdater().isUpdateReady() && event.getPlayer().hasPermission("quests.admin")) { // delay for a bit so they actually see the message - new BukkitRunnable() { - @Override - public void run() { - event.getPlayer().sendMessage(plugin.getUpdater().getMessage()); - } - }.runTaskLater(plugin, 50L); + Bukkit.getScheduler().runTaskLater(this.plugin, () -> event.getPlayer().sendMessage(plugin.getUpdater().getMessage()), 50L); } } diff --git a/src/main/java/com/leonardobishop/quests/obj/Items.java b/src/main/java/com/leonardobishop/quests/obj/Items.java index d26ae1eb..43647515 100644 --- a/src/main/java/com/leonardobishop/quests/obj/Items.java +++ b/src/main/java/com/leonardobishop/quests/obj/Items.java @@ -16,7 +16,7 @@ public enum Items { QUEST_CANCEL_YES("gui.quest-cancel-yes"), QUEST_CANCEL_NO("gui.quest-cancel-no"); - String path; + private final String path; Items(String path) { this.path = path; diff --git a/src/main/java/com/leonardobishop/quests/obj/Options.java b/src/main/java/com/leonardobishop/quests/obj/Options.java index 84230a7b..404c7fed 100644 --- a/src/main/java/com/leonardobishop/quests/obj/Options.java +++ b/src/main/java/com/leonardobishop/quests/obj/Options.java @@ -22,7 +22,7 @@ public enum Options { ALLOW_QUEST_CANCEL("options.allow-quest-cancel"), QUEST_AUTOSTART("options.quest-autostart"); - private String path; + private final String path; Options(String path) { this.path = path; diff --git a/src/main/java/com/leonardobishop/quests/obj/misc/QMenuCancel.java b/src/main/java/com/leonardobishop/quests/obj/misc/QMenuCancel.java index f705fe53..b00af493 100644 --- a/src/main/java/com/leonardobishop/quests/obj/misc/QMenuCancel.java +++ b/src/main/java/com/leonardobishop/quests/obj/misc/QMenuCancel.java @@ -17,10 +17,10 @@ import java.util.Map; public class QMenuCancel implements QMenu { - private HashMap slotsToQuestIds = new HashMap<>(); - private QMenuQuest superMenu; - private QPlayer owner; - private Quest quest; + private final HashMap slotsToQuestIds = new HashMap<>(); + private final QMenuQuest superMenu; + private final QPlayer owner; + private final Quest quest; public QMenuCancel(QPlayer owner, QMenuQuest superMenu, Quest quest) { this.owner = owner; diff --git a/src/main/java/com/leonardobishop/quests/obj/misc/QMenuCategory.java b/src/main/java/com/leonardobishop/quests/obj/misc/QMenuCategory.java index 38da8d09..3418831f 100644 --- a/src/main/java/com/leonardobishop/quests/obj/misc/QMenuCategory.java +++ b/src/main/java/com/leonardobishop/quests/obj/misc/QMenuCategory.java @@ -18,8 +18,8 @@ import java.util.List; public class QMenuCategory implements QMenu { private final int pageSize = 45; - private HashMap slotsToMenuQuest = new HashMap<>(); - private QPlayer owner; + private final HashMap slotsToMenuQuest = new HashMap<>(); + private final QPlayer owner; public QMenuCategory(QPlayer owner) { this.owner = owner; diff --git a/src/main/java/com/leonardobishop/quests/obj/misc/QMenuDaily.java b/src/main/java/com/leonardobishop/quests/obj/misc/QMenuDaily.java index 6c0f21e8..220f288a 100644 --- a/src/main/java/com/leonardobishop/quests/obj/misc/QMenuDaily.java +++ b/src/main/java/com/leonardobishop/quests/obj/misc/QMenuDaily.java @@ -15,13 +15,13 @@ import java.util.Map; public class QMenuDaily implements QMenu { - private HashMap slotsToQuestIds = new HashMap<>(); + private final HashMap slotsToQuestIds = new HashMap<>(); private int backButtonLocation = -1; private boolean backButtonEnabled = true; - private QMenuCategory superMenu; + private final QMenuCategory superMenu; private String categoryName; private final int pageSize = 45; - private QPlayer owner; + private final QPlayer owner; public QMenuDaily(QPlayer owner, QMenuCategory superMenu) { this.owner = owner; @@ -58,7 +58,7 @@ public class QMenuDaily implements QMenu { int pageMax = pageSize * page; String title = Options.GUITITLE_DAILY_QUESTS.toString(); - Inventory inventory = Bukkit.createInventory(null, 27, title); + // Inventory inventory = Bukkit.createInventory(null, 27, title); //TODO daily quests @@ -95,8 +95,8 @@ public class QMenuDaily implements QMenu { // } // invSlot++; // } - - return inventory; +// return inventory; + return Bukkit.createInventory(null, 27, title); } public ItemStack replaceItemStack(ItemStack is, Map placeholders) { @@ -114,4 +114,13 @@ public class QMenuDaily implements QMenu { newItemStack.setItemMeta(ism); return newItemStack; } + + //Implement too + public QMenuCategory getSuperMenu() { + return this.superMenu; + } + + public int getPageSize() { + return this.pageSize; + } } diff --git a/src/main/java/com/leonardobishop/quests/obj/misc/QMenuQuest.java b/src/main/java/com/leonardobishop/quests/obj/misc/QMenuQuest.java index 4d9c00fa..6e4cdb6d 100644 --- a/src/main/java/com/leonardobishop/quests/obj/misc/QMenuQuest.java +++ b/src/main/java/com/leonardobishop/quests/obj/misc/QMenuQuest.java @@ -19,16 +19,16 @@ import java.util.concurrent.TimeUnit; */ public class QMenuQuest implements QMenu { - private HashMap slotsToQuestIds = new HashMap<>(); + private final HashMap slotsToQuestIds = new HashMap<>(); private int backButtonLocation = -1; private int pagePrevLocation = -1; private int pageNextLocation = -1; private int currentPage = -1; private boolean backButtonEnabled = true; - private QMenuCategory superMenu; - private String categoryName; + private final QMenuCategory superMenu; + private final String categoryName; private final int pageSize = 45; - private QPlayer owner; + private final QPlayer owner; public QMenuQuest(QPlayer owner, String categoryName, QMenuCategory superMenu) { this.owner = owner; diff --git a/src/main/java/com/leonardobishop/quests/obj/misc/creator/QMenuCreator.java b/src/main/java/com/leonardobishop/quests/obj/misc/creator/QMenuCreator.java index 235bc23e..eb5300e7 100644 --- a/src/main/java/com/leonardobishop/quests/obj/misc/creator/QMenuCreator.java +++ b/src/main/java/com/leonardobishop/quests/obj/misc/creator/QMenuCreator.java @@ -1,21 +1,15 @@ package com.leonardobishop.quests.obj.misc.creator; -import com.leonardobishop.quests.player.QPlayer; import com.leonardobishop.quests.obj.misc.QMenu; +import com.leonardobishop.quests.player.QPlayer; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; public class QMenuCreator implements QMenu { - private QPlayer owner; + private final QPlayer owner; public QMenuCreator(QPlayer owner) { this.owner = owner; @@ -34,7 +28,7 @@ public class QMenuCreator implements QMenu { public Inventory toInventory(int page) { String title = "Quest Creator"; - Inventory inventory = Bukkit.createInventory(null, 9, title); +// Inventory inventory = Bukkit.createInventory(null, 9, title); // // ItemStack newQuest = new ItemStack(Material.STAINED_GLASS_PANE, 1, (short) 5); // ItemMeta newQuestM = newQuest.getItemMeta(); @@ -63,8 +57,9 @@ public class QMenuCreator implements QMenu { // inventory.setItem(2, newQuest); // inventory.setItem(4, editQuest); // inventory.setItem(6, removeQuest); +// return inventory; - return inventory; + return Bukkit.createInventory(null, 9, title); } } diff --git a/src/main/java/com/leonardobishop/quests/player/QPlayer.java b/src/main/java/com/leonardobishop/quests/player/QPlayer.java index c2f0d0d9..b93f0ae5 100644 --- a/src/main/java/com/leonardobishop/quests/player/QPlayer.java +++ b/src/main/java/com/leonardobishop/quests/player/QPlayer.java @@ -11,17 +11,14 @@ import com.leonardobishop.quests.quests.Quest; import org.bukkit.Bukkit; import org.bukkit.entity.Player; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.UUID; +import java.util.*; public class QPlayer { - private UUID uuid; - private QuestProgressFile questProgressFile; + private final UUID uuid; + private final QuestProgressFile questProgressFile; private boolean onlyDataLoaded; - private Quests plugin; + private final Quests plugin; public QPlayer(UUID uuid, QuestProgressFile questProgressFile, Quests plugin) { this(uuid, questProgressFile, false, plugin); @@ -151,4 +148,16 @@ public class QPlayer { public QuestProgressFile setQuestProgressFile() { return questProgressFile; } + + @Override //Used by java GC + public boolean equals(Object o) { + if (!(o instanceof QPlayer)) return false; + QPlayer qPlayer = (QPlayer) o; + return this.uuid == qPlayer.getUuid(); + } + + @Override //Used by java GC + public int hashCode() { + return uuid.hashCode() * 73; //uuid hash * prime number + } } diff --git a/src/main/java/com/leonardobishop/quests/player/QPlayerManager.java b/src/main/java/com/leonardobishop/quests/player/QPlayerManager.java index 27790f76..dbb41885 100644 --- a/src/main/java/com/leonardobishop/quests/player/QPlayerManager.java +++ b/src/main/java/com/leonardobishop/quests/player/QPlayerManager.java @@ -11,13 +11,13 @@ import java.util.*; public class QPlayerManager { - private Quests plugin; + private final Quests plugin; public QPlayerManager(Quests plugin) { this.plugin = plugin; } - private Map qPlayers = new HashMap<>(); + private final Map qPlayers = new HashMap<>(); public void addPlayer(QPlayer qPlayer) { qPlayers.put(qPlayer.getUuid(), qPlayer); @@ -49,7 +49,7 @@ public class QPlayerManager { File file = new File(plugin.getDataFolder() + File.separator + "playerdata" + File.separator + uuid.toString() + ".yml"); if (file.exists()) { YamlConfiguration data = YamlConfiguration.loadConfiguration(file); - if (data.contains("quest-progress")) { + if (data.isConfigurationSection("quest-progress")) { //Same job as "isSet" + it checks if is CfgSection for (String id : data.getConfigurationSection("quest-progress").getKeys(false)) { boolean started = data.getBoolean("quest-progress." + id + ".started"); boolean completed = data.getBoolean("quest-progress." + id + ".completed"); diff --git a/src/main/java/com/leonardobishop/quests/quests/Category.java b/src/main/java/com/leonardobishop/quests/quests/Category.java index 8b4a69e5..dd2683ed 100644 --- a/src/main/java/com/leonardobishop/quests/quests/Category.java +++ b/src/main/java/com/leonardobishop/quests/quests/Category.java @@ -10,7 +10,7 @@ public class Category { private String id; private ItemStack displayItem; private boolean permissionRequired; - private List registeredQuestIds = new ArrayList<>(); + private final List registeredQuestIds = new ArrayList<>(); public Category(String id, ItemStack displayItem, boolean permissionRequired) { this.id = id; diff --git a/src/main/java/com/leonardobishop/quests/quests/Quest.java b/src/main/java/com/leonardobishop/quests/quests/Quest.java index a54a06bd..ab02bd19 100644 --- a/src/main/java/com/leonardobishop/quests/quests/Quest.java +++ b/src/main/java/com/leonardobishop/quests/quests/Quest.java @@ -9,16 +9,16 @@ public class Quest implements Comparable { private Map tasks = new HashMap<>(); //TODO: maybe store by > since we never get task by id, but always get tasks by type. - private String id; - private QItemStack displayItem; - private List rewards; - private List requirements; - private List rewardString; - private List startString; - private boolean repeatable; - private boolean cooldownEnabled; - private int cooldown; - private int sortOrder; + private final String id; + private final QItemStack displayItem; + private final List rewards; + private final List requirements; + private final List rewardString; + private final List startString; + private final boolean repeatable; + private final boolean cooldownEnabled; + private final int cooldown; + private final int sortOrder; private boolean permissionRequired; private String categoryid; @@ -115,6 +115,6 @@ public class Quest implements Comparable { @Override public int compareTo(Quest quest) { - return(sortOrder - quest.sortOrder); + return (sortOrder - quest.sortOrder); } } diff --git a/src/main/java/com/leonardobishop/quests/quests/QuestManager.java b/src/main/java/com/leonardobishop/quests/quests/QuestManager.java index e26a99e3..35c13efc 100644 --- a/src/main/java/com/leonardobishop/quests/quests/QuestManager.java +++ b/src/main/java/com/leonardobishop/quests/quests/QuestManager.java @@ -6,7 +6,7 @@ import java.util.*; public class QuestManager { - private Quests plugin; + private final Quests plugin; public QuestManager(Quests plugin) { this.plugin = plugin; @@ -40,4 +40,7 @@ public class QuestManager { return null; } + public Quests getPlugin() { + return this.plugin; + } } diff --git a/src/main/java/com/leonardobishop/quests/quests/Task.java b/src/main/java/com/leonardobishop/quests/quests/Task.java index 55b6845f..eb9cd1b4 100644 --- a/src/main/java/com/leonardobishop/quests/quests/Task.java +++ b/src/main/java/com/leonardobishop/quests/quests/Task.java @@ -5,7 +5,7 @@ import java.util.Map; public class Task { - private Map configValues = new HashMap<>(); + private final Map configValues = new HashMap<>(); private String id; private String type; @@ -24,7 +24,7 @@ public class Task { } public Object getConfigValue(String key) { - return configValues.getOrDefault(key, null); + return configValues.getOrDefault(key, null); //??? this will return null without the need of `OrDefault(key, null)` } public Map getConfigValues() { diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/ConfigValue.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/ConfigValue.java index e4bfb08e..4232da32 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/ConfigValue.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/ConfigValue.java @@ -5,9 +5,9 @@ package com.leonardobishop.quests.quests.tasktypes; */ public final class ConfigValue { - private String key; - private boolean required; - private String description; + private final String key; + private final boolean required; + private final String description; public ConfigValue(String key, boolean required, String description) { this.key = key; diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/TaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/TaskType.java index d3d00962..66ce2938 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/TaskType.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/TaskType.java @@ -15,8 +15,8 @@ import java.util.List; */ public abstract class TaskType implements Listener { - private List quests = new ArrayList<>(); - private String type; + private final List quests = new ArrayList<>(); + private final String type; private String author; private String description; diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingCertainTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingCertainTaskType.java index a4b0d1d5..cc46906f 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingCertainTaskType.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingCertainTaskType.java @@ -85,6 +85,7 @@ public final class BuildingCertainTaskType extends TaskType { } } + @SuppressWarnings("deprecation") private boolean matchBlock(Task task, Block block) { Material material; Object configBlock = task.getConfigValue("block"); @@ -97,11 +98,7 @@ public final class BuildingCertainTaskType extends TaskType { short blockData = block.getData(); if (blockType.equals(material)) { - if (configData != null && (((int) blockData) != ((int) configData))) { - return false; - } else { - return true; - } + return configData == null || (((int) blockData) == ((int) configData)); } return false; } diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/CitizensDeliverTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/CitizensDeliverTaskType.java index 8510c30b..16bcdf2a 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/CitizensDeliverTaskType.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/CitizensDeliverTaskType.java @@ -10,6 +10,7 @@ import com.leonardobishop.quests.quests.Task; import com.leonardobishop.quests.quests.tasktypes.ConfigValue; import com.leonardobishop.quests.quests.tasktypes.TaskType; import net.citizensnpcs.api.event.NPCRightClickEvent; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; @@ -17,7 +18,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.inventory.ItemStack; -import org.bukkit.scheduler.BukkitRunnable; import java.util.ArrayList; import java.util.List; @@ -42,14 +42,10 @@ public final class CitizensDeliverTaskType extends TaskType { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onNPCClick(NPCRightClickEvent event) { - new BukkitRunnable() { - @Override - public void run() { - checkInventory(event.getClicker(), event.getNPC().getName()); - } - }.runTaskLater(Quests.get(), 1L); + Bukkit.getScheduler().runTaskLater(Quests.get(), () -> checkInventory(event.getClicker(), event.getNPC().getName()), 1L); } + @SuppressWarnings("deprecation") private void checkInventory(Player player, String citizenName) { QPlayer qPlayer = Quests.get().getPlayerManager().getPlayer(player.getUniqueId()); if (qPlayer == null) { diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/DealDamageTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/DealDamageTaskType.java index 8a9677c0..b587a1e1 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/DealDamageTaskType.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/DealDamageTaskType.java @@ -55,10 +55,9 @@ public final class DealDamageTaskType extends TaskType { continue; } - Double progressDamage; + double progressDamage; int damageNeeded = (int) task.getConfigValue("amount"); - Double damageNeededDouble = (double) damageNeeded; - + if (taskProgress.getProgress() == null) { progressDamage = 0.0; } else { @@ -67,7 +66,7 @@ public final class DealDamageTaskType extends TaskType { taskProgress.setProgress(progressDamage + damage); - if (((double) taskProgress.getProgress()) >= damageNeededDouble) { + if (((double) taskProgress.getProgress()) >= (double) damageNeeded) { taskProgress.setCompleted(true); } } diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FarmingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FarmingTaskType.java index b96a57ea..ce612417 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FarmingTaskType.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FarmingTaskType.java @@ -9,7 +9,6 @@ import com.leonardobishop.quests.quests.Quest; import com.leonardobishop.quests.quests.Task; import com.leonardobishop.quests.quests.tasktypes.ConfigValue; import com.leonardobishop.quests.quests.tasktypes.TaskType; -import org.apache.commons.lang.StringUtils; import org.bukkit.Material; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -34,6 +33,7 @@ public final class FarmingTaskType extends TaskType { return creatorConfigValues; } + @SuppressWarnings("deprecation") @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onBlockBreak(BlockBreakEvent event) { //TODO: finish this diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FishingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FishingTaskType.java index 0c04a98a..c724dec1 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FishingTaskType.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FishingTaskType.java @@ -9,8 +9,6 @@ import com.leonardobishop.quests.quests.Quest; import com.leonardobishop.quests.quests.Task; import com.leonardobishop.quests.quests.tasktypes.ConfigValue; import com.leonardobishop.quests.quests.tasktypes.TaskType; -import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/InventoryTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/InventoryTaskType.java index 97710a96..c30aacaf 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/InventoryTaskType.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/InventoryTaskType.java @@ -10,7 +10,7 @@ import com.leonardobishop.quests.quests.Quest; import com.leonardobishop.quests.quests.Task; import com.leonardobishop.quests.quests.tasktypes.ConfigValue; import com.leonardobishop.quests.quests.tasktypes.TaskType; -import org.apache.commons.lang.StringUtils; +import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -40,14 +40,10 @@ public final class InventoryTaskType extends TaskType { return creatorConfigValues; } + @SuppressWarnings("deprecation") @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onItemPickup(PlayerPickupItemEvent event) { - new BukkitRunnable() { - @Override - public void run() { - checkInventory(event.getPlayer()); - } - }.runTaskLater(Quests.get(), 1L); + Bukkit.getScheduler().runTaskLater(Quests.get(), () -> this.checkInventory(event.getPlayer()), 1L); } @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) @@ -60,6 +56,7 @@ public final class InventoryTaskType extends TaskType { }.runTaskLater(Quests.get(), 1L); } + @SuppressWarnings("deprecation") private void checkInventory(Player player) { QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(player.getUniqueId()); if (qPlayer == null) { diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MilkingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MilkingTaskType.java index beeae684..0f9cf1d2 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MilkingTaskType.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MilkingTaskType.java @@ -33,6 +33,7 @@ public final class MilkingTaskType extends TaskType { return creatorConfigValues; } + @SuppressWarnings("deprecation") @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onMilk(PlayerInteractEntityEvent event) { if (!(event.getRightClicked() instanceof Cow) || (event.getPlayer().getItemInHand().getType() != Material.BUCKET)) { diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningCertainTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningCertainTaskType.java index eebabd98..486c21d5 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningCertainTaskType.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningCertainTaskType.java @@ -87,6 +87,7 @@ public final class MiningCertainTaskType extends TaskType { } } + @SuppressWarnings("deprecation") private boolean matchBlock(Task task, Block block) { Material material; Object configBlock = task.getConfigValue("block"); @@ -99,11 +100,7 @@ public final class MiningCertainTaskType extends TaskType { short blockData = block.getData(); if (blockType.equals(material)) { - if (configData != null && (((int) blockData) != ((int) configData))) { - return false; - } else { - return true; - } + return configData == null || (((int) blockData) == ((int) configData)); } return false; } diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlaytimeTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlaytimeTaskType.java index e1fb9020..6ad6dd4c 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlaytimeTaskType.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlaytimeTaskType.java @@ -11,7 +11,6 @@ import com.leonardobishop.quests.quests.Task; import com.leonardobishop.quests.quests.tasktypes.TaskType; import org.bukkit.Bukkit; import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; public final class PlaytimeTaskType extends TaskType { @@ -21,35 +20,31 @@ public final class PlaytimeTaskType extends TaskType { } public void playTime() { - new BukkitRunnable() { - @Override - public void run() { - for (Player player : Bukkit.getOnlinePlayers()) { - QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(player.getUniqueId()); - QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); - for (Quest quest : PlaytimeTaskType.super.getRegisteredQuests()) { - if (questProgressFile.hasStartedQuest(quest)) { - QuestProgress questProgress = questProgressFile.getQuestProgress(quest); - for (Task task : quest.getTasksOfType(PlaytimeTaskType.super.getType())) { - TaskProgress taskProgress = questProgress.getTaskProgress(task.getId()); - if (taskProgress.isCompleted()) { - continue; - } - int minutes = (int) task.getConfigValue("minutes"); - if (taskProgress.getProgress() == null) { - taskProgress.setProgress(1); - } else { - taskProgress.setProgress((int) taskProgress.getProgress() + 1); - } - if (((int) taskProgress.getProgress()) >= minutes) { - taskProgress.setCompleted(true); - } + Bukkit.getScheduler().runTaskTimer(Quests.get(), () -> { + for (Player player : Bukkit.getOnlinePlayers()) { + QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(player.getUniqueId()); + QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); + for (Quest quest : PlaytimeTaskType.super.getRegisteredQuests()) { + if (questProgressFile.hasStartedQuest(quest)) { + QuestProgress questProgress = questProgressFile.getQuestProgress(quest); + for (Task task : quest.getTasksOfType(PlaytimeTaskType.super.getType())) { + TaskProgress taskProgress = questProgress.getTaskProgress(task.getId()); + if (taskProgress.isCompleted()) { + continue; + } + int minutes = (int) task.getConfigValue("minutes"); + if (taskProgress.getProgress() == null) { + taskProgress.setProgress(1); + } else { + taskProgress.setProgress((int) taskProgress.getProgress() + 1); + } + if (((int) taskProgress.getProgress()) >= minutes) { + taskProgress.setCompleted(true); } } } } } - }.runTaskTimer(Quests.get(), 1200L, 1200L); + }, 1200L, 1200L); } - } -- cgit v1.2.3-70-g09d2 From 581e2a180c71222cf76083a40f96f6615627f2e5 Mon Sep 17 00:00:00 2001 From: nicuch Date: Sat, 11 Jan 2020 00:40:07 +0200 Subject: Git toxicity --- .../java/com/leonardobishop/quests/Quests.java | 207 +++++++++++---------- 1 file changed, 104 insertions(+), 103 deletions(-) diff --git a/src/main/java/com/leonardobishop/quests/Quests.java b/src/main/java/com/leonardobishop/quests/Quests.java index 05fe5d71..9de7f007 100644 --- a/src/main/java/com/leonardobishop/quests/Quests.java +++ b/src/main/java/com/leonardobishop/quests/Quests.java @@ -1,6 +1,5 @@ package com.leonardobishop.quests; -import com.google.common.io.ByteStreams; import com.leonardobishop.quests.bstats.Metrics; import com.leonardobishop.quests.commands.CommandQuests; import com.leonardobishop.quests.events.EventInventory; @@ -32,7 +31,6 @@ import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPluginLoader; -import org.bukkit.scheduler.BukkitRunnable; import java.io.*; import java.util.ArrayList; @@ -42,18 +40,16 @@ import java.util.logging.Level; public class Quests extends JavaPlugin { - private static Quests instance; private static QuestManager questManager; private static QPlayerManager qPlayerManager; private static TaskTypeManager taskTypeManager; private static Updater updater; - private static Metrics metrics; private static Title title; private boolean brokenConfig = false; private QuestsConfigLoader questsConfigLoader; public static Quests get() { - return instance; + return (Quests) Bukkit.getPluginManager().getPlugin("Quests"); } public QuestManager getQuestManager() { @@ -117,11 +113,9 @@ public class Quests extends JavaPlugin { @Override public void onEnable() { - instance = this; taskTypeManager = new TaskTypeManager(this); questManager = new QuestManager(this); qPlayerManager = new QPlayerManager(this); - QuestsAPI.initialise(this); dataGenerator(); setupTitle(); @@ -131,112 +125,100 @@ public class Quests extends JavaPlugin { Bukkit.getPluginManager().registerEvents(new EventInventory(this), this); Bukkit.getPluginManager().registerEvents(new EventPlayerLeave(this), this); - metrics = new Metrics(this); + Metrics metrics = new Metrics(this); if (metrics.isEnabled()) { this.getLogger().log(Level.INFO, "Metrics started. This can be disabled at /plugins/bStats/config.yml."); } questsConfigLoader = new QuestsConfigLoader(Quests.this); - new BukkitRunnable() { - @Override - public void run() { - taskTypeManager.registerTaskType(new MiningTaskType()); - taskTypeManager.registerTaskType(new MiningCertainTaskType()); - taskTypeManager.registerTaskType(new BuildingTaskType()); - taskTypeManager.registerTaskType(new BuildingCertainTaskType()); - taskTypeManager.registerTaskType(new MobkillingTaskType()); - taskTypeManager.registerTaskType(new MobkillingCertainTaskType()); - taskTypeManager.registerTaskType(new PlayerkillingTaskType()); - taskTypeManager.registerTaskType(new FishingTaskType()); - taskTypeManager.registerTaskType(new InventoryTaskType()); - taskTypeManager.registerTaskType(new WalkingTaskType()); - taskTypeManager.registerTaskType(new TamingTaskType()); - taskTypeManager.registerTaskType(new MilkingTaskType()); - taskTypeManager.registerTaskType(new ShearingTaskType()); - taskTypeManager.registerTaskType(new PositionTaskType()); - taskTypeManager.registerTaskType(new PlaytimeTaskType()); - taskTypeManager.registerTaskType(new BrewingTaskType()); - taskTypeManager.registerTaskType(new ExpEarnTaskType()); - taskTypeManager.registerTaskType(new BreedingTaskType()); - taskTypeManager.registerTaskType(new EnchantingTaskType()); - taskTypeManager.registerTaskType(new DealDamageTaskType()); - // TODO: FIX - // taskTypeManager.registerTaskType(new BrewingCertainTaskType()); - if (Bukkit.getPluginManager().isPluginEnabled("ASkyBlock")) { - taskTypeManager.registerTaskType(new ASkyBlockLevelType()); - } - if (Bukkit.getPluginManager().isPluginEnabled("uSkyBlock")) { - taskTypeManager.registerTaskType(new uSkyBlockLevelType()); - } - if (Bukkit.getPluginManager().isPluginEnabled("Citizens")) { - taskTypeManager.registerTaskType(new CitizensDeliverTaskType()); - taskTypeManager.registerTaskType(new CitizensInteractTaskType()); - } - if (Bukkit.getPluginManager().isPluginEnabled("MythicMobs")) { - taskTypeManager.registerTaskType(new MythicMobsKillingType()); - } + Bukkit.getScheduler().runTask(this, () -> { + taskTypeManager.registerTaskType(new MiningTaskType()); + taskTypeManager.registerTaskType(new MiningCertainTaskType()); + taskTypeManager.registerTaskType(new BuildingTaskType()); + taskTypeManager.registerTaskType(new BuildingCertainTaskType()); + taskTypeManager.registerTaskType(new MobkillingTaskType()); + taskTypeManager.registerTaskType(new MobkillingCertainTaskType()); + taskTypeManager.registerTaskType(new PlayerkillingTaskType()); + taskTypeManager.registerTaskType(new FishingTaskType()); + taskTypeManager.registerTaskType(new InventoryTaskType()); + taskTypeManager.registerTaskType(new WalkingTaskType()); + taskTypeManager.registerTaskType(new TamingTaskType()); + taskTypeManager.registerTaskType(new MilkingTaskType()); + taskTypeManager.registerTaskType(new ShearingTaskType()); + taskTypeManager.registerTaskType(new PositionTaskType()); + taskTypeManager.registerTaskType(new PlaytimeTaskType()); + taskTypeManager.registerTaskType(new BrewingTaskType()); + taskTypeManager.registerTaskType(new ExpEarnTaskType()); + taskTypeManager.registerTaskType(new BreedingTaskType()); + taskTypeManager.registerTaskType(new EnchantingTaskType()); + taskTypeManager.registerTaskType(new DealDamageTaskType()); + // TODO: FIX + // taskTypeManager.registerTaskType(new BrewingCertainTaskType()); + if (Bukkit.getPluginManager().isPluginEnabled("ASkyBlock")) { + taskTypeManager.registerTaskType(new ASkyBlockLevelType()); + } + if (Bukkit.getPluginManager().isPluginEnabled("uSkyBlock")) { + taskTypeManager.registerTaskType(new uSkyBlockLevelType()); + } + if (Bukkit.getPluginManager().isPluginEnabled("Citizens")) { + taskTypeManager.registerTaskType(new CitizensDeliverTaskType()); + taskTypeManager.registerTaskType(new CitizensInteractTaskType()); + } + if (Bukkit.getPluginManager().isPluginEnabled("MythicMobs")) { + taskTypeManager.registerTaskType(new MythicMobsKillingType()); + } - reloadQuests(); - if (!questsConfigLoader.getBrokenFiles().isEmpty()) { - Quests.this.getLogger().warning("Quests has failed to load the following files:"); - for (Map.Entry entry : questsConfigLoader.getBrokenFiles().entrySet()) { - Quests.this.getLogger().warning(" - " + entry.getKey() + ": " + entry.getValue().getMessage()); - } - Quests.this.getLogger().warning(ChatColor.GRAY.toString() + ChatColor.ITALIC + "If this is your first time using Quests, please delete the Quests folder and RESTART (not reload!) the server."); + reloadQuests(); + if (!questsConfigLoader.getBrokenFiles().isEmpty()) { + Quests.this.getLogger().warning("Quests has failed to load the following files:"); + for (Map.Entry entry : questsConfigLoader.getBrokenFiles().entrySet()) { + Quests.this.getLogger().warning(" - " + entry.getKey() + ": " + entry.getValue().getMessage()); } + Quests.this.getLogger().warning(ChatColor.GRAY.toString() + ChatColor.ITALIC + "If this is your first time using Quests, please delete the Quests folder and RESTART (not reload!) the server."); + } - for (Player player : Bukkit.getOnlinePlayers()) { - qPlayerManager.loadPlayer(player.getUniqueId()); - } + for (Player player : Bukkit.getOnlinePlayers()) { + qPlayerManager.loadPlayer(player.getUniqueId()); } - }.runTask(this); - new BukkitRunnable() { - @Override - public void run() { - for (QPlayer qPlayer : qPlayerManager.getQPlayers()) { - if (qPlayer.isOnlyDataLoaded()) { - continue; - } - qPlayer.getQuestProgressFile().saveToDisk(false); + }); + Bukkit.getScheduler().runTaskTimerAsynchronously(this, () -> { + for (QPlayer qPlayer : qPlayerManager.getQPlayers()) { + if (qPlayer.isOnlyDataLoaded()) { + continue; } + qPlayer.getQuestProgressFile().saveToDisk(false); } - }.runTaskTimerAsynchronously(this, 12000L, 12000L); - new BukkitRunnable() { - @Override - public void run() { - for (QPlayer qPlayer : qPlayerManager.getQPlayers()) { - if (qPlayer.isOnlyDataLoaded()) { - continue; - } - QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); - for (Map.Entry entry : Quests.this.getQuestManager().getQuests().entrySet()) { - Quest quest = entry.getValue(); - QuestProgress questProgress = questProgressFile.getQuestProgress(quest); - if (questProgressFile.hasStartedQuest(quest)) { - boolean complete = true; - for (Task task : quest.getTasks()) { - TaskProgress taskProgress; - if ((taskProgress = questProgress.getTaskProgress(task.getId())) == null || !taskProgress.isCompleted()) { - complete = false; - break; - } - } - if (complete) { - questProgressFile.completeQuest(quest); + }, 12000L, 12000L); + Bukkit.getScheduler().runTaskTimer(this, () -> { + for (QPlayer qPlayer : qPlayerManager.getQPlayers()) { + if (qPlayer.isOnlyDataLoaded()) { + continue; + } + QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); + for (Map.Entry entry : Quests.this.getQuestManager().getQuests().entrySet()) { + Quest quest = entry.getValue(); + QuestProgress questProgress = questProgressFile.getQuestProgress(quest); + if (questProgressFile.hasStartedQuest(quest)) { + boolean complete = true; + for (Task task : quest.getTasks()) { + TaskProgress taskProgress; + if ((taskProgress = questProgress.getTaskProgress(task.getId())) == null || !taskProgress.isCompleted()) { + complete = false; + break; } } + if (complete) { + questProgressFile.completeQuest(quest); + } } } } - }.runTaskTimer(this, 20L, 20L); - new BukkitRunnable() { - @Override - public void run() { - updater = new Updater(Quests.this); - updater.check(); - } - }.runTaskAsynchronously(this); + }, 20L, 20L); + Bukkit.getScheduler().runTaskAsynchronously(this, () -> { + updater = new Updater(Quests.this); + updater.check(); + }); } @Override @@ -261,13 +243,14 @@ public class Quests extends JavaPlugin { return getItemStack(config.getConfigurationSection(path)); } + @SuppressWarnings("deprecation") public ItemStack getItemStack(ConfigurationSection config) { String cName = config.getString("name", "name"); String cType = config.getString("type", "type"); List cLore = config.getStringList("lore"); String name; - Material type = null; + Material type; int data = 0; List lore = new ArrayList<>(); if (cLore != null) { @@ -283,7 +266,11 @@ public class Quests extends JavaPlugin { type = Material.STONE; } - ItemStack is = new ItemStack(type, 1, (short) data); + ItemStack is; + if (data == 0) + is = new ItemStack(type, 1); + else + is = new ItemStack(type, 1, (short) data); ItemMeta ism = is.getItemMeta(); ism.setLore(lore); ism.setDisplayName(name); @@ -328,9 +315,16 @@ public class Quests extends JavaPlugin { if (!config.exists()) { try { config.createNewFile(); - try (InputStream in = Quests.class.getClassLoader().getResourceAsStream("config.yml")) { + //try (InputStream in = Quests.class.getClassLoader().getResourceAsStream("config.yml")) { + try (InputStream in = this.getResource("config.yml")) { OutputStream out = new FileOutputStream(config); - ByteStreams.copy(in, out); + byte[] buffer = new byte[1024]; + int lenght = in.read(buffer); + while (lenght != -1) { + out.write(buffer, 0, lenght); + lenght = in.read(buffer); + } + //ByteStreams.copy(in, out); BETA method, data losses ahead } catch (IOException e) { e.printStackTrace(); } @@ -339,7 +333,7 @@ public class Quests extends JavaPlugin { } } - File questsDirectory = new File(String.valueOf(this.getDataFolder() + File.separator + "quests")); + File questsDirectory = new File(this.getDataFolder() + File.separator + "quests"); if (!questsDirectory.exists() && !questsDirectory.isDirectory()) { questsDirectory.mkdir(); @@ -356,9 +350,16 @@ public class Quests extends JavaPlugin { File file = new File(this.getDataFolder() + File.separator + "quests" + File.separator + name); try { file.createNewFile(); - try (InputStream in = Quests.class.getClassLoader().getResourceAsStream("quests/" + name)) { + //try (InputStream in = Quests.class.getClassLoader().getResourceAsStream("quests/" + name)) { + try (InputStream in = this.getResource("quests/" + name)) { OutputStream out = new FileOutputStream(file); - ByteStreams.copy(in, out); + byte[] buffer = new byte[1024]; + int lenght = in.read(buffer); + while (lenght != -1) { + out.write(buffer, 0, lenght); + lenght = in.read(buffer); + } + //ByteStreams.copy(in, out); BETA method, data losses ahead } catch (IOException e) { e.printStackTrace(); } -- cgit v1.2.3-70-g09d2 From eb54393489d4b1e05a20381bc08d4d6c94b6d776 Mon Sep 17 00:00:00 2001 From: nicuch Date: Sat, 11 Jan 2020 00:44:46 +0200 Subject: Git toxicity x2 --- .../quests/events/EventPlayerLeave.java | 17 +---- .../questprogressfile/QuestProgressFile.java | 74 ++++++++++------------ 2 files changed, 37 insertions(+), 54 deletions(-) diff --git a/src/main/java/com/leonardobishop/quests/events/EventPlayerLeave.java b/src/main/java/com/leonardobishop/quests/events/EventPlayerLeave.java index 6bcee1f0..7f7f07a2 100644 --- a/src/main/java/com/leonardobishop/quests/events/EventPlayerLeave.java +++ b/src/main/java/com/leonardobishop/quests/events/EventPlayerLeave.java @@ -1,16 +1,16 @@ package com.leonardobishop.quests.events; import com.leonardobishop.quests.Quests; +import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.scheduler.BukkitRunnable; import java.util.UUID; public class EventPlayerLeave implements Listener { - private Quests plugin; + private final Quests plugin; public EventPlayerLeave(Quests plugin) { this.plugin = plugin; @@ -19,18 +19,7 @@ public class EventPlayerLeave implements Listener { @EventHandler public void onEvent(PlayerQuitEvent event) { UUID playerUuid = event.getPlayer().getUniqueId(); - new BukkitRunnable() { - @Override - public void run() { - plugin.getPlayerManager().getPlayer(playerUuid).getQuestProgressFile().saveToDisk(false); - new BukkitRunnable() { - @Override - public void run() { - plugin.getPlayerManager().removePlayer(playerUuid); - } - }.runTask(plugin); - } - }.runTaskAsynchronously(plugin); + Bukkit.getScheduler().runTaskAsynchronously(this.plugin, () -> plugin.getPlayerManager().removePlayer(playerUuid)); } } diff --git a/src/main/java/com/leonardobishop/quests/player/questprogressfile/QuestProgressFile.java b/src/main/java/com/leonardobishop/quests/player/questprogressfile/QuestProgressFile.java index 3e6c665a..55bc8ff3 100644 --- a/src/main/java/com/leonardobishop/quests/player/questprogressfile/QuestProgressFile.java +++ b/src/main/java/com/leonardobishop/quests/player/questprogressfile/QuestProgressFile.java @@ -9,7 +9,6 @@ import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; import java.io.File; import java.io.IOException; @@ -18,12 +17,12 @@ import java.util.concurrent.TimeUnit; public class QuestProgressFile { - private Map questProgress = new HashMap<>(); - private UUID player; - private Quests plugin; + private final Map questProgress = new HashMap<>(); + private final UUID playerUUID; + private final Quests plugin; public QuestProgressFile(UUID player, Quests plugin) { - this.player = player; + this.playerUUID = player; this.plugin = plugin; } @@ -35,8 +34,8 @@ public class QuestProgressFile { questProgress.setCompleted(true); questProgress.setCompletedBefore(true); questProgress.setCompletionDate(System.currentTimeMillis()); - if (Bukkit.getPlayer(player) != null) { - Player player = Bukkit.getPlayer(this.player); + if (Bukkit.getPlayer(playerUUID) != null) { + Player player = Bukkit.getPlayer(this.playerUUID); Bukkit.getServer().getScheduler().runTask(plugin, () -> { for (String s : quest.getRewards()) { Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), s.replace("{player}", player.getName())); @@ -65,15 +64,15 @@ public class QuestProgressFile { * no permission, 7 if no permission for category */ public int canStartQuest(Quest quest) { - Player p = Bukkit.getPlayer(player); + Player p = Bukkit.getPlayer(playerUUID); if (getStartedQuests().size() >= Options.QUESTS_START_LIMIT.getIntValue()) { return 1; } QuestProgress questProgress = getQuestProgress(quest); if (!quest.isRepeatable() && questProgress.isCompletedBefore()) { - if (player != null) { - - } + //if (playerUUID != null) { + // ??? + //} return 2; } long cooldown = getCooldownFor(quest); @@ -87,7 +86,7 @@ public class QuestProgressFile { return 5; } if (quest.isPermissionRequired()) { - if (player != null) { + if (playerUUID != null) { if (!p.hasPermission("quests.quest." + quest.getId())) { return 6; } @@ -97,7 +96,7 @@ public class QuestProgressFile { } if (quest.getCategoryId() != null && plugin.getQuestManager().getCategoryById(quest.getCategoryId()) != null && plugin.getQuestManager() .getCategoryById(quest.getCategoryId()).isPermissionRequired()) { - if (player != null) { + if (playerUUID != null) { if (!p.hasPermission("quests.category." + quest.getCategoryId())) { return 7; } @@ -118,7 +117,7 @@ public class QuestProgressFile { * no permission, 7 if no permission for category, 8 if other */ public int startQuest(Quest quest) { - Player p = Bukkit.getPlayer(player); + Player p = Bukkit.getPlayer(playerUUID); int code = canStartQuest(quest); if (p != null) { switch (code) { @@ -157,8 +156,8 @@ public class QuestProgressFile { taskProgress.setProgress(null); } questProgress.setCompleted(false); - if (Bukkit.getPlayer(player) != null) { - Player player = Bukkit.getPlayer(getPlayer()); + if (Bukkit.getPlayer(playerUUID) != null) { + Player player = Bukkit.getPlayer(getPlayerUUID()); player.sendMessage(Messages.QUEST_START.getMessage().replace("{quest}", quest.getDisplayNameStripped())); if (Options.TITLES_ENABLED.getBooleanValue()) { plugin.getTitle().sendTitle(player, Messages.TITLE_QUEST_START_TITLE.getMessage().replace("{quest}", quest @@ -176,8 +175,8 @@ public class QuestProgressFile { public boolean cancelQuest(Quest quest) { QuestProgress questProgress = getQuestProgress(quest); if (!questProgress.isStarted()) { - if (Bukkit.getPlayer(player) != null) { - Bukkit.getPlayer(getPlayer()).sendMessage(Messages.QUEST_CANCEL_NOTSTARTED.getMessage()); + if (Bukkit.getPlayer(playerUUID) != null) { + Bukkit.getPlayer(getPlayerUUID()).sendMessage(Messages.QUEST_CANCEL_NOTSTARTED.getMessage()); } return false; } @@ -185,8 +184,8 @@ public class QuestProgressFile { for (TaskProgress taskProgress : questProgress.getTaskProgress()) { taskProgress.setProgress(null); } - if (Bukkit.getPlayer(player) != null) { - Bukkit.getPlayer(getPlayer()).sendMessage(Messages.QUEST_CANCEL.getMessage().replace("{quest}", quest.getDisplayNameStripped())); + if (Bukkit.getPlayer(playerUUID) != null) { + Bukkit.getPlayer(getPlayerUUID()).sendMessage(Messages.QUEST_CANCEL.getMessage().replace("{quest}", quest.getDisplayNameStripped())); } return true; } @@ -211,15 +210,11 @@ public class QuestProgressFile { public boolean hasStartedQuest(Quest quest) { if (!Options.QUEST_AUTOSTART.getBooleanValue()) { - if (hasQuestProgress(quest) && getQuestProgress(quest).isStarted()) { - return true; - } + return hasQuestProgress(quest) && getQuestProgress(quest).isStarted(); } else { int response = canStartQuest(quest); - if (response == 0 || response == 5) return true; + return response == 0 || response == 5; } - - return false; } public long getCooldownFor(Quest quest) { @@ -248,8 +243,8 @@ public class QuestProgressFile { return true; } - public UUID getPlayer() { - return player; + public UUID getPlayerUUID() { + return playerUUID; } public QuestProgress getQuestProgress(Quest quest) { @@ -264,9 +259,9 @@ public class QuestProgressFile { public boolean generateBlankQuestProgress(String questid) { if (plugin.getQuestManager().getQuestById(questid) != null) { Quest quest = plugin.getQuestManager().getQuestById(questid); - QuestProgress questProgress = new QuestProgress(quest.getId(), false, false, 0, player, false, false); + QuestProgress questProgress = new QuestProgress(quest.getId(), false, false, 0, playerUUID, false, false); for (Task task : quest.getTasks()) { - TaskProgress taskProgress = new TaskProgress(task.getId(), null, player, false, false); + TaskProgress taskProgress = new TaskProgress(task.getId(), null, playerUUID, false, false); questProgress.addTaskProgress(taskProgress); } @@ -281,7 +276,7 @@ public class QuestProgressFile { if (!directory.exists() && !directory.isDirectory()) { directory.mkdirs(); } - File file = new File(plugin.getDataFolder() + File.separator + "playerdata" + File.separator + player.toString() + ".yml"); + File file = new File(plugin.getDataFolder() + File.separator + "playerdata" + File.separator + playerUUID.toString() + ".yml"); if (!file.exists()) { try { file.createNewFile(); @@ -311,18 +306,17 @@ public class QuestProgressFile { try { data.save(file); if (disable) - for (QuestProgress questProgress : questProgress.values()) { - questProgress.resetModified(); + synchronized (this.questProgress) { + for (QuestProgress questProgress : questProgress.values()) { + questProgress.resetModified(); + } } else - new BukkitRunnable() { - @Override - public void run() { - for (QuestProgress questProgress : questProgress.values()) { - questProgress.resetModified(); - } + Bukkit.getScheduler().runTask(this.plugin, () -> { + for (QuestProgress questProgress : questProgress.values()) { + questProgress.resetModified(); } - }.runTask(plugin); + }); } catch (IOException e) { e.printStackTrace(); } -- cgit v1.2.3-70-g09d2 From b3b48cd3b2bdb4852956df2292fbff0f5bce2d22 Mon Sep 17 00:00:00 2001 From: nicuch Date: Sat, 11 Jan 2020 20:18:26 +0200 Subject: Data loss fixed. ONE fking line of code. --- src/main/java/com/leonardobishop/quests/player/QPlayerManager.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/leonardobishop/quests/player/QPlayerManager.java b/src/main/java/com/leonardobishop/quests/player/QPlayerManager.java index dbb41885..31f982e7 100644 --- a/src/main/java/com/leonardobishop/quests/player/QPlayerManager.java +++ b/src/main/java/com/leonardobishop/quests/player/QPlayerManager.java @@ -28,6 +28,7 @@ public class QPlayerManager { } public void removePlayer(UUID uuid) { + this.getPlayer(uuid).getQuestProgressFile().saveToDisk(false); //WHY THE HECK THE DATA WAS NOT SAVED??? qPlayers.remove(uuid); } -- cgit v1.2.3-70-g09d2 From 8cbead974608635022ea342889c992cd494a566e Mon Sep 17 00:00:00 2001 From: nicuch Date: Sat, 11 Jan 2020 20:42:33 +0200 Subject: Don't clear the data. --- .../quests/player/questprogressfile/QuestProgressFile.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/leonardobishop/quests/player/questprogressfile/QuestProgressFile.java b/src/main/java/com/leonardobishop/quests/player/questprogressfile/QuestProgressFile.java index 55bc8ff3..043deadf 100644 --- a/src/main/java/com/leonardobishop/quests/player/questprogressfile/QuestProgressFile.java +++ b/src/main/java/com/leonardobishop/quests/player/questprogressfile/QuestProgressFile.java @@ -286,7 +286,7 @@ public class QuestProgressFile { } YamlConfiguration data = YamlConfiguration.loadConfiguration(file); - data.set("quest-progress", null); + //data.set("quest-progress", null); for (QuestProgress questProgress : questProgress.values()) { if (!questProgress.isWorthSaving()) { continue; -- cgit v1.2.3-70-g09d2 From a169487d9e79e7540311a87be97108092c24b8e4 Mon Sep 17 00:00:00 2001 From: nicuch Date: Sat, 11 Jan 2020 21:09:03 +0200 Subject: Missunderstand :) --- src/main/java/com/leonardobishop/quests/Quests.java | 2 +- src/main/java/com/leonardobishop/quests/player/QPlayerManager.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/leonardobishop/quests/Quests.java b/src/main/java/com/leonardobishop/quests/Quests.java index 9de7f007..7ec6d52d 100644 --- a/src/main/java/com/leonardobishop/quests/Quests.java +++ b/src/main/java/com/leonardobishop/quests/Quests.java @@ -214,7 +214,7 @@ public class Quests extends JavaPlugin { } } } - }, 20L, 20L); + }, 10 * 20L, 10 * 20L); //Data is saved every 10 seconds in case of crash; the player data is also saved when the player leaves the server Bukkit.getScheduler().runTaskAsynchronously(this, () -> { updater = new Updater(Quests.this); updater.check(); diff --git a/src/main/java/com/leonardobishop/quests/player/QPlayerManager.java b/src/main/java/com/leonardobishop/quests/player/QPlayerManager.java index 31f982e7..2f744ab5 100644 --- a/src/main/java/com/leonardobishop/quests/player/QPlayerManager.java +++ b/src/main/java/com/leonardobishop/quests/player/QPlayerManager.java @@ -28,7 +28,7 @@ public class QPlayerManager { } public void removePlayer(UUID uuid) { - this.getPlayer(uuid).getQuestProgressFile().saveToDisk(false); //WHY THE HECK THE DATA WAS NOT SAVED??? + this.getPlayer(uuid).getQuestProgressFile().saveToDisk(false); qPlayers.remove(uuid); } -- cgit v1.2.3-70-g09d2