From 7927806d418d5eddaa4bf38ccd8730ee48b58ed0 Mon Sep 17 00:00:00 2001 From: PikaMug Date: Wed, 29 May 2019 11:48:47 -0400 Subject: [PATCH] Remove native GPS support. Add new Bukkit Event API. Bump version number --- dist/pom.xml | 2 +- main/pom.xml | 7 +- .../me/blackvein/quests/CustomObjective.java | 2 +- .../blackvein/quests/CustomRequirement.java | 2 +- .../me/blackvein/quests/CustomReward.java | 2 +- .../me/blackvein/quests/DenizenTrigger.java | 2 +- .../me/blackvein/quests/Dependencies.java | 13 +- .../me/blackvein/quests/NpcEffectThread.java | 2 +- .../java/me/blackvein/quests/Options.java | 2 +- .../java/me/blackvein/quests/Planner.java | 2 +- .../main/java/me/blackvein/quests/Quest.java | 101 ++-- .../java/me/blackvein/quests/QuestData.java | 2 +- .../me/blackvein/quests/QuestFactory.java | 11 +- .../java/me/blackvein/quests/QuestMob.java | 2 +- .../java/me/blackvein/quests/Quester.java | 463 +++++------------- .../main/java/me/blackvein/quests/Quests.java | 148 +----- .../me/blackvein/quests/Requirements.java | 2 +- .../java/me/blackvein/quests/Rewards.java | 2 +- .../java/me/blackvein/quests/Settings.java | 2 +- .../main/java/me/blackvein/quests/Stage.java | 2 +- .../me/blackvein/quests/actions/Action.java | 2 +- .../quests/actions/ActionFactory.java | 22 +- .../blackvein/quests/events/QuestsEvent.java | 12 + .../quests/events/quest/QuestEvent.java | 41 ++ .../quests/events/quest/QuestQuitEvent.java | 61 +++ .../quests/events/quest/QuestTakeEvent.java | 57 +++ .../quests/events/quester/QuesterEvent.java | 42 ++ .../quester/QuesterPostChangeStageEvent.java | 61 +++ .../QuesterPostCompleteQuestEvent.java | 48 ++ .../quester/QuesterPostFailQuestEvent.java | 48 ++ .../quester/QuesterPostStartQuestEvent.java | 48 ++ .../quester/QuesterPreChangeStageEvent.java | 73 +++ .../quester/QuesterPreCompleteQuestEvent.java | 60 +++ .../quester/QuesterPreFailQuestEvent.java | 60 +++ .../quester/QuesterPreStartQuestEvent.java | 60 +++ .../exceptions/InvalidStageException.java | 2 +- .../quests/listeners/CmdExecutor.java | 42 +- .../quests/listeners/DungeonsListener.java | 2 +- .../quests/listeners/NpcListener.java | 4 +- .../quests/listeners/PartiesListener.java | 2 +- .../quests/listeners/PlayerListener.java | 2 +- .../quests/particle/ParticleProvider.java | 3 +- .../particle/ParticleProvider_Bukkit.java | 3 +- .../quests/particle/PreBuiltParticle.java | 3 +- .../quests/prompts/BlocksPrompt.java | 24 +- .../quests/prompts/CreateStagePrompt.java | 2 +- .../quests/prompts/DateTimePrompt.java | 12 + .../quests/prompts/ItemStackPrompt.java | 15 +- .../blackvein/quests/prompts/ItemsPrompt.java | 16 +- .../blackvein/quests/prompts/MobsPrompt.java | 17 +- .../blackvein/quests/prompts/NPCsPrompt.java | 2 +- .../quests/prompts/OptionsPrompt.java | 2 +- .../quests/prompts/PlannerPrompt.java | 2 +- .../quests/prompts/QuestAcceptPrompt.java | 2 +- .../quests/prompts/RequirementsPrompt.java | 2 +- .../quests/prompts/RewardsPrompt.java | 6 +- .../quests/prompts/StagesPrompt.java | 2 +- .../blackvein/quests/timers/ActionTimer.java | 2 +- .../blackvein/quests/timers/StageTimer.java | 2 +- .../java/me/blackvein/quests/util/CK.java | 2 +- .../me/blackvein/quests/util/ItemUtil.java | 130 ++++- .../java/me/blackvein/quests/util/Lang.java | 2 +- .../me/blackvein/quests/util/LocaleQuery.java | 2 +- .../me/blackvein/quests/util/MiscUtil.java | 136 ++++- .../blackvein/quests/util/RomanNumeral.java | 3 +- .../blackvein/quests/util/WorldGuardAPI.java | 2 +- main/src/main/resources/config.yml | 3 +- pom.xml | 4 +- v1_8_R1/pom.xml | 2 +- v1_8_R2/pom.xml | 2 +- v1_8_R3/pom.xml | 2 +- 71 files changed, 1217 insertions(+), 710 deletions(-) create mode 100644 main/src/main/java/me/blackvein/quests/events/QuestsEvent.java create mode 100644 main/src/main/java/me/blackvein/quests/events/quest/QuestEvent.java create mode 100644 main/src/main/java/me/blackvein/quests/events/quest/QuestQuitEvent.java create mode 100644 main/src/main/java/me/blackvein/quests/events/quest/QuestTakeEvent.java create mode 100644 main/src/main/java/me/blackvein/quests/events/quester/QuesterEvent.java create mode 100644 main/src/main/java/me/blackvein/quests/events/quester/QuesterPostChangeStageEvent.java create mode 100644 main/src/main/java/me/blackvein/quests/events/quester/QuesterPostCompleteQuestEvent.java create mode 100644 main/src/main/java/me/blackvein/quests/events/quester/QuesterPostFailQuestEvent.java create mode 100644 main/src/main/java/me/blackvein/quests/events/quester/QuesterPostStartQuestEvent.java create mode 100644 main/src/main/java/me/blackvein/quests/events/quester/QuesterPreChangeStageEvent.java create mode 100644 main/src/main/java/me/blackvein/quests/events/quester/QuesterPreCompleteQuestEvent.java create mode 100644 main/src/main/java/me/blackvein/quests/events/quester/QuesterPreFailQuestEvent.java create mode 100644 main/src/main/java/me/blackvein/quests/events/quester/QuesterPreStartQuestEvent.java diff --git a/dist/pom.xml b/dist/pom.xml index f2f6b2e98..bbc26e7b5 100644 --- a/dist/pom.xml +++ b/dist/pom.xml @@ -5,7 +5,7 @@ me.blackvein.quests quests-parent - 3.6.9 + 3.7.0 quests-dist pom diff --git a/main/pom.xml b/main/pom.xml index 2fece45f1..1fd59a184 100644 --- a/main/pom.xml +++ b/main/pom.xml @@ -4,7 +4,7 @@ me.blackvein.quests quests-parent - 3.6.9 + 3.7.0 quests-main @@ -112,11 +112,6 @@ PhatLoots -SNAPSHOT - - com.github.PikaMug - GPS - -SNAPSHOT - com.github.DRE2N DungeonsXL diff --git a/main/src/main/java/me/blackvein/quests/CustomObjective.java b/main/src/main/java/me/blackvein/quests/CustomObjective.java index 9457764e9..5ad2ead0c 100644 --- a/main/src/main/java/me/blackvein/quests/CustomObjective.java +++ b/main/src/main/java/me/blackvein/quests/CustomObjective.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/CustomRequirement.java b/main/src/main/java/me/blackvein/quests/CustomRequirement.java index e5926397f..c4547ba50 100644 --- a/main/src/main/java/me/blackvein/quests/CustomRequirement.java +++ b/main/src/main/java/me/blackvein/quests/CustomRequirement.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/CustomReward.java b/main/src/main/java/me/blackvein/quests/CustomReward.java index 52a88fcf3..1366217fd 100644 --- a/main/src/main/java/me/blackvein/quests/CustomReward.java +++ b/main/src/main/java/me/blackvein/quests/CustomReward.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/DenizenTrigger.java b/main/src/main/java/me/blackvein/quests/DenizenTrigger.java index db75d51e5..aeb644896 100644 --- a/main/src/main/java/me/blackvein/quests/DenizenTrigger.java +++ b/main/src/main/java/me/blackvein/quests/DenizenTrigger.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/Dependencies.java b/main/src/main/java/me/blackvein/quests/Dependencies.java index 25aba36de..60aa48c6f 100644 --- a/main/src/main/java/me/blackvein/quests/Dependencies.java +++ b/main/src/main/java/me/blackvein/quests/Dependencies.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -28,8 +28,6 @@ import com.alessiodp.parties.api.interfaces.PartiesAPI; import com.codisimus.plugins.phatloots.PhatLoots; import com.gmail.nossr50.mcMMO; import com.herocraftonline.heroes.Heroes; -import com.live.bemmamin.gps.Vars; -import com.live.bemmamin.gps.api.GPSAPI; import de.erethon.dungeonsxl.DungeonsXL; @@ -40,7 +38,6 @@ public class Dependencies { private static Permission permission = null; private static WorldGuardAPI worldGuardApi = null; private static mcMMO mcmmo = null; - private static GPSAPI gpsapi = null; private static Heroes heroes = null; private static PhatLoots phatLoots = null; private static PlaceholderAPIPlugin placeholder = null; @@ -70,10 +67,6 @@ public class Dependencies { return mcmmo; } - public GPSAPI getGpsApi() { - return gpsapi; - } - public Heroes getHeroes() { return heroes; } @@ -138,10 +131,6 @@ public class Dependencies { if (isPluginAvailable("mcMMO")) { mcmmo = (mcMMO) plugin.getServer().getPluginManager().getPlugin("mcMMO"); } - if (isPluginAvailable("GPS") && plugin.getSettings().canUseGPS()) { - gpsapi = new GPSAPI(plugin); - Vars.getInstance().setMaxDistanceToEntry(9999.0); - } if (isPluginAvailable("Heroes")) { heroes = (Heroes) plugin.getServer().getPluginManager().getPlugin("Heroes"); } diff --git a/main/src/main/java/me/blackvein/quests/NpcEffectThread.java b/main/src/main/java/me/blackvein/quests/NpcEffectThread.java index b058dc621..eefa167ee 100644 --- a/main/src/main/java/me/blackvein/quests/NpcEffectThread.java +++ b/main/src/main/java/me/blackvein/quests/NpcEffectThread.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/Options.java b/main/src/main/java/me/blackvein/quests/Options.java index 305ac8b65..315bd79a0 100644 --- a/main/src/main/java/me/blackvein/quests/Options.java +++ b/main/src/main/java/me/blackvein/quests/Options.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/Planner.java b/main/src/main/java/me/blackvein/quests/Planner.java index 7c43e480b..bdece13fd 100644 --- a/main/src/main/java/me/blackvein/quests/Planner.java +++ b/main/src/main/java/me/blackvein/quests/Planner.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/Quest.java b/main/src/main/java/me/blackvein/quests/Quest.java index de82c7102..f09cd5b76 100644 --- a/main/src/main/java/me/blackvein/quests/Quest.java +++ b/main/src/main/java/me/blackvein/quests/Quest.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -39,6 +39,12 @@ import com.sk89q.worldguard.protection.regions.ProtectedRegion; import de.erethon.dungeonsxl.player.DGroup; import me.blackvein.quests.actions.Action; +import me.blackvein.quests.events.quester.QuesterPostChangeStageEvent; +import me.blackvein.quests.events.quester.QuesterPostCompleteQuestEvent; +import me.blackvein.quests.events.quester.QuesterPostFailQuestEvent; +import me.blackvein.quests.events.quester.QuesterPreChangeStageEvent; +import me.blackvein.quests.events.quester.QuesterPreCompleteQuestEvent; +import me.blackvein.quests.events.quester.QuesterPreFailQuestEvent; import me.blackvein.quests.exceptions.InvalidStageException; import me.blackvein.quests.util.ItemUtil; import me.blackvein.quests.util.Lang; @@ -149,7 +155,7 @@ public class Quest { return initialAction; } - public void setInitialActino(Action initialAction) { + public void setInitialAction(Action initialAction) { this.initialAction = initialAction; } @@ -237,6 +243,12 @@ public class Quest { throw new InvalidStageException(this, stage); } Stage currentStage = quester.getCurrentStage(this); + Stage nextStage = quester.getCurrentStage(this); + QuesterPreChangeStageEvent preEvent = new QuesterPreChangeStageEvent(quester, this, currentStage, nextStage); + plugin.getServer().getPluginManager().callEvent(preEvent); + if (preEvent.isCancelled()) { + return; + } quester.hardQuit(this); quester.hardStagePut(this, stage); quester.addEmptiesFor(this, stage); @@ -246,12 +258,10 @@ public class Quest { /* * if (quester.getCurrentStage(this).finishEvent != null) { quester.getCurrentStage(this).finishEvent.fire(quester); } */ - Stage nextStage = quester.getCurrentStage(this); if (nextStage.startEvent != null) { nextStage.startEvent.fire(quester, this); } updateCompass(quester, nextStage); - updateGPS(quester); String msg = Lang.get(quester.getPlayer(), "questObjectivesTitle"); msg = msg.replace("", name); quester.getPlayer().sendMessage(ChatColor.GOLD + msg); @@ -261,62 +271,8 @@ public class Quest { quester.getPlayer().sendMessage(plugin.parseStringWithPossibleLineBreaks(stageStartMessage, this, quester.getPlayer())); } quester.updateJournal(); - } - - /** - * Add location-objective points for GPS and begin navigation.

- * - * Do not call this method multiple times. - * - * @param quester The quester to have their GPS updated - * @return true if successful - */ - protected boolean updateGPS(Quester quester) { - if (plugin.getDependencies().getGpsApi() == null) { - return false; - } - Stage stage = quester.getCurrentStage(this); - LinkedList targetLocations = new LinkedList(); - if (stage == null) { - return false; - } - if (stage.citizensToInteract != null && stage.citizensToInteract.size() > 0) { - for (Integer i : stage.citizensToInteract) { - targetLocations.add(plugin.getNPCLocation(i)); - } - } else if (stage.citizensToKill != null && stage.citizensToKill.size() > 0) { - for (Integer i : stage.citizensToKill) { - targetLocations.add(plugin.getNPCLocation(i)); - } - } else if (stage.locationsToReach != null && stage.locationsToReach.size() > 0) { - targetLocations.addAll(stage.locationsToReach); - } else if (stage.itemDeliveryTargets != null && stage.itemDeliveryTargets.size() > 0) { - for (Integer i : stage.itemDeliveryTargets) { - NPC npc = plugin.getDependencies().getCitizens().getNPCRegistry().getById(i); - targetLocations.add(npc.getStoredLocation()); - } - } - if (targetLocations != null && !targetLocations.isEmpty()) { - int index = 1; - String pointName = "quests-" + quester.getPlayer().getUniqueId().toString() + "-" + stage.toString() + "-"; - for (Location l : targetLocations) { - if (l.getWorld().getName().equals(quester.getPlayer().getWorld().getName())) { - if (!plugin.getDependencies().getGpsApi().gpsIsActive(quester.getPlayer())) { - plugin.getDependencies().getGpsApi().addPoint(pointName + index, l); - index++; - } - } - } - for (int i = 1 ; i < targetLocations.size(); i++) { - if (!plugin.getDependencies().getGpsApi().gpsIsActive(quester.getPlayer())) { - plugin.getDependencies().getGpsApi().connect(pointName + i, pointName + (i + 1), true); - } - } - if (!plugin.getDependencies().getGpsApi().gpsIsActive(quester.getPlayer())) { - plugin.getDependencies().getGpsApi().startGPS(quester.getPlayer(), pointName + (index - 1)); - } - } - return targetLocations != null && !targetLocations.isEmpty(); + QuesterPostChangeStageEvent postEvent = new QuesterPostChangeStageEvent(quester, this, currentStage, nextStage); + plugin.getServer().getPluginManager().callEvent(postEvent); } /** @@ -457,6 +413,11 @@ public class Quest { */ @SuppressWarnings("deprecation") public void completeQuest(Quester q) { + QuesterPreCompleteQuestEvent preEvent = new QuesterPreCompleteQuestEvent(q, this); + plugin.getServer().getPluginManager().callEvent(preEvent); + if (preEvent.isCancelled()) { + return; + } final Player player = plugin.getServer().getPlayer(q.getUUID()); q.hardQuit(this); if (!q.completedQuests.contains(name)) { @@ -596,7 +557,7 @@ public class Quest { if (!i.getItemMeta().hasItemFlag(ItemFlag.HIDE_ENCHANTS)) { text += ChatColor.GRAY + " " + Lang.get(player, "with") + ChatColor.DARK_PURPLE; for (Entry e : i.getEnchantments().entrySet()) { - text += " " + Quester.prettyEnchantmentString(e.getKey()) + ":" + e.getValue(); + text += " " + ItemUtil.getPrettyEnchantmentName(e.getKey()) + ":" + e.getValue(); } } } catch (Throwable tr) { @@ -610,7 +571,7 @@ public class Quest { } else { text = "- " + ChatColor.DARK_GREEN + ItemUtil.getName(i) + ":" + i.getDurability() + ChatColor.GRAY + " " + Lang.get(player, "with"); for (Entry e : i.getEnchantments().entrySet()) { - text += " " + Quester.prettyEnchantmentString(e.getKey()) + ":" + e.getValue(); + text += " " + ItemUtil.getPrettyEnchantmentName(e.getKey()) + ":" + e.getValue(); } text += ChatColor.GRAY + " x " + i.getAmount(); } @@ -623,7 +584,7 @@ public class Quest { if (!i.getItemMeta().hasItemFlag(ItemFlag.HIDE_ENCHANTS)) { text += ChatColor.GRAY + " " + Lang.get(player, "with"); for (Entry e : i.getEnchantments().entrySet()) { - text += " " + Quester.prettyEnchantmentString(e.getKey()) + ":" + e.getValue(); + text += " " + ItemUtil.getPrettyEnchantmentName(e.getKey()) + ":" + e.getValue(); } } } catch (Throwable tr) { @@ -718,12 +679,9 @@ public class Quest { q.saveData(); player.updateInventory(); q.updateJournal(); - if (plugin.getDependencies().getGpsApi() != null) { - if (plugin.getDependencies().getGpsApi().gpsIsActive(player)) { - plugin.getDependencies().getGpsApi().stopGPS(player); - } - } q.findCompassTarget(); + QuesterPostCompleteQuestEvent postEvent = new QuesterPostCompleteQuestEvent(q, this); + plugin.getServer().getPluginManager().callEvent(postEvent); } /** @@ -733,6 +691,11 @@ public class Quest { */ @SuppressWarnings("deprecation") public void failQuest(Quester q) { + QuesterPreFailQuestEvent preEvent = new QuesterPreFailQuestEvent(q, this); + plugin.getServer().getPluginManager().callEvent(preEvent); + if (preEvent.isCancelled()) { + return; + } if (plugin.getServer().getPlayer(q.getUUID()) != null) { Player player = plugin.getServer().getPlayer(q.getUUID()); player.sendMessage(ChatColor.GOLD + Lang.get(player, "questObjectivesTitle").replace("", name)); @@ -745,6 +708,8 @@ public class Quest { q.saveData(); } q.updateJournal(); + QuesterPostFailQuestEvent postEvent = new QuesterPostFailQuestEvent(q, this); + plugin.getServer().getPluginManager().callEvent(postEvent); } /** diff --git a/main/src/main/java/me/blackvein/quests/QuestData.java b/main/src/main/java/me/blackvein/quests/QuestData.java index 38f387442..c1dd86e9f 100644 --- a/main/src/main/java/me/blackvein/quests/QuestData.java +++ b/main/src/main/java/me/blackvein/quests/QuestData.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/QuestFactory.java b/main/src/main/java/me/blackvein/quests/QuestFactory.java index 3d7b478fe..1a83f2068 100644 --- a/main/src/main/java/me/blackvein/quests/QuestFactory.java +++ b/main/src/main/java/me/blackvein/quests/QuestFactory.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -56,6 +56,7 @@ import me.blackvein.quests.prompts.StagesPrompt; import me.blackvein.quests.util.CK; import me.blackvein.quests.util.ItemUtil; import me.blackvein.quests.util.Lang; +import me.blackvein.quests.util.MiscUtil; import me.blackvein.quests.util.WorldGuardAPI; import net.citizensnpcs.api.CitizensAPI; @@ -1630,7 +1631,7 @@ public class QuestFactory implements ConversationAbandonedListener { amounts.add(e.getValue()); for (Entry e2 : e.getKey().entrySet()) { names.add(e2.getValue().name()); - enchants.add(Quester.prettyEnchantmentString(e2.getKey())); + enchants.add(ItemUtil.getPrettyEnchantmentName(e2.getKey())); } } cc.setSessionData(pref + CK.S_ENCHANT_TYPES, enchants); @@ -1674,7 +1675,7 @@ public class QuestFactory implements ConversationAbandonedListener { if (stage.mobsToKill.isEmpty() == false) { LinkedList mobs = new LinkedList(); for (EntityType et : stage.mobsToKill) { - mobs.add(Quester.prettyMobString(et)); + mobs.add(MiscUtil.getPrettyMobName(et)); } cc.setSessionData(pref + CK.S_MOB_TYPES, mobs); cc.setSessionData(pref + CK.S_MOB_AMOUNTS, stage.mobNumToKill); @@ -1701,7 +1702,7 @@ public class QuestFactory implements ConversationAbandonedListener { LinkedList mobs = new LinkedList(); LinkedList amnts = new LinkedList(); for (Entry e : stage.mobsToTame.entrySet()) { - mobs.add(Quester.prettyMobString(e.getKey())); + mobs.add(MiscUtil.getPrettyMobName(e.getKey())); amnts.add(e.getValue()); } cc.setSessionData(pref + CK.S_TAME_TYPES, mobs); @@ -1711,7 +1712,7 @@ public class QuestFactory implements ConversationAbandonedListener { LinkedList colors = new LinkedList(); LinkedList amnts = new LinkedList(); for (Entry e : stage.sheepToShear.entrySet()) { - colors.add(Quester.prettyColorString(e.getKey())); + colors.add(MiscUtil.getPrettyDyeColorName(e.getKey())); amnts.add(e.getValue()); } cc.setSessionData(pref + CK.S_SHEAR_COLORS, colors); diff --git a/main/src/main/java/me/blackvein/quests/QuestMob.java b/main/src/main/java/me/blackvein/quests/QuestMob.java index 009472cb5..47a578cb6 100644 --- a/main/src/main/java/me/blackvein/quests/QuestMob.java +++ b/main/src/main/java/me/blackvein/quests/QuestMob.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/Quester.java b/main/src/main/java/me/blackvein/quests/Quester.java index b8445f79e..1d9c03c7f 100644 --- a/main/src/main/java/me/blackvein/quests/Quester.java +++ b/main/src/main/java/me/blackvein/quests/Quester.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -40,13 +40,14 @@ import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.BookMeta; import org.bukkit.inventory.meta.ItemMeta; +import me.blackvein.quests.events.quester.QuesterPostStartQuestEvent; +import me.blackvein.quests.events.quester.QuesterPreStartQuestEvent; import me.blackvein.quests.timers.StageTimer; import me.blackvein.quests.util.ItemUtil; import me.blackvein.quests.util.Lang; @@ -388,6 +389,11 @@ public class Quester { if (q == null) { return; } + QuesterPreStartQuestEvent preEvent = new QuesterPreStartQuestEvent(this, q); + plugin.getServer().getPluginManager().callEvent(preEvent); + if (preEvent.isCancelled()) { + return; + } Player player = getPlayer(); Planner pln = q.getPlanner(); long start = pln.getStartInMillis(); // Start time in milliseconds since UTC epoch @@ -513,11 +519,12 @@ public class Quester { stage.startEvent.fire(this, q); } q.updateCompass(this, stage); - q.updateGPS(this); saveData(); } else { player.sendMessage(q.getRequirements().getFailRequirements()); } + QuesterPostStartQuestEvent postEvent = new QuesterPostStartQuestEvent(this, q); + plugin.getServer().getPluginManager().callEvent(postEvent); } /** @@ -669,12 +676,12 @@ public class Quester { if (num1 < num2) { String obj = Lang.get(getPlayer(), "enchantItem"); obj = obj.replace("", ItemUtil.getName(new ItemStack(mat)) + ChatColor.GREEN); - obj = obj.replace("", ChatColor.LIGHT_PURPLE + Quester.prettyEnchantmentString(enchantment) + ChatColor.GREEN); + obj = obj.replace("", ChatColor.LIGHT_PURPLE + ItemUtil.getPrettyEnchantmentName(enchantment) + ChatColor.GREEN); unfinishedObjectives.add(ChatColor.GREEN + obj + ChatColor.GREEN + ": " + num1 + "/" + num2); } else { String obj = Lang.get(getPlayer(), "enchantItem"); obj = obj.replace("", ItemUtil.getName(new ItemStack(mat)) + ChatColor.GRAY); - obj = obj.replace("", ChatColor.LIGHT_PURPLE + Quester.prettyEnchantmentString(enchantment) + ChatColor.GRAY); + obj = obj.replace("", ChatColor.LIGHT_PURPLE + ItemUtil.getPrettyEnchantmentName(enchantment) + ChatColor.GRAY); finishedObjectives.add(ChatColor.GRAY + obj + ChatColor.GRAY + ": " + num1 + "/" + num2); } } @@ -698,12 +705,12 @@ public class Quester { < getCurrentStage(quest).mobNumToKill.get(getCurrentStage(quest).mobsToKill.indexOf(e))) { if (getCurrentStage(quest).locationsToKillWithin.isEmpty()) { unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "kill") + " " - + ChatColor.AQUA + Quester.prettyMobString(e) + ChatColor.GREEN + ": " + + ChatColor.AQUA + MiscUtil.getPrettyMobName(e) + ChatColor.GREEN + ": " + (getQuestData(quest).mobNumKilled.get(getQuestData(quest).mobsKilled.indexOf(e2))) + "/" + (getCurrentStage(quest).mobNumToKill.get(getCurrentStage(quest).mobsToKill.indexOf(e)))); } else { String obj = Lang.get(getPlayer(), "killAtLocation"); - obj = obj.replace("", ChatColor.LIGHT_PURPLE + Quester.prettyMobString(e)); + obj = obj.replace("", ChatColor.LIGHT_PURPLE + MiscUtil.getPrettyMobName(e)); obj = obj.replace("", getCurrentStage(quest).killNames.get(getCurrentStage(quest).mobsToKill.indexOf(e))); unfinishedObjectives.add(ChatColor.GREEN + obj + ChatColor.GREEN + ": " + (getQuestData(quest).mobNumKilled.get(getQuestData(quest).mobsKilled.indexOf(e2))) @@ -712,12 +719,12 @@ public class Quester { } else { if (getCurrentStage(quest).locationsToKillWithin.isEmpty()) { finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "kill") + " " - + ChatColor.AQUA + Quester.prettyMobString(e) + ChatColor.GRAY + ": " + + ChatColor.AQUA + MiscUtil.getPrettyMobName(e) + ChatColor.GRAY + ": " + (getQuestData(quest).mobNumKilled.get(getQuestData(quest).mobsKilled.indexOf(e2))) + "/" + (getCurrentStage(quest).mobNumToKill.get(getCurrentStage(quest).mobsToKill.indexOf(e)))); } else { String obj = Lang.get(getPlayer(), "killAtLocation"); - obj = obj.replace("", ChatColor.LIGHT_PURPLE + Quester.prettyMobString(e)); + obj = obj.replace("", ChatColor.LIGHT_PURPLE + MiscUtil.getPrettyMobName(e)); obj = obj.replace("", getCurrentStage(quest).killNames.get(getCurrentStage(quest).mobsToKill.indexOf(e))); finishedObjectives.add(ChatColor.GRAY + obj + ChatColor.GRAY + ": " + (getQuestData(quest).mobNumKilled.get(getQuestData(quest).mobsKilled.indexOf(e2))) @@ -796,10 +803,10 @@ public class Quester { for (Entry e2 : getQuestData(quest).mobsTamed.entrySet()) { if (e.getKey().equals(e2.getKey())) { if (e2.getValue() < e.getValue()) { - unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "tame") + " " + getCapitalized(e.getKey().name()) + unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "tame") + " " + MiscUtil.getCapitalized(e.getKey().name()) + ChatColor.GREEN + ": " + e2.getValue() + "/" + e.getValue()); } else { - finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "tame") + " " + getCapitalized(e.getKey().name()) + finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "tame") + " " + MiscUtil.getCapitalized(e.getKey().name()) + ChatColor.GRAY + ": " + e2.getValue() + "/" + e.getValue()); } } @@ -1929,125 +1936,6 @@ public class Quester { hardDataPut(quest, data); } - public static String getCapitalized(String target) { - String firstLetter = target.substring(0, 1); - String remainder = target.substring(1); - String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase(); - return capitalized; - } - - /** - * Cleans up item names. 'WOODEN_BUTTON' becomes 'Wooden Button' - * - * @param itemName any item name, ideally - * @return cleaned-up string - */ - public static String prettyItemString(String itemName) { - String baseString = Material.matchMaterial(itemName).toString(); - String[] substrings = baseString.split("_"); - String prettyString = ""; - int size = 1; - for (String s : substrings) { - prettyString = prettyString.concat(Quester.getCapitalized(s)); - if (size < substrings.length) { - prettyString = prettyString.concat(" "); - } - size++; - } - return prettyString; - } - - /** - * Gets player-friendly name from type. 'ENDER_DRAGON' becomes 'Ender Dragon' - * - * @param type any mob type, ideally - * @return cleaned-up string - */ - public static String prettyMobString(EntityType type) { - String baseString = type.toString(); - String[] substrings = baseString.split("_"); - String prettyString = ""; - int size = 1; - for (String s : substrings) { - prettyString = prettyString.concat(Quester.getCapitalized(s)); - if (size < substrings.length) { - prettyString = prettyString.concat(" "); - } - size++; - } - if (type.equals((EntityType.OCELOT))) { - prettyString = "Ocelot"; - } - return prettyString; - } - - public static String prettyColorString(DyeColor color) { - return Lang.get("COLOR_" + color.name()); - } - - /** - * Gets player-friendly name from enchantment. 'FIRE_ASPECT' becomes 'Fire Aspect' - * - * @param e Enchantment to get pretty localized name of - * @return pretty localized name - */ - public static String prettyEnchantmentString(Enchantment e) { - String prettyString = enchantmentString(e); - prettyString = capitalsToSpaces(prettyString); - return prettyString; - } - - /** - * Gets name of enchantment exactly as it appears in lang file - * - * @param e Enchantment to get localized name of - * @return localized name - */ - @SuppressWarnings("deprecation") // since 1.13 - public static String enchantmentString(Enchantment e) { - try { - return (Lang.get("ENCHANTMENT_" + e.getName())); - } catch (NullPointerException ne) { - Bukkit.getLogger().warning(e.getName() + " was not found in Lang.yml, please ask the developer to " - + "update the file or simply add an entry for the enchantment"); - return e.getName().toLowerCase().replace("_", " "); - } - } - - /** - * Adds a single space in front of all capital letters - * - * @param s string to process - * @return processed string - */ - public static String capitalsToSpaces(String s) { - int max = s.length(); - for (int i = 1; i < max; i++) { - if (Character.isUpperCase(s.charAt(i))) { - s = s.substring(0, i) + " " + s.substring(i); - i++; - max++; - } - } - return s; - } - - /** - * Capitalize character after space - * - * @param s string to process - * @return processed string - */ - public static String spaceToCapital(String s) { - int index = s.indexOf(' '); - if (index == -1) { - return null; - } - s = s.substring(0, (index + 1)) + Character.toUpperCase(s.charAt(index + 1)) + s.substring(index + 2); - s = s.replaceFirst(" ", ""); - return s; - } - public void saveData() { FileConfiguration data = getBaseData(); try { @@ -2174,7 +2062,7 @@ public class Quester { Map enchMap = (Map) e.getKey(); enchAmounts.add(questData.itemsEnchanted.get(enchMap)); for (Entry e2 : enchMap.entrySet()) { - enchantments.add(Quester.prettyEnchantmentString((Enchantment) e2.getKey())); + enchantments.add(ItemUtil.getPrettyEnchantmentName((Enchantment) e2.getKey())); itemNames.add(((Material) e2.getValue()).name()); } } @@ -2194,7 +2082,7 @@ public class Quester { LinkedList locations = new LinkedList(); LinkedList radii = new LinkedList(); for (EntityType e : questData.mobsKilled) { - mobNames.add(Quester.prettyMobString(e)); + mobNames.add(MiscUtil.getPrettyMobName(e)); } for (int i : questData.mobNumKilled) { mobAmounts.add(i); @@ -2268,7 +2156,7 @@ public class Quester { LinkedList mobNames = new LinkedList(); LinkedList mobAmounts = new LinkedList(); for (EntityType e : questData.mobsTamed.keySet()) { - mobNames.add(Quester.prettyMobString(e)); + mobNames.add(MiscUtil.getPrettyMobName(e)); mobAmounts.add(questData.mobsTamed.get(e)); } questSec.set("mobs-to-tame", mobNames); @@ -2278,7 +2166,7 @@ public class Quester { LinkedList colors = new LinkedList(); LinkedList shearAmounts = new LinkedList(); for (DyeColor d : questData.sheepSheared.keySet()) { - colors.add(Quester.prettyColorString(d)); + colors.add(MiscUtil.getPrettyDyeColorName(d)); shearAmounts.add(questData.sheepSheared.get(d)); } questSec.set("sheep-to-shear", colors); @@ -2583,7 +2471,7 @@ public class Quester { List names = questSec.getStringList("enchantment-item-names"); List times = questSec.getIntegerList("times-enchanted"); for (String s : enchantNames) { - enchantments.add(Quests.getEnchantment(s)); + enchantments.add(ItemUtil.getEnchantmentFromProperName(s)); materials.add(Material.matchMaterial(names.get(enchantNames.indexOf(s)))); amounts.add(times.get(enchantNames.indexOf(s))); } @@ -2696,7 +2584,7 @@ public class Quester { List colors = questSec.getStringList("sheep-to-shear"); List amounts = questSec.getIntegerList("sheep-sheared"); for (String color : colors) { - getQuestData(quest).sheepSheared.put(Quests.getDyeColor(color), amounts.get(colors.indexOf(color))); + getQuestData(quest).sheepSheared.put(MiscUtil.getDyeColor(color), amounts.get(colors.indexOf(color))); } } if (questSec.contains("passwords")) { @@ -2743,132 +2631,6 @@ public class Quester { return true; } - public static ConfigurationSection getLegacyQuestData(FileConfiguration questSec, String questName) { - ConfigurationSection newData = questSec.createSection("questData"); - if (questSec.contains("blocks-broken-names")) { - List names = questSec.getStringList("blocks-broken-names"); - List amounts = questSec.getIntegerList("blocks-broken-amounts"); - newData.set(questName + ".blocks-broken-names", names); - newData.set(questName + ".blocks-broken-amounts", amounts); - } - if (questSec.contains("blocks-damaged-names")) { - List names = questSec.getStringList("blocks-damaged-names"); - List amounts = questSec.getIntegerList("blocks-damaged-amounts"); - newData.set(questName + ".blocks-damaged-names", names); - newData.set(questName + ".blocks-damaged-amounts", amounts); - } - if (questSec.contains("blocks-placed-names")) { - List names = questSec.getStringList("blocks-placed-names"); - List amounts = questSec.getIntegerList("blocks-placed-amounts"); - newData.set(questName + ".blocks-placed-names", names); - newData.set(questName + ".blocks-placed-amounts", amounts); - } - if (questSec.contains("blocks-used-names")) { - List names = questSec.getStringList("blocks-used-names"); - List amounts = questSec.getIntegerList("blocks-used-amounts"); - newData.set(questName + ".blocks-used-names", names); - newData.set(questName + ".blocks-used-amounts", amounts); - } - if (questSec.contains("blocks-cut-names")) { - List names = questSec.getStringList("blocks-cut-names"); - List amounts = questSec.getIntegerList("blocks-cut-amounts"); - newData.set(questName + ".blocks-cut-names", names); - newData.set(questName + ".blocks-cut-amounts", amounts); - } - if (questSec.contains("fish-caught")) { - newData.set(questName + ".fish-caught", questSec.getInt("fish-caught")); - } - if (questSec.contains("players-killed")) { - newData.set(questName + ".players-killed", questSec.getInt("players-killed")); - } - if (questSec.contains("enchantments")) { - List enchantNames = questSec.getStringList("enchantments"); - List names = questSec.getStringList("enchantment-item-names"); - List times = questSec.getIntegerList("times-enchanted"); - newData.set(questName + ".enchantments", enchantNames); - newData.set(questName + ".enchantment-item-names", names); - newData.set(questName + ".times-enchanted", times); - } - if (questSec.contains("mobs-killed")) { - List mobs = questSec.getStringList("mobs-killed"); - List amounts = questSec.getIntegerList("mobs-killed-amounts"); - newData.set(questName + ".mobs-killed", mobs); - newData.set(questName + ".mobs-killed-amounts", amounts); - if (questSec.contains("mob-kill-locations")) { - List locations = questSec.getStringList("mob-kill-locations"); - List radii = questSec.getIntegerList("mob-kill-location-radii"); - newData.set(questName + ".mob-kill-locations", locations); - newData.set(questName + ".mob-kill-location-radii", radii); - } - } - if (questSec.contains("item-delivery-amounts")) { - List deliveryAmounts = questSec.getIntegerList("item-delivery-amounts"); - newData.set(questName + ".item-delivery-amounts", deliveryAmounts); - } - if (questSec.contains("citizen-ids-to-talk-to")) { - List ids = questSec.getIntegerList("citizen-ids-to-talk-to"); - List has = questSec.getBooleanList("has-talked-to"); - newData.set(questName + ".citizen-ids-to-talk-to", ids); - newData.set(questName + ".has-talked-to", has); - } - if (questSec.contains("citizen-ids-killed")) { - List ids = questSec.getIntegerList("citizen-ids-killed"); - List num = questSec.getIntegerList("citizen-amounts-killed"); - newData.set(questName + ".citizen-ids-killed", ids); - newData.set(questName + ".citizen-amounts-killed", num); - } - if (questSec.contains("locations-to-reach")) { - List locations = questSec.getStringList("locations-to-reach"); - List has = questSec.getBooleanList("has-reached-location"); - List radii = questSec.getIntegerList("radii-to-reach-within"); - newData.set(questName + ".locations-to-reach", locations); - newData.set(questName + ".has-reached-location", has); - newData.set(questName + ".radii-to-reach-within", radii); - } - if (questSec.contains("potions-brewed-names")) { - List names = questSec.getStringList("potions-brewed-names"); - List amounts = questSec.getIntegerList("potions-brewed-amounts"); - newData.set(questName + ".potions-brewed-names", names); - newData.set(questName + ".potions-brewed-amounts", amounts); - } - if (questSec.contains("mobs-to-tame")) { - List mobs = questSec.getStringList("mobs-to-tame"); - List amounts = questSec.getIntegerList("mob-tame-amounts"); - newData.set(questName + ".mobs-to-tame", mobs); - newData.set(questName + ".mob-tame-amounts", amounts); - } - if (questSec.contains("sheep-to-shear")) { - List colors = questSec.getStringList("sheep-to-shear"); - List amounts = questSec.getIntegerList("sheep-sheared"); - newData.set(questName + ".sheep-to-shear", colors); - newData.set(questName + ".sheep-sheared", amounts); - } - if (questSec.contains("passwords")) { - List passwords = questSec.getStringList("passwords"); - List said = questSec.getBooleanList("passwords-said"); - newData.set(questName + ".passwords", passwords); - newData.set(questName + ".passwords-said", said); - } - if (questSec.contains("custom-objectives")) { - List customObj = questSec.getStringList("custom-objectives"); - List customObjCount = questSec.getIntegerList("custom-objective-counts"); - newData.set(questName + ".custom-objectives", customObj); - newData.set(questName + ".custom-objective-counts", customObjCount); - } - if (questSec.contains("stage-delay")) { - newData.set(questName + ".stage-delay", questSec.getLong("stage-delay")); - } - if (questSec.contains("chat-triggers")) { - List chatTriggers = questSec.getStringList("chat-triggers"); - newData.set(questName + ".chat-triggers", chatTriggers); - } - if (questSec.contains("command-triggers")) { - List commandTriggers = questSec.getStringList("command-triggers"); - newData.set(questName + ".command-triggers", commandTriggers); - } - return newData; - } - /** * Initiate the stage timer * @param quest The quest of which the timer is for @@ -2952,91 +2714,6 @@ public class Quester { } } - public static String checkPlacement(Inventory inv, int rawSlot) { - if (rawSlot < 0) { - return Lang.get("questNoDrop"); - } - InventoryType type = inv.getType(); - if (type.equals(InventoryType.BREWING)) { - if (rawSlot < 4) { - return Lang.get("questNoBrew"); - } - } else if (type.equals(InventoryType.CHEST)) { - if (inv.getContents().length == 27) { - if (rawSlot < 27) { - return Lang.get("questNoStore"); - } - } else { - if (rawSlot < 54) { - return Lang.get("questNoStore"); - } - } - } else if (type.equals(InventoryType.CRAFTING)) { - if (rawSlot < 5) { - return Lang.get("questNoCraft"); - } else if (rawSlot < 9) { - return Lang.get("questNoEquip"); - } - } else if (type.equals(InventoryType.DISPENSER)) { - if (rawSlot < 9) { - return Lang.get("questNoDispense"); - } - } else if (type.equals(InventoryType.ENCHANTING)) { - if (rawSlot == 0) { - return Lang.get("questNoEnchant"); - } - } else if (type.equals(InventoryType.ENDER_CHEST)) { - if (rawSlot < 27) { - return Lang.get("questNoStore"); - } - } else if (type.equals(InventoryType.FURNACE)) { - if (rawSlot < 3) { - return Lang.get("questNoSmelt"); - } - } else if (type.equals(InventoryType.WORKBENCH)) { - if (rawSlot < 10) { - return Lang.get("questNoCraft"); - } - } - return null; - } - - public static List getChangedSlots(Inventory inInv, ItemStack inNew) { - List changed = new ArrayList(); - if (inInv.contains(inNew.getType())) { - int amount = inNew.getAmount(); - HashMap items = inInv.all(inNew.getType()); - for (int i = 0; i < inInv.getSize(); i++) { - if (!items.containsKey((Integer) i)) { - continue; - } - ItemStack item = items.get((Integer) i); - int slotamount = item.getMaxStackSize() - item.getAmount(); - if (slotamount > 1) { - if (amount > slotamount) { - int toAdd = slotamount - amount; - amount = amount - toAdd; - changed.add(i); - } else { - changed.add(i); - amount = 0; - break; - } - } - } - if (amount > 0) { - if (inInv.firstEmpty() != -1) { - changed.add(inInv.firstEmpty()); - } - } - } else { - if (inInv.firstEmpty() != -1) { - changed.add(inInv.firstEmpty()); - } - } - return changed; - } - public void showGUIDisplay(NPC npc, LinkedList quests) { Player player = getPlayer(); int size = ((quests.size() / 9) + 1) * 9; @@ -3084,11 +2761,6 @@ public class Quester { } } } - if (plugin.getDependencies().getGpsApi() != null) { - if (plugin.getDependencies().getGpsApi().gpsIsActive(this.getPlayer())) { - plugin.getDependencies().getGpsApi().stopGPS(this.getPlayer()); - } - } } catch (Exception ex) { ex.printStackTrace(); } @@ -3166,4 +2838,91 @@ public class Quester { } return playerAmount >= is.getAmount(); } + + // I'm not sure why these methods are here. They've been in the class for a long time but aren't used anywhere? + + /*public static String checkPlacement(Inventory inv, int rawSlot) { + if (rawSlot < 0) { + return Lang.get("questNoDrop"); + } + InventoryType type = inv.getType(); + if (type.equals(InventoryType.BREWING)) { + if (rawSlot < 4) { + return Lang.get("questNoBrew"); + } + } else if (type.equals(InventoryType.CHEST)) { + if (inv.getContents().length == 27) { + if (rawSlot < 27) { + return Lang.get("questNoStore"); + } + } else { + if (rawSlot < 54) { + return Lang.get("questNoStore"); + } + } + } else if (type.equals(InventoryType.CRAFTING)) { + if (rawSlot < 5) { + return Lang.get("questNoCraft"); + } else if (rawSlot < 9) { + return Lang.get("questNoEquip"); + } + } else if (type.equals(InventoryType.DISPENSER)) { + if (rawSlot < 9) { + return Lang.get("questNoDispense"); + } + } else if (type.equals(InventoryType.ENCHANTING)) { + if (rawSlot == 0) { + return Lang.get("questNoEnchant"); + } + } else if (type.equals(InventoryType.ENDER_CHEST)) { + if (rawSlot < 27) { + return Lang.get("questNoStore"); + } + } else if (type.equals(InventoryType.FURNACE)) { + if (rawSlot < 3) { + return Lang.get("questNoSmelt"); + } + } else if (type.equals(InventoryType.WORKBENCH)) { + if (rawSlot < 10) { + return Lang.get("questNoCraft"); + } + } + return null; + }*/ + + /*public static List getChangedSlots(Inventory inInv, ItemStack inNew) { + List changed = new ArrayList(); + if (inInv.contains(inNew.getType())) { + int amount = inNew.getAmount(); + HashMap items = inInv.all(inNew.getType()); + for (int i = 0; i < inInv.getSize(); i++) { + if (!items.containsKey((Integer) i)) { + continue; + } + ItemStack item = items.get((Integer) i); + int slotamount = item.getMaxStackSize() - item.getAmount(); + if (slotamount > 1) { + if (amount > slotamount) { + int toAdd = slotamount - amount; + amount = amount - toAdd; + changed.add(i); + } else { + changed.add(i); + amount = 0; + break; + } + } + } + if (amount > 0) { + if (inInv.firstEmpty() != -1) { + changed.add(inInv.firstEmpty()); + } + } + } else { + if (inInv.firstEmpty() != -1) { + changed.add(inInv.firstEmpty()); + } + } + return changed; + }*/ } \ No newline at end of file diff --git a/main/src/main/java/me/blackvein/quests/Quests.java b/main/src/main/java/me/blackvein/quests/Quests.java index ea428479e..0c75f5ea7 100644 --- a/main/src/main/java/me/blackvein/quests/Quests.java +++ b/main/src/main/java/me/blackvein/quests/Quests.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -216,11 +216,6 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener public void onDisable() { getLogger().info("Saving Quester data."); for (Player p : getServer().getOnlinePlayers()) { - if (depends.getGpsApi() != null) { - if (depends.getGpsApi().gpsIsActive(p)) { - depends.getGpsApi().stopGPS(p); - } - } Quester quester = getQuester(p.getUniqueId()); quester.saveData(); } @@ -2107,7 +2102,7 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener if (config.contains("quests." + questKey + ".stages.ordered." + s2 + ".enchantments")) { if (Quests.checkList(config.getList("quests." + questKey + ".stages.ordered." + s2 + ".enchantments"), String.class)) { for (String enchant : config.getStringList("quests." + questKey + ".stages.ordered." + s2 + ".enchantments")) { - Enchantment e = Quests.getEnchantment(enchant); + Enchantment e = ItemUtil.getEnchantmentFromProperName(enchant); if (e != null) { enchantments.add(e); } else { @@ -2674,10 +2669,11 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener } /** - * Add possibilty to use fallbacks for customs maps + * Add possibilty to use fallbacks for customs maps

+ * * Avoid null objects in datamap by initialize the entry value with empty string if no fallback present. */ - static Map populateCustoms(ConfigurationSection sec2, Map datamap) { + private static Map populateCustoms(ConfigurationSection sec2, Map datamap) { Map data = new HashMap(); if (sec2 != null) { for (String key : datamap.keySet()) { @@ -2688,10 +2684,11 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener } /** - * Add possibilty to use fallbacks for customs entries + * Add possibilty to use fallbacks for customs entries

+ * * Avoid null objects in datamap by initialize the entry value with empty string if no fallback present. */ - static Entry populateCustoms(ConfigurationSection sec2, Entry datamap) { + private static Entry populateCustoms(ConfigurationSection sec2, Entry datamap) { String key = null;; Object value = null;; if (sec2 != null) { @@ -2721,9 +2718,8 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener if (legacyFile.exists()) { getLogger().log(Level.INFO, "Renaming legacy \"events.yml\" to \"actions.yml\""); try { - legacyFile.renameTo(actionsFile); - if (legacyFile.exists()) { - getLogger().log(Level.INFO, "Deleting legacy \"events.yml\" ... done!"); + if (legacyFile.renameTo(actionsFile)) { + getLogger().log(Level.INFO, "Success! Deleting legacy \"events.yml\" ... done!"); legacyFile.delete(); } } catch (Exception e) { @@ -3239,130 +3235,6 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener return count - subtract; } - @SuppressWarnings("deprecation") // since 1.13 - public static Enchantment getEnchantment(String enchant) { - String ench = Lang.getKey(enchant.replace(" ", "")); - ench = ench.replace("ENCHANTMENT_", ""); - Enchantment e = Enchantment.getByName(ench); - return e != null ? e : getEnchantmentLegacy(ench.replace(" ", "")); - } - - public static Enchantment getEnchantmentLegacy(String enchant) { - if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_ARROW_DAMAGE"))) { - return Enchantment.ARROW_DAMAGE; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_ARROW_FIRE"))) { - return Enchantment.ARROW_FIRE; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_ARROW_INFINITE"))) { - return Enchantment.ARROW_INFINITE; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_ARROW_KNOCKBACK"))) { - return Enchantment.ARROW_KNOCKBACK; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_DAMAGE_ALL"))) { - return Enchantment.DAMAGE_ALL; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_DAMAGE_ARTHROPODS"))) { - return Enchantment.DAMAGE_ARTHROPODS; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_DAMAGE_UNDEAD"))) { - return Enchantment.DAMAGE_UNDEAD; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_DIG_SPEED"))) { - return Enchantment.DIG_SPEED; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_DURABILITY"))) { - return Enchantment.DURABILITY; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_FIRE_ASPECT"))) { - return Enchantment.FIRE_ASPECT; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_KNOCKBACK"))) { - return Enchantment.KNOCKBACK; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_LOOT_BONUS_BLOCKS"))) { - return Enchantment.LOOT_BONUS_BLOCKS; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_LOOT_BONUS_MOBS"))) { - return Enchantment.LOOT_BONUS_MOBS; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_LUCK"))) { - return Enchantment.LOOT_BONUS_MOBS; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_LURE"))) { - return Enchantment.LOOT_BONUS_MOBS; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_OXYGEN"))) { - return Enchantment.OXYGEN; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_PROTECTION_ENVIRONMENTAL"))) { - return Enchantment.PROTECTION_ENVIRONMENTAL; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_PROTECTION_EXPLOSIONS"))) { - return Enchantment.PROTECTION_EXPLOSIONS; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_PROTECTION_FALL"))) { - return Enchantment.PROTECTION_FALL; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_PROTECTION_FIRE"))) { - return Enchantment.PROTECTION_FIRE; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_PROTECTION_PROJECTILE"))) { - return Enchantment.PROTECTION_PROJECTILE; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_SILK_TOUCH"))) { - return Enchantment.SILK_TOUCH; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_THORNS"))) { - return Enchantment.THORNS; - } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_WATER_WORKER"))) { - return Enchantment.WATER_WORKER; - } else { - return null; - } - } - - public static Enchantment getEnchantmentPretty(String enchant) { - while (Quester.spaceToCapital(enchant) != null) { - enchant = Quester.spaceToCapital(enchant); - } - return getEnchantment(enchant); - } - - public static DyeColor getDyeColor(String s) { - String col = Lang.getKey(MiscUtil.getCapitalized(s)); - col = col.replace("COLOR_", ""); - DyeColor color = null; - try { - color = DyeColor.valueOf(col); - } catch (IllegalArgumentException e) { - // Do nothing - } - return color != null ? color : getDyeColorLegacy(s); - } - - public static DyeColor getDyeColorLegacy(String s) { - if (s.equalsIgnoreCase("Black") || s.equalsIgnoreCase(Lang.get("COLOR_BLACK"))) { - return DyeColor.BLACK; - } else if (s.equalsIgnoreCase("Blue") || s.equalsIgnoreCase(Lang.get("COLOR_BLUE"))) { - return DyeColor.BLUE; - } else if (s.equalsIgnoreCase("Brown") || s.equalsIgnoreCase(Lang.get("COLOR_BROWN"))) { - return DyeColor.BROWN; - } else if (s.equalsIgnoreCase("Cyan") || s.equalsIgnoreCase(Lang.get("COLOR_CYAN"))) { - return DyeColor.CYAN; - } else if (s.equalsIgnoreCase("Gray") || s.equalsIgnoreCase(Lang.get("COLOR_GRAY"))) { - return DyeColor.GRAY; - } else if (s.equalsIgnoreCase("Green") || s.equalsIgnoreCase(Lang.get("COLOR_GREEN"))) { - return DyeColor.GREEN; - } else if (s.equalsIgnoreCase("LightBlue") || s.equalsIgnoreCase(Lang.get("COLOR_LIGHT_BLUE"))) { - return DyeColor.LIGHT_BLUE; - } else if (s.equalsIgnoreCase("Lime") || s.equalsIgnoreCase(Lang.get("COLOR_LIME"))) { - return DyeColor.LIME; - } else if (s.equalsIgnoreCase("Magenta") || s.equalsIgnoreCase(Lang.get("COLOR_MAGENTA"))) { - return DyeColor.MAGENTA; - } else if (s.equalsIgnoreCase("Orange") || s.equalsIgnoreCase(Lang.get("COLOR_ORAGE"))) { - return DyeColor.ORANGE; - } else if (s.equalsIgnoreCase("Pink") || s.equalsIgnoreCase(Lang.get("COLOR_PINK"))) { - return DyeColor.PINK; - } else if (s.equalsIgnoreCase("Purple") || s.equalsIgnoreCase(Lang.get("COLOR_PURPLE"))) { - return DyeColor.PURPLE; - } else if (s.equalsIgnoreCase("Red") || s.equalsIgnoreCase(Lang.get("COLOR_RED"))) { - return DyeColor.RED; - // 1.13 changed DyeColor.SILVER -> DyeColor.LIGHT_GRAY - } else if (s.equalsIgnoreCase("Silver") || s.equalsIgnoreCase("LightGray") || s.equalsIgnoreCase(Lang.get("COLOR_SILVER"))) { - return DyeColor.getByColor(Color.SILVER); - } else if (s.equalsIgnoreCase("White") || s.equalsIgnoreCase(Lang.get("COLOR_WHITE"))) { - return DyeColor.WHITE; - } else if (s.equalsIgnoreCase("Yellow") || s.equalsIgnoreCase(Lang.get("COLOR_YELLOW"))) { - return DyeColor.YELLOW; - } else { - return null; - } - } - - public static String getDyeString(DyeColor dc) { - return Lang.get("COLOR_" + dc.name()); - } - /** * Checks whether an NPC has a quest that the player may accept * @param npc The giver NPC to check diff --git a/main/src/main/java/me/blackvein/quests/Requirements.java b/main/src/main/java/me/blackvein/quests/Requirements.java index f3bb70d04..e0c91fd04 100644 --- a/main/src/main/java/me/blackvein/quests/Requirements.java +++ b/main/src/main/java/me/blackvein/quests/Requirements.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/Rewards.java b/main/src/main/java/me/blackvein/quests/Rewards.java index ae1419805..d1479b4ba 100644 --- a/main/src/main/java/me/blackvein/quests/Rewards.java +++ b/main/src/main/java/me/blackvein/quests/Rewards.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/Settings.java b/main/src/main/java/me/blackvein/quests/Settings.java index 5ed1efaa1..ed879b111 100644 --- a/main/src/main/java/me/blackvein/quests/Settings.java +++ b/main/src/main/java/me/blackvein/quests/Settings.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/Stage.java b/main/src/main/java/me/blackvein/quests/Stage.java index 93a6f9594..8a0c6e3c1 100644 --- a/main/src/main/java/me/blackvein/quests/Stage.java +++ b/main/src/main/java/me/blackvein/quests/Stage.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/actions/Action.java b/main/src/main/java/me/blackvein/quests/actions/Action.java index 6ae522dbf..31f9c9c2d 100644 --- a/main/src/main/java/me/blackvein/quests/actions/Action.java +++ b/main/src/main/java/me/blackvein/quests/actions/Action.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/actions/ActionFactory.java b/main/src/main/java/me/blackvein/quests/actions/ActionFactory.java index 39a6737f5..f295e5cac 100644 --- a/main/src/main/java/me/blackvein/quests/actions/ActionFactory.java +++ b/main/src/main/java/me/blackvein/quests/actions/ActionFactory.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -160,7 +160,7 @@ public class ActionFactory implements ConversationAbandonedListener { if (input.equalsIgnoreCase("1")) { if (player.hasPermission("quests.editor.actions.create") || player.hasPermission("quests.editor.events.create")) { context.setSessionData(CK.E_OLD_EVENT, ""); - return new EventNamePrompt(); + return new ActionNamePrompt(); } else { player.sendMessage(ChatColor.RED + Lang.get("noPermission")); return new MenuPrompt(); @@ -416,7 +416,7 @@ public class ActionFactory implements ConversationAbandonedListener { @Override public Prompt acceptInput(ConversationContext context, String input) { if (input.equalsIgnoreCase("1") || input.equalsIgnoreCase(Lang.get("yesWord"))) { - deleteEvent(context); + deleteAction(context); return new MenuPrompt(); } else if (input.equalsIgnoreCase("2") || input.equalsIgnoreCase(Lang.get("noWord"))) { return new MenuPrompt(); @@ -785,7 +785,7 @@ public class ActionFactory implements ConversationAbandonedListener { @Override public Prompt acceptInput(ConversationContext context, String input) { if (input.equalsIgnoreCase("1") || input.equalsIgnoreCase(Lang.get("yesWord"))) { - saveEvent(context); + saveAction(context); return new MenuPrompt(); } else if (input.equalsIgnoreCase("2") || input.equalsIgnoreCase(Lang.get("noWord"))) { return new CreateMenuPrompt(); @@ -858,7 +858,7 @@ public class ActionFactory implements ConversationAbandonedListener { } // - private void deleteEvent(ConversationContext context) { + private void deleteAction(ConversationContext context) { YamlConfiguration data = new YamlConfiguration(); try { actionsFile = new File(plugin.getDataFolder(), "actions.yml"); @@ -891,7 +891,7 @@ public class ActionFactory implements ConversationAbandonedListener { clearData(context); } - private void saveEvent(ConversationContext context) { + private void saveAction(ConversationContext context) { YamlConfiguration data = new YamlConfiguration(); try { actionsFile = new File(plugin.getDataFolder(), "actions.yml"); @@ -908,7 +908,7 @@ public class ActionFactory implements ConversationAbandonedListener { if (((String) context.getSessionData(CK.E_OLD_EVENT)).isEmpty() == false) { data.set("events." + (String) context.getSessionData(CK.E_OLD_EVENT), null); LinkedList temp = plugin.getEvents(); - temp.remove(plugin.getEvent((String) context.getSessionData(CK.E_OLD_EVENT))); + temp.remove(plugin.getAction((String) context.getSessionData(CK.E_OLD_EVENT))); plugin.setEvents(temp); } ConfigurationSection section = data.createSection("events." + (String) context.getSessionData(CK.E_NAME)); @@ -1049,7 +1049,7 @@ public class ActionFactory implements ConversationAbandonedListener { clearData(context); } - private class EventNamePrompt extends StringPrompt { + private class ActionNamePrompt extends StringPrompt { @Override public String getPromptText(ConversationContext context) { @@ -1064,16 +1064,16 @@ public class ActionFactory implements ConversationAbandonedListener { for (Action e : plugin.getEvents()) { if (e.getName().equalsIgnoreCase(input)) { context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("eventEditorExists")); - return new EventNamePrompt(); + return new ActionNamePrompt(); } } if (names.contains(input)) { context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("eventEditorSomeone")); - return new EventNamePrompt(); + return new ActionNamePrompt(); } if (StringUtils.isAlphanumeric(input) == false) { context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("eventEditorAlpha")); - return new EventNamePrompt(); + return new ActionNamePrompt(); } context.setSessionData(CK.E_NAME, input); names.add(input); diff --git a/main/src/main/java/me/blackvein/quests/events/QuestsEvent.java b/main/src/main/java/me/blackvein/quests/events/QuestsEvent.java new file mode 100644 index 000000000..05f2e253a --- /dev/null +++ b/main/src/main/java/me/blackvein/quests/events/QuestsEvent.java @@ -0,0 +1,12 @@ +package me.blackvein.quests.events; + +import org.bukkit.event.Event; + +public abstract class QuestsEvent extends Event { + public QuestsEvent() { + } + + public QuestsEvent(boolean async) { + super(async); + } +} diff --git a/main/src/main/java/me/blackvein/quests/events/quest/QuestEvent.java b/main/src/main/java/me/blackvein/quests/events/quest/QuestEvent.java new file mode 100644 index 000000000..37ec46132 --- /dev/null +++ b/main/src/main/java/me/blackvein/quests/events/quest/QuestEvent.java @@ -0,0 +1,41 @@ +/******************************************************************************************************* + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *******************************************************************************************************/ + +package me.blackvein.quests.events.quest; + +import me.blackvein.quests.Quest; +import me.blackvein.quests.events.QuestsEvent; + +/** + * Represents a quest-related event + */ +public abstract class QuestEvent extends QuestsEvent { + protected Quest quest; + + public QuestEvent(final Quest quest) { + this.quest = quest; + } + + public QuestEvent(final Quest quest, boolean async) { + super(async); + this.quest = quest; + } + + /** + * Returns the quest involved in this event + * + * @return Quest which is involved in this event + */ + public final Quest getQuest() { + return quest; + } +} diff --git a/main/src/main/java/me/blackvein/quests/events/quest/QuestQuitEvent.java b/main/src/main/java/me/blackvein/quests/events/quest/QuestQuitEvent.java new file mode 100644 index 000000000..5dba48050 --- /dev/null +++ b/main/src/main/java/me/blackvein/quests/events/quest/QuestQuitEvent.java @@ -0,0 +1,61 @@ +/******************************************************************************************************* + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *******************************************************************************************************/ + +package me.blackvein.quests.events.quest; + +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +import me.blackvein.quests.Quest; +import me.blackvein.quests.Quester; + +/** + * Called when a quest is quit by a quester + */ +public class QuestQuitEvent extends QuestEvent implements Cancellable { + private static final HandlerList handlers = new HandlerList(); + private Quester quester; + private boolean cancel = false; + + public QuestQuitEvent(Quest quest, Quester who) { + super(quest); + this.quester = who; + } + + /** + * Returns the quester involved in this event + * + * @return Quester who is involved in this event + */ + public Quester getQuester() { + return quester; + } + + @Override + public boolean isCancelled() { + return cancel; + } + + @Override + public void setCancelled(boolean cancel) { + this.cancel = cancel; + } + + @Override + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/main/src/main/java/me/blackvein/quests/events/quest/QuestTakeEvent.java b/main/src/main/java/me/blackvein/quests/events/quest/QuestTakeEvent.java new file mode 100644 index 000000000..f5889db1a --- /dev/null +++ b/main/src/main/java/me/blackvein/quests/events/quest/QuestTakeEvent.java @@ -0,0 +1,57 @@ +/******************************************************************************************************* + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *******************************************************************************************************/ + +package me.blackvein.quests.events.quest; + +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +import me.blackvein.quests.Quest; +import me.blackvein.quests.Quester; + +/** + * Called when a quest is taken by a quester + */ +public class QuestTakeEvent extends QuestEvent implements Cancellable { + private static final HandlerList handlers = new HandlerList(); + private Quester quester; + private boolean cancel = false; + + public QuestTakeEvent(Quest quest, Quester who) { + super(quest); + this.quester = who; + } + + /** + * Returns the quester involved in this event + * + * @return Quester who is involved in this event + */ + public Quester getQuester() { + return quester; + } + + @Override + public boolean isCancelled() { + return cancel; + } + + @Override + public void setCancelled(boolean cancel) { + this.cancel = cancel; + } + + @Override + public HandlerList getHandlers() { + return handlers; + } +} diff --git a/main/src/main/java/me/blackvein/quests/events/quester/QuesterEvent.java b/main/src/main/java/me/blackvein/quests/events/quester/QuesterEvent.java new file mode 100644 index 000000000..ec731dcfa --- /dev/null +++ b/main/src/main/java/me/blackvein/quests/events/quester/QuesterEvent.java @@ -0,0 +1,42 @@ +/******************************************************************************************************* + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *******************************************************************************************************/ + +package me.blackvein.quests.events.quester; + +import me.blackvein.quests.Quester; +import me.blackvein.quests.events.QuestsEvent; + +/** + * Represents a quester-related event + */ +public abstract class QuesterEvent extends QuestsEvent { + protected Quester quester; + + public QuesterEvent(final Quester quester) { + this.quester = quester; + } + + public QuesterEvent(final Quester quester, boolean async) { + super(async); + this.quester = quester; + + } + + /** + * Returns the quester involved in this event + * + * @return Quester which is involved in this event + */ + public final Quester getQuester() { + return quester; + } +} diff --git a/main/src/main/java/me/blackvein/quests/events/quester/QuesterPostChangeStageEvent.java b/main/src/main/java/me/blackvein/quests/events/quester/QuesterPostChangeStageEvent.java new file mode 100644 index 000000000..4f5a735b7 --- /dev/null +++ b/main/src/main/java/me/blackvein/quests/events/quester/QuesterPostChangeStageEvent.java @@ -0,0 +1,61 @@ +/******************************************************************************************************* + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *******************************************************************************************************/ + +package me.blackvein.quests.events.quester; + +import org.bukkit.event.HandlerList; + +import me.blackvein.quests.Quest; +import me.blackvein.quests.Quester; +import me.blackvein.quests.Stage; + +/** + * Called after a quester changes stage + */ +public class QuesterPostChangeStageEvent extends QuesterEvent { + private static final HandlerList handlers = new HandlerList(); + private Quest quest; + private Stage current; + private Stage next; + + public QuesterPostChangeStageEvent(Quester quester, Quest quest, Stage current, Stage next) { + super(quester); + this.quest = quest; + this.current = current; + this.next = next; + } + + /** + * Returns the quest involved in this event + * + * @return Quest who is involved in this event + */ + public Quest getQuest() { + return quest; + } + + public Stage getCurrentStage() { + return current; + } + + public Stage getNextStage() { + return next; + } + + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/main/src/main/java/me/blackvein/quests/events/quester/QuesterPostCompleteQuestEvent.java b/main/src/main/java/me/blackvein/quests/events/quester/QuesterPostCompleteQuestEvent.java new file mode 100644 index 000000000..10a6753bf --- /dev/null +++ b/main/src/main/java/me/blackvein/quests/events/quester/QuesterPostCompleteQuestEvent.java @@ -0,0 +1,48 @@ +/******************************************************************************************************* + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *******************************************************************************************************/ + +package me.blackvein.quests.events.quester; + +import org.bukkit.event.HandlerList; + +import me.blackvein.quests.Quest; +import me.blackvein.quests.Quester; + +/** + * Called after a quester completes a quest + */ +public class QuesterPostCompleteQuestEvent extends QuesterEvent { + private static final HandlerList handlers = new HandlerList(); + private Quest quest; + + public QuesterPostCompleteQuestEvent(Quester quester, Quest quest) { + super(quester); + this.quest = quest; + } + + /** + * Returns the quest involved in this event + * + * @return Quest who is involved in this event + */ + public Quest getQuest() { + return quest; + } + + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/main/src/main/java/me/blackvein/quests/events/quester/QuesterPostFailQuestEvent.java b/main/src/main/java/me/blackvein/quests/events/quester/QuesterPostFailQuestEvent.java new file mode 100644 index 000000000..07aaba576 --- /dev/null +++ b/main/src/main/java/me/blackvein/quests/events/quester/QuesterPostFailQuestEvent.java @@ -0,0 +1,48 @@ +/******************************************************************************************************* + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *******************************************************************************************************/ + +package me.blackvein.quests.events.quester; + +import org.bukkit.event.HandlerList; + +import me.blackvein.quests.Quest; +import me.blackvein.quests.Quester; + +/** + * Called after a quester fails a quest + */ +public class QuesterPostFailQuestEvent extends QuesterEvent { + private static final HandlerList handlers = new HandlerList(); + private Quest quest; + + public QuesterPostFailQuestEvent(Quester quester, Quest quest) { + super(quester); + this.quest = quest; + } + + /** + * Returns the quest involved in this event + * + * @return Quest who is involved in this event + */ + public Quest getQuest() { + return quest; + } + + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/main/src/main/java/me/blackvein/quests/events/quester/QuesterPostStartQuestEvent.java b/main/src/main/java/me/blackvein/quests/events/quester/QuesterPostStartQuestEvent.java new file mode 100644 index 000000000..5659686cc --- /dev/null +++ b/main/src/main/java/me/blackvein/quests/events/quester/QuesterPostStartQuestEvent.java @@ -0,0 +1,48 @@ +/******************************************************************************************************* + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *******************************************************************************************************/ + +package me.blackvein.quests.events.quester; + +import org.bukkit.event.HandlerList; + +import me.blackvein.quests.Quest; +import me.blackvein.quests.Quester; + +/** + * Called after a quester starts a quest + */ +public class QuesterPostStartQuestEvent extends QuesterEvent { + private static final HandlerList handlers = new HandlerList(); + private Quest quest; + + public QuesterPostStartQuestEvent(Quester quester, Quest quest) { + super(quester); + this.quest = quest; + } + + /** + * Returns the quest involved in this event + * + * @return Quest who is involved in this event + */ + public Quest getQuest() { + return quest; + } + + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/main/src/main/java/me/blackvein/quests/events/quester/QuesterPreChangeStageEvent.java b/main/src/main/java/me/blackvein/quests/events/quester/QuesterPreChangeStageEvent.java new file mode 100644 index 000000000..1af726eea --- /dev/null +++ b/main/src/main/java/me/blackvein/quests/events/quester/QuesterPreChangeStageEvent.java @@ -0,0 +1,73 @@ +/******************************************************************************************************* + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *******************************************************************************************************/ + +package me.blackvein.quests.events.quester; + +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +import me.blackvein.quests.Quest; +import me.blackvein.quests.Quester; +import me.blackvein.quests.Stage; + +/** + * Called before a quester changes stage + */ +public class QuesterPreChangeStageEvent extends QuesterEvent implements Cancellable { + private static final HandlerList handlers = new HandlerList(); + private Quest quest; + private Stage current; + private Stage next; + private boolean cancel = false;; + + public QuesterPreChangeStageEvent(Quester quester, Quest quest, Stage current, Stage next) { + super(quester); + this.quest = quest; + this.current = current; + this.next = next; + } + + /** + * Returns the quest involved in this event + * + * @return Quest who is involved in this event + */ + public Quest getQuest() { + return quest; + } + + public Stage getCurrentStage() { + return current; + } + + public Stage getNextStage() { + return next; + } + + @Override + public boolean isCancelled() { + return cancel; + } + + @Override + public void setCancelled(boolean cancel) { + this.cancel = cancel; + } + + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/main/src/main/java/me/blackvein/quests/events/quester/QuesterPreCompleteQuestEvent.java b/main/src/main/java/me/blackvein/quests/events/quester/QuesterPreCompleteQuestEvent.java new file mode 100644 index 000000000..0b57ae1a7 --- /dev/null +++ b/main/src/main/java/me/blackvein/quests/events/quester/QuesterPreCompleteQuestEvent.java @@ -0,0 +1,60 @@ +/******************************************************************************************************* + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *******************************************************************************************************/ + +package me.blackvein.quests.events.quester; + +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +import me.blackvein.quests.Quest; +import me.blackvein.quests.Quester; + +/** + * Called before a quester completes a quest + */ +public class QuesterPreCompleteQuestEvent extends QuesterEvent implements Cancellable { + private static final HandlerList handlers = new HandlerList(); + private Quest quest; + private boolean cancel = false; + + public QuesterPreCompleteQuestEvent(Quester quester, Quest quest) { + super(quester); + this.quest = quest; + } + + /** + * Returns the quest involved in this event + * + * @return Quest who is involved in this event + */ + public Quest getQuest() { + return quest; + } + + @Override + public boolean isCancelled() { + return cancel; + } + + @Override + public void setCancelled(boolean cancel) { + this.cancel = cancel; + } + + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/main/src/main/java/me/blackvein/quests/events/quester/QuesterPreFailQuestEvent.java b/main/src/main/java/me/blackvein/quests/events/quester/QuesterPreFailQuestEvent.java new file mode 100644 index 000000000..cadc76142 --- /dev/null +++ b/main/src/main/java/me/blackvein/quests/events/quester/QuesterPreFailQuestEvent.java @@ -0,0 +1,60 @@ +/******************************************************************************************************* + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *******************************************************************************************************/ + +package me.blackvein.quests.events.quester; + +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +import me.blackvein.quests.Quest; +import me.blackvein.quests.Quester; + +/** + * Called before a quester fails a quest + */ +public class QuesterPreFailQuestEvent extends QuesterEvent implements Cancellable { + private static final HandlerList handlers = new HandlerList(); + private Quest quest; + private boolean cancel = false; + + public QuesterPreFailQuestEvent(Quester quester, Quest quest) { + super(quester); + this.quest = quest; + } + + /** + * Returns the quest involved in this event + * + * @return Quest who is involved in this event + */ + public Quest getQuest() { + return quest; + } + + @Override + public boolean isCancelled() { + return cancel; + } + + @Override + public void setCancelled(boolean cancel) { + this.cancel = cancel; + } + + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/main/src/main/java/me/blackvein/quests/events/quester/QuesterPreStartQuestEvent.java b/main/src/main/java/me/blackvein/quests/events/quester/QuesterPreStartQuestEvent.java new file mode 100644 index 000000000..c5a67ef9e --- /dev/null +++ b/main/src/main/java/me/blackvein/quests/events/quester/QuesterPreStartQuestEvent.java @@ -0,0 +1,60 @@ +/******************************************************************************************************* + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *******************************************************************************************************/ + +package me.blackvein.quests.events.quester; + +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +import me.blackvein.quests.Quest; +import me.blackvein.quests.Quester; + +/** + * Called before a quester starts a quest + */ +public class QuesterPreStartQuestEvent extends QuesterEvent implements Cancellable { + private static final HandlerList handlers = new HandlerList(); + private Quest quest; + private boolean cancel = false; + + public QuesterPreStartQuestEvent(Quester quester, Quest quest) { + super(quester); + this.quest = quest; + } + + /** + * Returns the quest involved in this event + * + * @return Quest who is involved in this event + */ + public Quest getQuest() { + return quest; + } + + @Override + public boolean isCancelled() { + return cancel; + } + + @Override + public void setCancelled(boolean cancel) { + this.cancel = cancel; + } + + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/main/src/main/java/me/blackvein/quests/exceptions/InvalidStageException.java b/main/src/main/java/me/blackvein/quests/exceptions/InvalidStageException.java index 69e2e17fc..2de637365 100644 --- a/main/src/main/java/me/blackvein/quests/exceptions/InvalidStageException.java +++ b/main/src/main/java/me/blackvein/quests/exceptions/InvalidStageException.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/listeners/CmdExecutor.java b/main/src/main/java/me/blackvein/quests/listeners/CmdExecutor.java index 20f0f67b7..dc3c13962 100644 --- a/main/src/main/java/me/blackvein/quests/listeners/CmdExecutor.java +++ b/main/src/main/java/me/blackvein/quests/listeners/CmdExecutor.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -30,6 +30,8 @@ import me.blackvein.quests.Quester; import me.blackvein.quests.Quests; import me.blackvein.quests.Requirements; import me.blackvein.quests.Stage; +import me.blackvein.quests.events.quest.QuestQuitEvent; +import me.blackvein.quests.events.quest.QuestTakeEvent; import me.blackvein.quests.exceptions.InvalidStageException; import me.blackvein.quests.util.ItemUtil; import me.blackvein.quests.util.Lang; @@ -613,39 +615,40 @@ public class CmdExecutor implements CommandExecutor { } } - private boolean questsQuit(final Player player, String[] args) { + private void questsQuit(final Player player, String[] args) { if (plugin.getSettings().canAllowQuitting() == true) { if (((Player) player).hasPermission("quests.quit")) { if (args.length == 1) { player.sendMessage(ChatColor.RED + Lang.get(player, "COMMAND_QUIT_HELP")); - return true; + return; } Quester quester = plugin.getQuester(player.getUniqueId()); if (quester.getCurrentQuests().isEmpty() == false) { - Quest quest = plugin.getQuest(MiscUtil.concatArgArray(args, 1, args.length - 1, ' ')); - if (quest == null) { + Quest q = plugin.getQuest(MiscUtil.concatArgArray(args, 1, args.length - 1, ' ')); + if (q != null) { + QuestQuitEvent event = new QuestQuitEvent(q, quester); + plugin.getServer().getPluginManager().callEvent(event); + if (event.isCancelled()) { + return; + } + quester.hardQuit(q); + String msg = Lang.get("questQuit"); + msg = msg.replace("", ChatColor.DARK_PURPLE + q.getName() + ChatColor.YELLOW); + player.sendMessage(ChatColor.YELLOW + msg); + quester.saveData(); + quester.loadData(); + quester.updateJournal(); + } else { player.sendMessage(ChatColor.RED + Lang.get(player, "questNotFound")); - return true; } - quester.hardQuit(quest); - String msg = Lang.get("questQuit"); - msg = msg.replace("", ChatColor.DARK_PURPLE + quest.getName() + ChatColor.YELLOW); - player.sendMessage(ChatColor.YELLOW + msg); - quester.saveData(); - quester.loadData(); - quester.updateJournal(); - return true; } else { player.sendMessage(ChatColor.YELLOW + Lang.get(player, "noActiveQuest")); - return true; } } else { player.sendMessage(ChatColor.RED + Lang.get(player, "NoPermission")); - return true; } } else { player.sendMessage(ChatColor.YELLOW + Lang.get(player, "questQuitDisabled")); - return true; } } @@ -684,6 +687,11 @@ public class CmdExecutor implements CommandExecutor { if (questToFind != null) { final Quest q = questToFind; final Quester quester = plugin.getQuester(player.getUniqueId()); + QuestTakeEvent event = new QuestTakeEvent(q, quester); + plugin.getServer().getPluginManager().callEvent(event); + if (event.isCancelled()) { + return; + } if (quester.getCurrentQuests().size() >= plugin.getSettings().getMaxQuests() && plugin.getSettings().getMaxQuests() > 0) { String msg = Lang.get(player, "questMaxAllowed"); msg = msg.replace("", String.valueOf(plugin.getSettings().getMaxQuests())); diff --git a/main/src/main/java/me/blackvein/quests/listeners/DungeonsListener.java b/main/src/main/java/me/blackvein/quests/listeners/DungeonsListener.java index a2d110159..27a9d744a 100644 --- a/main/src/main/java/me/blackvein/quests/listeners/DungeonsListener.java +++ b/main/src/main/java/me/blackvein/quests/listeners/DungeonsListener.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/listeners/NpcListener.java b/main/src/main/java/me/blackvein/quests/listeners/NpcListener.java index 2f97bbc38..ce2efb5c6 100644 --- a/main/src/main/java/me/blackvein/quests/listeners/NpcListener.java +++ b/main/src/main/java/me/blackvein/quests/listeners/NpcListener.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -140,7 +140,7 @@ public class NpcListener implements Listener { // TODO translate enchantment names for (Entry e : esmeta.getStoredEnchants().entrySet()) { player.sendMessage(ChatColor.GRAY + "\u2515 " + ChatColor.DARK_GREEN - + Quester.prettyEnchantmentString(e.getKey()) + " " + RomanNumeral.getNumeral(e.getValue()) + "\n"); + + ItemUtil.getPrettyEnchantmentName(e.getKey()) + " " + RomanNumeral.getNumeral(e.getValue()) + "\n"); } } } diff --git a/main/src/main/java/me/blackvein/quests/listeners/PartiesListener.java b/main/src/main/java/me/blackvein/quests/listeners/PartiesListener.java index 517793ad2..846802861 100644 --- a/main/src/main/java/me/blackvein/quests/listeners/PartiesListener.java +++ b/main/src/main/java/me/blackvein/quests/listeners/PartiesListener.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/listeners/PlayerListener.java b/main/src/main/java/me/blackvein/quests/listeners/PlayerListener.java index 723670d00..3d0c4d14b 100644 --- a/main/src/main/java/me/blackvein/quests/listeners/PlayerListener.java +++ b/main/src/main/java/me/blackvein/quests/listeners/PlayerListener.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/particle/ParticleProvider.java b/main/src/main/java/me/blackvein/quests/particle/ParticleProvider.java index c8d3fe875..48dc211ef 100644 --- a/main/src/main/java/me/blackvein/quests/particle/ParticleProvider.java +++ b/main/src/main/java/me/blackvein/quests/particle/ParticleProvider.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -9,6 +9,7 @@ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************************************************************************************** */ + package me.blackvein.quests.particle; import java.util.Map; diff --git a/main/src/main/java/me/blackvein/quests/particle/ParticleProvider_Bukkit.java b/main/src/main/java/me/blackvein/quests/particle/ParticleProvider_Bukkit.java index 0375147f8..57ab4e2bb 100644 --- a/main/src/main/java/me/blackvein/quests/particle/ParticleProvider_Bukkit.java +++ b/main/src/main/java/me/blackvein/quests/particle/ParticleProvider_Bukkit.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -9,6 +9,7 @@ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************************************************************************************** */ + package me.blackvein.quests.particle; import java.util.HashMap; diff --git a/main/src/main/java/me/blackvein/quests/particle/PreBuiltParticle.java b/main/src/main/java/me/blackvein/quests/particle/PreBuiltParticle.java index 3a4f70c16..e42feb891 100644 --- a/main/src/main/java/me/blackvein/quests/particle/PreBuiltParticle.java +++ b/main/src/main/java/me/blackvein/quests/particle/PreBuiltParticle.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -9,6 +9,7 @@ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************************************************************************************** */ + package me.blackvein.quests.particle; import java.util.HashMap; diff --git a/main/src/main/java/me/blackvein/quests/prompts/BlocksPrompt.java b/main/src/main/java/me/blackvein/quests/prompts/BlocksPrompt.java index b39bad38d..bd6a52716 100644 --- a/main/src/main/java/me/blackvein/quests/prompts/BlocksPrompt.java +++ b/main/src/main/java/me/blackvein/quests/prompts/BlocksPrompt.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -16,9 +16,9 @@ import java.util.LinkedList; import java.util.List; import me.blackvein.quests.QuestFactory; -import me.blackvein.quests.Quester; import me.blackvein.quests.Quests; import me.blackvein.quests.util.CK; +import me.blackvein.quests.util.ItemUtil; import me.blackvein.quests.util.Lang; import org.bukkit.ChatColor; @@ -54,7 +54,7 @@ public class BlocksPrompt extends FixedSetPrompt { LinkedList names = (LinkedList) context.getSessionData(pref + CK.S_BREAK_NAMES); LinkedList amnts = (LinkedList) context.getSessionData(pref + CK.S_BREAK_AMOUNTS); for (int i = 0; i < names.size(); i++) { - text += ChatColor.GRAY + " - " + ChatColor.BLUE + Quester.prettyItemString(names.get(i)) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + "\n"; + text += ChatColor.GRAY + " - " + ChatColor.BLUE + ItemUtil.getPrettyItemName(names.get(i)) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + "\n"; } } if (context.getSessionData(pref + CK.S_DAMAGE_NAMES) == null) { @@ -64,7 +64,7 @@ public class BlocksPrompt extends FixedSetPrompt { LinkedList names = (LinkedList) context.getSessionData(pref + CK.S_DAMAGE_NAMES); LinkedList amnts = (LinkedList) context.getSessionData(pref + CK.S_DAMAGE_AMOUNTS); for (int i = 0; i < names.size(); i++) { - text += ChatColor.GRAY + " - " + ChatColor.BLUE + Quester.prettyItemString(names.get(i)) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + "\n"; + text += ChatColor.GRAY + " - " + ChatColor.BLUE + ItemUtil.getPrettyItemName(names.get(i)) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + "\n"; } } if (context.getSessionData(pref + CK.S_PLACE_NAMES) == null) { @@ -74,7 +74,7 @@ public class BlocksPrompt extends FixedSetPrompt { LinkedList names = (LinkedList) context.getSessionData(pref + CK.S_PLACE_NAMES); LinkedList amnts = (LinkedList) context.getSessionData(pref + CK.S_PLACE_AMOUNTS); for (int i = 0; i < names.size(); i++) { - text += ChatColor.GRAY + " - " + ChatColor.BLUE + Quester.prettyItemString(names.get(i)) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + "\n"; + text += ChatColor.GRAY + " - " + ChatColor.BLUE + ItemUtil.getPrettyItemName(names.get(i)) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + "\n"; } } if (context.getSessionData(pref + CK.S_USE_NAMES) == null) { @@ -84,7 +84,7 @@ public class BlocksPrompt extends FixedSetPrompt { LinkedList names = (LinkedList) context.getSessionData(pref + CK.S_USE_NAMES); LinkedList amnts = (LinkedList) context.getSessionData(pref + CK.S_USE_AMOUNTS); for (int i = 0; i < names.size(); i++) { - text += ChatColor.GRAY + " - " + ChatColor.BLUE + Quester.prettyItemString(names.get(i)) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + "\n"; + text += ChatColor.GRAY + " - " + ChatColor.BLUE + ItemUtil.getPrettyItemName(names.get(i)) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + "\n"; } } if (context.getSessionData(pref + CK.S_CUT_NAMES) == null) { @@ -94,7 +94,7 @@ public class BlocksPrompt extends FixedSetPrompt { LinkedList names = (LinkedList) context.getSessionData(pref + CK.S_CUT_NAMES); LinkedList amnts = (LinkedList) context.getSessionData(pref + CK.S_CUT_AMOUNTS); for (int i = 0; i < names.size(); i++) { - text += ChatColor.GRAY + " - " + ChatColor.BLUE + Quester.prettyItemString(names.get(i)) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + "\n"; + text += ChatColor.GRAY + " - " + ChatColor.BLUE + ItemUtil.getPrettyItemName(names.get(i)) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + "\n"; } } text += ChatColor.GREEN + "" + ChatColor.BOLD + "6 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("done") + "\n"; @@ -140,7 +140,7 @@ public class BlocksPrompt extends FixedSetPrompt { } else { text += ChatColor.BLUE + "" + ChatColor.BOLD + "1" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetBlockNames") + "\n"; for (String s : getBlockNames(context)) { - text += ChatColor.GRAY + " - " + ChatColor.AQUA + Quester.prettyItemString(s) + "\n"; + text += ChatColor.GRAY + " - " + ChatColor.AQUA + ItemUtil.getPrettyItemName(s) + "\n"; } if (context.getSessionData(pref + CK.S_BREAK_AMOUNTS) == null) { text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetBlockAmounts") + " (" + Lang.get("noneSet") + ")\n"; @@ -357,7 +357,7 @@ public class BlocksPrompt extends FixedSetPrompt { } else { text += ChatColor.BLUE + "" + ChatColor.BOLD + "1" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetBlockNames") + "\n"; for (String s : getBlockNames(context)) { - text += ChatColor.GRAY + " - " + ChatColor.AQUA + Quester.prettyItemString(s) + "\n"; + text += ChatColor.GRAY + " - " + ChatColor.AQUA + ItemUtil.getPrettyItemName(s) + "\n"; } if (context.getSessionData(pref + CK.S_DAMAGE_AMOUNTS) == null) { text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetDamageAmounts") + " (" + Lang.get("noneSet") + ")\n"; @@ -574,7 +574,7 @@ public class BlocksPrompt extends FixedSetPrompt { } else { text += ChatColor.BLUE + "" + ChatColor.BOLD + "1" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetBlockNames") + "\n"; for (String s : getBlockNames(context)) { - text += ChatColor.GRAY + " - " + ChatColor.AQUA + Quester.prettyItemString(s) + "\n"; + text += ChatColor.GRAY + " - " + ChatColor.AQUA + ItemUtil.getPrettyItemName(s) + "\n"; } if (context.getSessionData(pref + CK.S_PLACE_AMOUNTS) == null) { text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetPlaceAmounts") + " (" + Lang.get("noneSet") + ")\n"; @@ -791,7 +791,7 @@ public class BlocksPrompt extends FixedSetPrompt { } else { text += ChatColor.BLUE + "" + ChatColor.BOLD + "1" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetBlockNames") + "\n"; for (String s : getBlockNames(context)) { - text += ChatColor.GRAY + " - " + ChatColor.AQUA + Quester.prettyItemString(s) + "\n"; + text += ChatColor.GRAY + " - " + ChatColor.AQUA + ItemUtil.getPrettyItemName(s) + "\n"; } if (context.getSessionData(pref + CK.S_USE_AMOUNTS) == null) { text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetUseAmounts") + " (" + Lang.get("noneSet") + ")\n"; @@ -1008,7 +1008,7 @@ public class BlocksPrompt extends FixedSetPrompt { } else { text += ChatColor.BLUE + "" + ChatColor.BOLD + "1" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetBlockNames") + "\n"; for (String s : getBlockNames(context)) { - text += ChatColor.GRAY + " - " + ChatColor.AQUA + Quester.prettyItemString(s) + "\n"; + text += ChatColor.GRAY + " - " + ChatColor.AQUA + ItemUtil.getPrettyItemName(s) + "\n"; } if (context.getSessionData(pref + CK.S_CUT_AMOUNTS) == null) { text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetCutAmounts") + " (" + Lang.get("noneSet") + ")\n"; diff --git a/main/src/main/java/me/blackvein/quests/prompts/CreateStagePrompt.java b/main/src/main/java/me/blackvein/quests/prompts/CreateStagePrompt.java index d82fe3e9f..0ab1f046a 100644 --- a/main/src/main/java/me/blackvein/quests/prompts/CreateStagePrompt.java +++ b/main/src/main/java/me/blackvein/quests/prompts/CreateStagePrompt.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/prompts/DateTimePrompt.java b/main/src/main/java/me/blackvein/quests/prompts/DateTimePrompt.java index 98701bb78..1d7ecf488 100644 --- a/main/src/main/java/me/blackvein/quests/prompts/DateTimePrompt.java +++ b/main/src/main/java/me/blackvein/quests/prompts/DateTimePrompt.java @@ -1,3 +1,15 @@ +/******************************************************************************************************* + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *******************************************************************************************************/ + package me.blackvein.quests.prompts; import java.text.DecimalFormat; diff --git a/main/src/main/java/me/blackvein/quests/prompts/ItemStackPrompt.java b/main/src/main/java/me/blackvein/quests/prompts/ItemStackPrompt.java index 7870f7d4c..db888f23b 100644 --- a/main/src/main/java/me/blackvein/quests/prompts/ItemStackPrompt.java +++ b/main/src/main/java/me/blackvein/quests/prompts/ItemStackPrompt.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -32,7 +32,6 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import me.blackvein.quests.Quester; import me.blackvein.quests.Quests; import me.blackvein.quests.util.ItemUtil; import me.blackvein.quests.util.Lang; @@ -376,7 +375,7 @@ public class ItemStackPrompt extends FixedSetPrompt { public String getPromptText(ConversationContext cc) { String text = ChatColor.LIGHT_PURPLE + Lang.get("enchantmentsTitle") + "\n"; for (Enchantment e : Enchantment.values()) { - text += ChatColor.GREEN + Quester.prettyEnchantmentString(e) + ", "; + text += ChatColor.GREEN + ItemUtil.getPrettyEnchantmentName(e) + ", "; } text = text.substring(0, text.length() - 2); return text + "\n" + ChatColor.YELLOW + Lang.get("itemCreateEnterEnch"); @@ -386,10 +385,10 @@ public class ItemStackPrompt extends FixedSetPrompt { public Prompt acceptInput(ConversationContext cc, String input) { String s = input.replace(":", ""); if (s.equalsIgnoreCase(Lang.get("cmdClear")) == false && s.equalsIgnoreCase(Lang.get("cmdCancel")) == false) { - Enchantment e = Quests.getEnchantmentPretty(MiscUtil.getCapitalized(s)); + Enchantment e = ItemUtil.getEnchantmentFromPrettyName(MiscUtil.getCapitalized(s)); if (e != null) { cc.setSessionData("tempEnchant", e); - return new LevelPrompt(Quester.prettyEnchantmentString(e)); + return new LevelPrompt(ItemUtil.getPrettyEnchantmentName(e)); } else { cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidEnch")); return new EnchantmentPrompt(); @@ -490,14 +489,14 @@ public class ItemStackPrompt extends FixedSetPrompt { String item; if (cc.getSessionData("tempDisplay") == null) { String name = (String) cc.getSessionData("tempName"); - item = ChatColor.AQUA + Quester.prettyItemString(name); + item = ChatColor.AQUA + ItemUtil.getPrettyItemName(name); if (cc.getSessionData("tempData") != null) { item += ":" + ChatColor.BLUE + (Short) cc.getSessionData("tempData"); } } else { item = ChatColor.LIGHT_PURPLE + "" + ChatColor.ITALIC + (String) cc.getSessionData("tempDisplay") + ChatColor.RESET + "" + ChatColor.GRAY + " ("; String name = (String) cc.getSessionData("tempName"); - item += ChatColor.AQUA + Quester.prettyItemString(name); + item += ChatColor.AQUA + ItemUtil.getPrettyItemName(name); if (cc.getSessionData("tempData") != null) { item += ":" + ChatColor.BLUE + (Short) cc.getSessionData("tempData"); } @@ -513,7 +512,7 @@ public class ItemStackPrompt extends FixedSetPrompt { @SuppressWarnings("unchecked") Map enchantments = (Map) cc.getSessionData("tempEnchantments"); for (Entry e : enchantments.entrySet()) { - item += ChatColor.GRAY + " - " + ChatColor.RED + Quester.prettyEnchantmentString(e.getKey()) + " " + RomanNumeral.getNumeral(e.getValue()) + "\n"; + item += ChatColor.GRAY + " - " + ChatColor.RED + ItemUtil.getPrettyEnchantmentName(e.getKey()) + " " + RomanNumeral.getNumeral(e.getValue()) + "\n"; } } if (cc.getSessionData("tempLore") != null) { diff --git a/main/src/main/java/me/blackvein/quests/prompts/ItemsPrompt.java b/main/src/main/java/me/blackvein/quests/prompts/ItemsPrompt.java index 45a733bb7..0d1f71df1 100644 --- a/main/src/main/java/me/blackvein/quests/prompts/ItemsPrompt.java +++ b/main/src/main/java/me/blackvein/quests/prompts/ItemsPrompt.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -16,7 +16,6 @@ import java.util.LinkedList; import java.util.List; import me.blackvein.quests.QuestFactory; -import me.blackvein.quests.Quester; import me.blackvein.quests.Quests; import me.blackvein.quests.util.CK; import me.blackvein.quests.util.ItemUtil; @@ -90,7 +89,8 @@ public class ItemsPrompt extends FixedSetPrompt { LinkedList names = (LinkedList) context.getSessionData(pref + CK.S_ENCHANT_NAMES); LinkedList amnts = (LinkedList) context.getSessionData(pref + CK.S_ENCHANT_AMOUNTS); for (int i = 0; i < enchants.size(); i++) { - text += ChatColor.GRAY + " - " + ChatColor.BLUE + Quester.prettyItemString(names.get(i)) + ChatColor.GRAY + " " + Lang.get("with") + " " + ChatColor.AQUA + Quester.prettyEnchantmentString(Quests.getEnchantment(enchants.get(i))) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + "\n"; + text += ChatColor.GRAY + " - " + ChatColor.BLUE + ItemUtil.getPrettyItemName(names.get(i)) + ChatColor.GRAY + " " + Lang.get("with") + " " + ChatColor.AQUA + + ItemUtil.getPrettyEnchantmentName(ItemUtil.getEnchantmentFromProperName(enchants.get(i))) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + "\n"; } } text += ChatColor.GREEN + "" + ChatColor.BOLD + "4 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("done") + "\n"; @@ -255,7 +255,7 @@ public class ItemsPrompt extends FixedSetPrompt { } else { text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetItemNames") + "\n"; for (String s : getEnchantItems(context)) { - text += ChatColor.GRAY + " - " + ChatColor.AQUA + Quester.prettyItemString(s) + "\n"; + text += ChatColor.GRAY + " - " + ChatColor.AQUA + ItemUtil.getPrettyItemName(s) + "\n"; } } if (context.getSessionData(pref + CK.S_ENCHANT_AMOUNTS) == null) { @@ -349,9 +349,9 @@ public class ItemsPrompt extends FixedSetPrompt { String text = ChatColor.LIGHT_PURPLE + "- " + ChatColor.DARK_PURPLE + Lang.get("stageEditorEnchantments") + ChatColor.LIGHT_PURPLE + " -\n"; for (int i = 0; i < Enchantment.values().length; i++) { if (i == Enchantment.values().length - 1) { - text += ChatColor.GREEN + Quester.prettyEnchantmentString(Enchantment.values()[i]) + " "; + text += ChatColor.GREEN + ItemUtil.getPrettyEnchantmentName(Enchantment.values()[i]) + " "; } else { - text += ChatColor.GREEN + Quester.prettyEnchantmentString(Enchantment.values()[i]) + ", "; + text += ChatColor.GREEN + ItemUtil.getPrettyEnchantmentName(Enchantment.values()[i]) + ", "; } } text = text.substring(0, text.length() - 1); @@ -368,9 +368,9 @@ public class ItemsPrompt extends FixedSetPrompt { s = s.trim(); valid = false; for (Enchantment e : Enchantment.values()) { - if (Quester.prettyEnchantmentString(e).equalsIgnoreCase(s)) { + if (ItemUtil.getPrettyEnchantmentName(e).equalsIgnoreCase(s)) { if (enchs.contains(s) == false) { - enchs.add(Quester.prettyEnchantmentString(e)); + enchs.add(ItemUtil.getPrettyEnchantmentName(e)); valid = true; break; } else { diff --git a/main/src/main/java/me/blackvein/quests/prompts/MobsPrompt.java b/main/src/main/java/me/blackvein/quests/prompts/MobsPrompt.java index db800349f..e5168b358 100644 --- a/main/src/main/java/me/blackvein/quests/prompts/MobsPrompt.java +++ b/main/src/main/java/me/blackvein/quests/prompts/MobsPrompt.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -31,7 +31,6 @@ import org.bukkit.entity.Player; import org.bukkit.entity.Tameable; import me.blackvein.quests.QuestFactory; -import me.blackvein.quests.Quester; import me.blackvein.quests.Quests; import me.blackvein.quests.util.CK; import me.blackvein.quests.util.Lang; @@ -64,7 +63,7 @@ public class MobsPrompt extends FixedSetPrompt { LinkedList amnts = (LinkedList) context.getSessionData(pref + CK.S_MOB_AMOUNTS); if (context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS) == null) { for (int i = 0; i < mobs.size(); i++) { - text += ChatColor.GRAY + " - " + ChatColor.AQUA + Quester.prettyMobString(Quests.getMobType(mobs.get(i))) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + "\n"; + text += ChatColor.GRAY + " - " + ChatColor.AQUA + MiscUtil.getPrettyMobName(Quests.getMobType(mobs.get(i))) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + "\n"; } } else { LinkedList locs = (LinkedList) context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS); @@ -73,7 +72,7 @@ public class MobsPrompt extends FixedSetPrompt { for (int i = 0; i < mobs.size(); i++) { String msg = Lang.get("blocksWithin"); msg = msg.replaceAll("", ChatColor.DARK_PURPLE + "" + radii.get(i) + ChatColor.GRAY); - text += ChatColor.GRAY + " - " + ChatColor.BLUE + Quester.prettyMobString(Quests.getMobType(mobs.get(i))) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + ChatColor.GRAY + msg + ChatColor.YELLOW + names.get(i) + " (" + locs.get(i) + ")\n"; + text += ChatColor.GRAY + " - " + ChatColor.BLUE + MiscUtil.getPrettyMobName(Quests.getMobType(mobs.get(i))) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + ChatColor.GRAY + msg + ChatColor.YELLOW + names.get(i) + " (" + locs.get(i) + ")\n"; } } } @@ -612,7 +611,7 @@ public class MobsPrompt extends FixedSetPrompt { if (Quests.getMobType(s) != null) { final EntityType type = Quests.getMobType(s); if (type.isAlive() || Tameable.class.isAssignableFrom(type.getEntityClass())) { - mobTypes.add(Quester.prettyMobString(type)); + mobTypes.add(MiscUtil.getPrettyMobName(type)); context.setSessionData(pref + CK.S_TAME_TYPES, mobTypes); } else { player.sendMessage(ChatColor.LIGHT_PURPLE + s + " " + ChatColor.RED + Lang.get("stageEditorInvalidMob")); @@ -751,9 +750,9 @@ public class MobsPrompt extends FixedSetPrompt { final DyeColor[] colArr = DyeColor.values(); for (int i = 0; i < colArr.length; i++) { if (i < (colArr.length - 1)) { - cols += Quests.getDyeString(colArr[i]) + ", "; + cols += MiscUtil.getDyeString(colArr[i]) + ", "; } else { - cols += Quests.getDyeString(colArr[i]) + "\n"; + cols += MiscUtil.getDyeString(colArr[i]) + "\n"; } } return cols + ChatColor.YELLOW + Lang.get("stageEditorShearColorsPrompt"); @@ -765,8 +764,8 @@ public class MobsPrompt extends FixedSetPrompt { if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) { LinkedList colors = new LinkedList(); for (String s : input.split(" ")) { - if (Quests.getDyeColor(s) != null) { - colors.add(Quests.getDyeString(Quests.getDyeColor(s))); + if (MiscUtil.getDyeColor(s) != null) { + colors.add(MiscUtil.getDyeString(MiscUtil.getDyeColor(s))); context.setSessionData(pref + CK.S_SHEAR_COLORS, colors); } else { player.sendMessage(ChatColor.LIGHT_PURPLE + s + " " + ChatColor.RED + Lang.get("stageEditorInvalidDye")); diff --git a/main/src/main/java/me/blackvein/quests/prompts/NPCsPrompt.java b/main/src/main/java/me/blackvein/quests/prompts/NPCsPrompt.java index 604b92d06..cd5c02418 100644 --- a/main/src/main/java/me/blackvein/quests/prompts/NPCsPrompt.java +++ b/main/src/main/java/me/blackvein/quests/prompts/NPCsPrompt.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/prompts/OptionsPrompt.java b/main/src/main/java/me/blackvein/quests/prompts/OptionsPrompt.java index 141e4c8bd..52454f837 100644 --- a/main/src/main/java/me/blackvein/quests/prompts/OptionsPrompt.java +++ b/main/src/main/java/me/blackvein/quests/prompts/OptionsPrompt.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/prompts/PlannerPrompt.java b/main/src/main/java/me/blackvein/quests/prompts/PlannerPrompt.java index c6d248ba3..b26234284 100644 --- a/main/src/main/java/me/blackvein/quests/prompts/PlannerPrompt.java +++ b/main/src/main/java/me/blackvein/quests/prompts/PlannerPrompt.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/prompts/QuestAcceptPrompt.java b/main/src/main/java/me/blackvein/quests/prompts/QuestAcceptPrompt.java index 2b922f148..2eb94371f 100644 --- a/main/src/main/java/me/blackvein/quests/prompts/QuestAcceptPrompt.java +++ b/main/src/main/java/me/blackvein/quests/prompts/QuestAcceptPrompt.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/prompts/RequirementsPrompt.java b/main/src/main/java/me/blackvein/quests/prompts/RequirementsPrompt.java index 36784e166..23b96090b 100644 --- a/main/src/main/java/me/blackvein/quests/prompts/RequirementsPrompt.java +++ b/main/src/main/java/me/blackvein/quests/prompts/RequirementsPrompt.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/prompts/RewardsPrompt.java b/main/src/main/java/me/blackvein/quests/prompts/RewardsPrompt.java index 85deae8af..f6d2b3d40 100644 --- a/main/src/main/java/me/blackvein/quests/prompts/RewardsPrompt.java +++ b/main/src/main/java/me/blackvein/quests/prompts/RewardsPrompt.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -32,11 +32,11 @@ import com.herocraftonline.heroes.characters.classes.HeroClass; import me.blackvein.quests.CustomReward; import me.blackvein.quests.QuestFactory; -import me.blackvein.quests.Quester; import me.blackvein.quests.Quests; import me.blackvein.quests.util.CK; import me.blackvein.quests.util.ItemUtil; import me.blackvein.quests.util.Lang; +import me.blackvein.quests.util.MiscUtil; public class RewardsPrompt extends FixedSetPrompt { @@ -502,7 +502,7 @@ public class RewardsPrompt extends FixedSetPrompt { for (String s : args) { if (Quests.getMcMMOSkill(s) != null) { if (skills.contains(s) == false) { - skills.add(Quester.getCapitalized(s)); + skills.add(MiscUtil.getCapitalized(s)); } else { context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("listDuplicate")); return new mcMMOSkillsPrompt(); diff --git a/main/src/main/java/me/blackvein/quests/prompts/StagesPrompt.java b/main/src/main/java/me/blackvein/quests/prompts/StagesPrompt.java index 4024b95f1..df6b86ade 100644 --- a/main/src/main/java/me/blackvein/quests/prompts/StagesPrompt.java +++ b/main/src/main/java/me/blackvein/quests/prompts/StagesPrompt.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/timers/ActionTimer.java b/main/src/main/java/me/blackvein/quests/timers/ActionTimer.java index 792d3b0d8..95451e9c6 100644 --- a/main/src/main/java/me/blackvein/quests/timers/ActionTimer.java +++ b/main/src/main/java/me/blackvein/quests/timers/ActionTimer.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/timers/StageTimer.java b/main/src/main/java/me/blackvein/quests/timers/StageTimer.java index 15ae33acb..ddb65d2e2 100644 --- a/main/src/main/java/me/blackvein/quests/timers/StageTimer.java +++ b/main/src/main/java/me/blackvein/quests/timers/StageTimer.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/util/CK.java b/main/src/main/java/me/blackvein/quests/util/CK.java index e17afc4a0..57270ccd3 100644 --- a/main/src/main/java/me/blackvein/quests/util/CK.java +++ b/main/src/main/java/me/blackvein/quests/util/CK.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/util/ItemUtil.java b/main/src/main/java/me/blackvein/quests/util/ItemUtil.java index 4f59e84c7..13ad0e9fc 100644 --- a/main/src/main/java/me/blackvein/quests/util/ItemUtil.java +++ b/main/src/main/java/me/blackvein/quests/util/ItemUtil.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -33,8 +33,6 @@ import org.bukkit.inventory.meta.EnchantmentStorageMeta; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.PotionMeta; -import me.blackvein.quests.Quester; - public class ItemUtil { /** @@ -442,7 +440,7 @@ public class ItemUtil { if (is.getEnchantments().isEmpty() == false) { text += " " + ChatColor.GRAY + Lang.get("with") + ChatColor.DARK_PURPLE; for (Entry e : is.getEnchantments().entrySet()) { - text += " " + Quester.prettyEnchantmentString(e.getKey()) + ":" + e.getValue(); + text += " " + ItemUtil.getPrettyEnchantmentName(e.getKey()) + ":" + e.getValue(); } } text += ChatColor.AQUA + " x " + is.getAmount(); @@ -468,7 +466,7 @@ public class ItemUtil { if (is.hasItemMeta() && is.getItemMeta().hasDisplayName()) { text = "" + ChatColor.DARK_AQUA + ChatColor.ITALIC + is.getItemMeta().getDisplayName() + ChatColor.RESET + ChatColor.AQUA + " x " + is.getAmount(); } else { - text = ChatColor.AQUA + Quester.prettyItemString(is.getType().name()); + text = ChatColor.AQUA + getPrettyItemName(is.getType().name()); if (is.getDurability() != 0) { text += ChatColor.AQUA + ":" + is.getDurability(); } @@ -491,7 +489,7 @@ public class ItemUtil { if (is.hasItemMeta() && is.getItemMeta().hasDisplayName()) { text = "" + ChatColor.DARK_AQUA + ChatColor.ITALIC + is.getItemMeta().getDisplayName(); } else { - text = ChatColor.AQUA + Quester.prettyItemString(is.getType().name()); + text = ChatColor.AQUA + getPrettyItemName(is.getType().name()); } return text; } @@ -525,4 +523,124 @@ public class ItemUtil { return false; return is.getItemMeta().getDisplayName().equals(ChatColor.LIGHT_PURPLE + Lang.get("journalTitle")); } + + + /** + * Cleans up item names. 'WOODEN_BUTTON' becomes 'Wooden Button' + * + * @param itemName any item name, ideally + * @return cleaned-up string + */ + public static String getPrettyItemName(String itemName) { + String baseString = Material.matchMaterial(itemName).toString(); + String[] substrings = baseString.split("_"); + String prettyString = ""; + int size = 1; + for (String s : substrings) { + prettyString = prettyString.concat(MiscUtil.getCapitalized(s)); + if (size < substrings.length) { + prettyString = prettyString.concat(" "); + } + size++; + } + return prettyString; + } + + /** + * Gets player-friendly name from enchantment. 'FIRE_ASPECT' becomes 'Fire Aspect' + * + * @param e Enchantment to get pretty localized name of + * @return pretty localized name + */ + public static String getPrettyEnchantmentName(Enchantment e) { + String prettyString = getEnchantmentName(e); + prettyString = MiscUtil.capitalsToSpaces(prettyString); + return prettyString; + } + + /** + * Gets name of enchantment exactly as it appears in lang file + * + * @param e Enchantment to get localized name of + * @return localized name + */ + @SuppressWarnings("deprecation") // since 1.13 + private static String getEnchantmentName(Enchantment e) { + try { + return (Lang.get("ENCHANTMENT_" + e.getName())); + } catch (NullPointerException ne) { + Bukkit.getLogger().warning(e.getName() + " was not found in Lang.yml, please ask the developer to " + + "update the file or simply add an entry for the enchantment"); + return e.getName().toLowerCase().replace("_", " "); + } + } + + @SuppressWarnings("deprecation") // since 1.13 + public static Enchantment getEnchantmentFromProperName(String enchant) { + String ench = Lang.getKey(enchant.replace(" ", "")); + ench = ench.replace("ENCHANTMENT_", ""); + Enchantment e = Enchantment.getByName(ench); + return e != null ? e : getEnchantmentFromProperLegacyName(ench.replace(" ", "")); + } + + public static Enchantment getEnchantmentFromProperLegacyName(String enchant) { + if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_ARROW_DAMAGE"))) { + return Enchantment.ARROW_DAMAGE; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_ARROW_FIRE"))) { + return Enchantment.ARROW_FIRE; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_ARROW_INFINITE"))) { + return Enchantment.ARROW_INFINITE; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_ARROW_KNOCKBACK"))) { + return Enchantment.ARROW_KNOCKBACK; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_DAMAGE_ALL"))) { + return Enchantment.DAMAGE_ALL; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_DAMAGE_ARTHROPODS"))) { + return Enchantment.DAMAGE_ARTHROPODS; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_DAMAGE_UNDEAD"))) { + return Enchantment.DAMAGE_UNDEAD; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_DIG_SPEED"))) { + return Enchantment.DIG_SPEED; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_DURABILITY"))) { + return Enchantment.DURABILITY; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_FIRE_ASPECT"))) { + return Enchantment.FIRE_ASPECT; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_KNOCKBACK"))) { + return Enchantment.KNOCKBACK; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_LOOT_BONUS_BLOCKS"))) { + return Enchantment.LOOT_BONUS_BLOCKS; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_LOOT_BONUS_MOBS"))) { + return Enchantment.LOOT_BONUS_MOBS; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_LUCK"))) { + return Enchantment.LOOT_BONUS_MOBS; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_LURE"))) { + return Enchantment.LOOT_BONUS_MOBS; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_OXYGEN"))) { + return Enchantment.OXYGEN; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_PROTECTION_ENVIRONMENTAL"))) { + return Enchantment.PROTECTION_ENVIRONMENTAL; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_PROTECTION_EXPLOSIONS"))) { + return Enchantment.PROTECTION_EXPLOSIONS; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_PROTECTION_FALL"))) { + return Enchantment.PROTECTION_FALL; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_PROTECTION_FIRE"))) { + return Enchantment.PROTECTION_FIRE; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_PROTECTION_PROJECTILE"))) { + return Enchantment.PROTECTION_PROJECTILE; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_SILK_TOUCH"))) { + return Enchantment.SILK_TOUCH; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_THORNS"))) { + return Enchantment.THORNS; + } else if (enchant.equalsIgnoreCase(Lang.get("ENCHANTMENT_WATER_WORKER"))) { + return Enchantment.WATER_WORKER; + } else { + return null; + } + } + + public static Enchantment getEnchantmentFromPrettyName(String enchant) { + while (MiscUtil.spaceToCapital(enchant) != null) { + enchant = MiscUtil.spaceToCapital(enchant); + } + return getEnchantmentFromProperName(enchant); + } } \ No newline at end of file diff --git a/main/src/main/java/me/blackvein/quests/util/Lang.java b/main/src/main/java/me/blackvein/quests/util/Lang.java index 2b1086d22..d150642d6 100644 --- a/main/src/main/java/me/blackvein/quests/util/Lang.java +++ b/main/src/main/java/me/blackvein/quests/util/Lang.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/util/LocaleQuery.java b/main/src/main/java/me/blackvein/quests/util/LocaleQuery.java index a75ad145b..96d06cff6 100644 --- a/main/src/main/java/me/blackvein/quests/util/LocaleQuery.java +++ b/main/src/main/java/me/blackvein/quests/util/LocaleQuery.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/java/me/blackvein/quests/util/MiscUtil.java b/main/src/main/java/me/blackvein/quests/util/MiscUtil.java index 8dfebd296..070943ca8 100644 --- a/main/src/main/java/me/blackvein/quests/util/MiscUtil.java +++ b/main/src/main/java/me/blackvein/quests/util/MiscUtil.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -15,19 +15,44 @@ package me.blackvein.quests.util; import java.util.LinkedList; import org.bukkit.ChatColor; +import org.bukkit.Color; +import org.bukkit.DyeColor; import org.bukkit.entity.EntityType; public class MiscUtil { - public static String getCapitalized(String s) { - if (s.isEmpty()) { - return s; + public static String getCapitalized(String input) { + if (input.isEmpty()) { + return input; } - s = s.toLowerCase(); - String s2 = s.substring(0, 1); - s2 = s2.toUpperCase(); - s = s.substring(1, s.length()); - return s2 + s; + String firstLetter = input.substring(0, 1); + String remainder = input.substring(1); + String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase(); + return capitalized; + } + + /** + * Gets player-friendly name from type. 'ENDER_DRAGON' becomes 'Ender Dragon' + * + * @param type any mob type, ideally + * @return cleaned-up string + */ + public static String getPrettyMobName(EntityType type) { + String baseString = type.toString(); + String[] substrings = baseString.split("_"); + String prettyString = ""; + int size = 1; + for (String s : substrings) { + prettyString = prettyString.concat(getCapitalized(s)); + if (size < substrings.length) { + prettyString = prettyString.concat(" "); + } + size++; + } + if (type.equals((EntityType.OCELOT))) { + prettyString = "Ocelot"; + } + return prettyString; } public static String getProperMobName(EntityType type) { @@ -50,6 +75,65 @@ public class MiscUtil { } return null; } + + public static String getPrettyDyeColorName(DyeColor color) { + return Lang.get("COLOR_" + color.name()); + } + + public static DyeColor getDyeColor(String s) { + String col = Lang.getKey(getCapitalized(s)); + col = col.replace("COLOR_", ""); + DyeColor color = null; + try { + color = DyeColor.valueOf(col); + } catch (IllegalArgumentException e) { + // Do nothing + } + return color != null ? color : getDyeColorLegacy(s); + } + + public static DyeColor getDyeColorLegacy(String s) { + if (s.equalsIgnoreCase("Black") || s.equalsIgnoreCase(Lang.get("COLOR_BLACK"))) { + return DyeColor.BLACK; + } else if (s.equalsIgnoreCase("Blue") || s.equalsIgnoreCase(Lang.get("COLOR_BLUE"))) { + return DyeColor.BLUE; + } else if (s.equalsIgnoreCase("Brown") || s.equalsIgnoreCase(Lang.get("COLOR_BROWN"))) { + return DyeColor.BROWN; + } else if (s.equalsIgnoreCase("Cyan") || s.equalsIgnoreCase(Lang.get("COLOR_CYAN"))) { + return DyeColor.CYAN; + } else if (s.equalsIgnoreCase("Gray") || s.equalsIgnoreCase(Lang.get("COLOR_GRAY"))) { + return DyeColor.GRAY; + } else if (s.equalsIgnoreCase("Green") || s.equalsIgnoreCase(Lang.get("COLOR_GREEN"))) { + return DyeColor.GREEN; + } else if (s.equalsIgnoreCase("LightBlue") || s.equalsIgnoreCase(Lang.get("COLOR_LIGHT_BLUE"))) { + return DyeColor.LIGHT_BLUE; + } else if (s.equalsIgnoreCase("Lime") || s.equalsIgnoreCase(Lang.get("COLOR_LIME"))) { + return DyeColor.LIME; + } else if (s.equalsIgnoreCase("Magenta") || s.equalsIgnoreCase(Lang.get("COLOR_MAGENTA"))) { + return DyeColor.MAGENTA; + } else if (s.equalsIgnoreCase("Orange") || s.equalsIgnoreCase(Lang.get("COLOR_ORAGE"))) { + return DyeColor.ORANGE; + } else if (s.equalsIgnoreCase("Pink") || s.equalsIgnoreCase(Lang.get("COLOR_PINK"))) { + return DyeColor.PINK; + } else if (s.equalsIgnoreCase("Purple") || s.equalsIgnoreCase(Lang.get("COLOR_PURPLE"))) { + return DyeColor.PURPLE; + } else if (s.equalsIgnoreCase("Red") || s.equalsIgnoreCase(Lang.get("COLOR_RED"))) { + return DyeColor.RED; + // 1.13 changed DyeColor.SILVER -> DyeColor.LIGHT_GRAY + } else if (s.equalsIgnoreCase("Silver") || s.equalsIgnoreCase("LightGray") || s.equalsIgnoreCase(Lang.get("COLOR_SILVER"))) { + return DyeColor.getByColor(Color.SILVER); + } else if (s.equalsIgnoreCase("White") || s.equalsIgnoreCase(Lang.get("COLOR_WHITE"))) { + return DyeColor.WHITE; + } else if (s.equalsIgnoreCase("Yellow") || s.equalsIgnoreCase(Lang.get("COLOR_YELLOW"))) { + return DyeColor.YELLOW; + } else { + return null; + } + } + + public static String getDyeString(DyeColor dc) { + return Lang.get("COLOR_" + dc.name()); + } public static String concatArgArray(String[] args, int startingIndex, int endingIndex, char delimiter) { String s = ""; @@ -87,4 +171,38 @@ public class MiscUtil { } return toReturn; } + + /** + * Adds a single space in front of all capital letters + * + * @param s string to process + * @return processed string + */ + public static String capitalsToSpaces(String s) { + int max = s.length(); + for (int i = 1; i < max; i++) { + if (Character.isUpperCase(s.charAt(i))) { + s = s.substring(0, i) + " " + s.substring(i); + i++; + max++; + } + } + return s; + } + + /** + * Capitalize character after space + * + * @param s string to process + * @return processed string + */ + public static String spaceToCapital(String s) { + int index = s.indexOf(' '); + if (index == -1) { + return null; + } + s = s.substring(0, (index + 1)) + Character.toUpperCase(s.charAt(index + 1)) + s.substring(index + 2); + s = s.replaceFirst(" ", ""); + return s; + } } \ No newline at end of file diff --git a/main/src/main/java/me/blackvein/quests/util/RomanNumeral.java b/main/src/main/java/me/blackvein/quests/util/RomanNumeral.java index ba5f6275e..721b80d4e 100644 --- a/main/src/main/java/me/blackvein/quests/util/RomanNumeral.java +++ b/main/src/main/java/me/blackvein/quests/util/RomanNumeral.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN @@ -43,5 +43,4 @@ public class RomanNumeral { } return map.get(l) + getNumeral(number-l); } - } diff --git a/main/src/main/java/me/blackvein/quests/util/WorldGuardAPI.java b/main/src/main/java/me/blackvein/quests/util/WorldGuardAPI.java index 806e429b9..de05a902f 100644 --- a/main/src/main/java/me/blackvein/quests/util/WorldGuardAPI.java +++ b/main/src/main/java/me/blackvein/quests/util/WorldGuardAPI.java @@ -1,5 +1,5 @@ /******************************************************************************************************* - * Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved. + * Continued by PikaMug (formerly HappyPikachu) with permission from _Blackvein_. All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN diff --git a/main/src/main/resources/config.yml b/main/src/main/resources/config.yml index b9a7d83a6..3443abf88 100644 --- a/main/src/main/resources/config.yml +++ b/main/src/main/resources/config.yml @@ -17,5 +17,4 @@ show-requirements: true show-titles: true translate-names: true translate-subcommands: false -use-compass: true -use-gps-plugin: true \ No newline at end of file +use-compass: true \ No newline at end of file diff --git a/pom.xml b/pom.xml index 34a264e69..28c9f58b3 100644 --- a/pom.xml +++ b/pom.xml @@ -6,12 +6,12 @@ me.blackvein.quests quests-parent - 3.6.9 + 3.7.0 quests https://github.com/PikaMug/Quests/ - 3.6.9 + 3.7.0 UTF-8 1.8 1.8 diff --git a/v1_8_R1/pom.xml b/v1_8_R1/pom.xml index f6df4f959..cd1a65d71 100644 --- a/v1_8_R1/pom.xml +++ b/v1_8_R1/pom.xml @@ -5,7 +5,7 @@ me.blackvein.quests quests-parent - 3.6.9 + 3.7.0 diff --git a/v1_8_R2/pom.xml b/v1_8_R2/pom.xml index f566d8fef..019539c71 100644 --- a/v1_8_R2/pom.xml +++ b/v1_8_R2/pom.xml @@ -5,7 +5,7 @@ me.blackvein.quests quests-parent - 3.6.9 + 3.7.0 diff --git a/v1_8_R3/pom.xml b/v1_8_R3/pom.xml index 3eaf4ee01..15fa314fa 100644 --- a/v1_8_R3/pom.xml +++ b/v1_8_R3/pom.xml @@ -5,7 +5,7 @@ me.blackvein.quests quests-parent - 3.6.9 + 3.7.0