From 9ff9724fc80d51c10cb2a401d24d63102416f296 Mon Sep 17 00:00:00 2001 From: NewGarbo Date: Sun, 29 Nov 2015 02:10:39 +0000 Subject: [PATCH] tutorial revamp 2.0 --- .../core/gadget/gadgets/MorphTitan.java | 1 + .../core/shop/page/ConfirmationPage.java | 3 +- .../mineplex/game/clans/clans/ClanTips.java | 11 ++++ .../game/clans/clans/event/ClanTipEvent.java | 55 ++++++++++++++++++ .../clans/event/EnergyPageBuildEvent.java | 58 +++++++++++++++++++ .../game/clans/clans/stuck/StuckManager.java | 2 +- .../game/clans/shop/ClansShopPage.java | 2 +- .../src/mineplex/game/clans/shop/PvpItem.java | 4 +- .../game/clans/shop/ShopItemButton.java | 20 ++++++- .../game/clans/shop/energy/EnergyPage.java | 29 ++++------ .../game/clans/tutorials/DeployedTask.java | 6 +- .../game/clans/tutorials/Tutorial.java | 56 ++++++++++++++---- .../game/clans/tutorials/TutorialClient.java | 2 +- .../game/clans/tutorials/TutorialTask.java | 56 ++++++++++++++---- .../tutorials/gettingstarted/TaskClaim.java | 2 - .../gettingstarted/TaskCustomizeClass.java | 18 +++++- .../gettingstarted/TaskEquipClass.java | 20 ++++--- .../gettingstarted/TaskExploreShops.java | 18 +++--- .../gettingstarted/TaskGoToWilderness.java | 11 ---- .../gettingstarted/TaskLeaveSpawn.java | 22 +++---- .../gettingstarted/TaskMakingMoney.java | 16 ++++- .../gettingstarted/TaskUseAbility.java | 10 ++-- .../TutorialGettingStarted.java | 49 +++++++++++----- 23 files changed, 359 insertions(+), 112 deletions(-) create mode 100644 Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/event/ClanTipEvent.java create mode 100644 Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/event/EnergyPageBuildEvent.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphTitan.java index 1396d82e3..0c9fa96a7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphTitan.java @@ -239,3 +239,4 @@ public class MorphTitan extends MorphGadget } } } +} \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/shop/page/ConfirmationPage.java b/Plugins/Mineplex.Core/src/mineplex/core/shop/page/ConfirmationPage.java index 3b7c39b97..b253a4ea7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/shop/page/ConfirmationPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/shop/page/ConfirmationPage.java @@ -79,7 +79,7 @@ public class ConfirmationPage { - public static final long UNSTICK_WAIT_TIME = UtilTime.convert(1, TimeUnit.MINUTES, TimeUnit.MILLISECONDS); + public static final long UNSTICK_WAIT_TIME = UtilTime.convert(0, TimeUnit.MINUTES, TimeUnit.MILLISECONDS); public StuckManager(ClansManager clans) { diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/ClansShopPage.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/ClansShopPage.java index c470e2e90..78169ea47 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/ClansShopPage.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/ClansShopPage.java @@ -80,7 +80,7 @@ public abstract class ClansShopPage> extends Sh if (!event.isCancelled()) { PvpItem item = new PvpItem(material, data, 1, displayName, buyPrice, sellPrice, 64); - addButton(slot, item, new ShopItemButton>(this, buyPrice, sellPrice, material, data, amount)); + addButton(slot, item, new ShopItemButton>(this, buyPrice, sellPrice, material, data, amount, displayName)); } } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/PvpItem.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/PvpItem.java index 97d9534e7..1dd6c2183 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/PvpItem.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/PvpItem.java @@ -29,12 +29,12 @@ public class PvpItem extends ShopItem super(type, data, name, new String[] { C.cWhite + " ", LEFT_CLICK_BUY, - C.cWhite + "Costs " + C.cGreen + buyPrice + "g", + C.cWhite + "Costs " + C.cGreen + (buyPrice == 0 ? "Free" : buyPrice + "g"), C.cWhite + " ", UtilItem.isArmor(type) || UtilItem.isTool(type) ? "" : C.cYellow + "Shift Left-Click" + C.cWhite + " to Buy " + C.cGreen + bulkCount, UtilItem.isArmor(type) || UtilItem.isTool(type) ? "" : C.cWhite + "Costs " + C.cGreen + (buyPrice * bulkCount) + "g", C.cWhite + " ", RIGHT_CLICK_SELL, - C.cWhite + "Earns " + C.cGreen + sellPrice + "g", + C.cWhite + "Earns " + C.cGreen + (sellPrice == 0 ? "Free" : sellPrice + ""), C.cWhite + " ", C.cYellow + "Shift Right-Click" + C.cWhite + " to Sell " + C.cGreen + "All", }, 0, false, false); diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/ShopItemButton.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/ShopItemButton.java index a29c0a8d9..5b879737a 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/ShopItemButton.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/ShopItemButton.java @@ -1,11 +1,14 @@ package mineplex.game.clans.shop; +import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import mineplex.core.common.util.C; import mineplex.core.common.util.Callback; import mineplex.core.common.util.F; import mineplex.core.common.util.InventoryUtil; @@ -25,17 +28,30 @@ public class ShopItemButton> implements IButton private ItemStack _item; private T _page; - public ShopItemButton(T page, int buyPrice, int sellPrice, Material material, byte data, int amount) + public ShopItemButton(T page, int buyPrice, int sellPrice, Material material, byte data, int amount, String displayName) { _page = page; _sellPrice = sellPrice; _buyPrice = buyPrice; _item = new ItemStack(material, amount, data); + + if (displayName != null) + { + ItemMeta meta = _item.getItemMeta(); + if (meta == null) + { + meta = Bukkit.getItemFactory().getItemMeta(material); + } + + meta.setDisplayName(C.Reset + displayName); + + _item.setItemMeta(meta); + } } public ShopItemButton(T page, int buyPrice, int sellPrice, Material material) { - this(page, buyPrice, sellPrice, material, (byte) 0, 1); + this(page, buyPrice, sellPrice, material, (byte) 0, 1, null); } @Override diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/energy/EnergyPage.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/energy/EnergyPage.java index 49824ff51..4e63d4b90 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/energy/EnergyPage.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/energy/EnergyPage.java @@ -16,6 +16,7 @@ import mineplex.core.shop.page.ShopPageBase; import mineplex.game.clans.clans.ClanEnergyManager; import mineplex.game.clans.clans.ClanInfo; import mineplex.game.clans.clans.event.ClansShopAddButtonEvent; +import mineplex.game.clans.clans.event.EnergyPageBuildEvent; public class EnergyPage extends ShopPageBase { @@ -46,9 +47,13 @@ public class EnergyPage extends ShopPageBase int oneDayEnergy = oneHourEnergy * 24; int maxEnergy = clanInfo.getEnergyPurchasable(); - addButton(clanInfo, 11, oneHourEnergy, Material.REDSTONE, (byte) 0, " ", ChatColor.RESET + "1 Hour of Energy", " ", ChatColor.RESET + "Costs " + C.cGreen + getPlugin().convertEnergyToGold(oneHourEnergy) + "g"); - addButton(clanInfo, 13, oneDayEnergy, Material.REDSTONE_BLOCK, (byte) 0, " ", ChatColor.RESET + "1 Day of Energy", " ", ChatColor.RESET + "Costs " + C.cGreen + getPlugin().convertEnergyToGold(oneDayEnergy) + "g"); - addButton(clanInfo, 15, maxEnergy, Material.FURNACE, (byte) 0, " ", ChatColor.RESET + "Maxed Out Energy", " ", ChatColor.RESET + "Costs " + C.cGreen + getPlugin().convertEnergyToGold(maxEnergy) + "g"); + EnergyPageBuildEvent event = new EnergyPageBuildEvent(getPlayer()); + + UtilServer.getServer().getPluginManager().callEvent(event); + + addButton(clanInfo, 11, oneHourEnergy, Material.REDSTONE, (byte) 0, event.free(), " ", ChatColor.RESET + "Purchase 1 Hour of Energy for your Clan", " ", ChatColor.RESET + (event.free() ? "FREE! (Tutorial)" : "Costs " + C.cGreen + getPlugin().convertEnergyToGold(oneHourEnergy) + "g")); + addButton(clanInfo, 13, oneDayEnergy, Material.REDSTONE_BLOCK, (byte) 0, event.free(), " ", ChatColor.RESET + "Purchase 1 Day of Energy for your Clan", " ", ChatColor.RESET + (event.free() ? "FREE! (Tutorial)" : "Costs " + C.cGreen + getPlugin().convertEnergyToGold(oneDayEnergy) + "g")); + addButton(clanInfo, 15, maxEnergy, Material.FURNACE, (byte) 0, event.free(), " ", ChatColor.RESET + "Max Out your Clan's Energy", " ", ChatColor.RESET + (event.free() ? "FREE! (Tutorial)" : "Costs " + C.cGreen + getPlugin().convertEnergyToGold(maxEnergy) + "g")); } private void addInfo(ClanInfo clanInfo, int slot) @@ -65,31 +70,17 @@ public class EnergyPage extends ShopPageBase setItem(slot, shopItem); } - private void addButton(ClanInfo clanInfo, int slot, int energyAmount, Material material, byte data, String... lore) + private void addButton(ClanInfo clanInfo, int slot, int energyAmount, Material material, byte data, boolean free, String... lore) { boolean locked = energyAmount > clanInfo.getEnergyPurchasable() || energyAmount == 0; String itemName = "Purchase " + energyAmount + " Energy"; - ClansShopAddButtonEvent event = new ClansShopAddButtonEvent(getPlayer(), getShop(), slot, material, getPlugin().convertEnergyToGold(energyAmount), 01, data, itemName, energyAmount); - UtilServer.getServer().getPluginManager().callEvent(event); - - if (event.isCancelled()) - { - return; - } - - itemName = event.getDisplayName(); - int buyPrice = event.getBuyPrice(); - slot = event.getSlot(); - material = event.getMaterial(); - data = event.getData(); - ShopItem shopItem = new ShopItem(material, itemName, lore, 1, locked, false); if (locked) setItem(slot, shopItem); else - addButton(slot, shopItem, new EnergyShopButton(getPlugin(), this, energyAmount, clanInfo, buyPrice)); + addButton(slot, shopItem, new EnergyShopButton(getPlugin(), this, energyAmount, clanInfo, free ? 0 : getPlugin().convertEnergyToGold(energyAmount))); } private void buildNoClan() diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/DeployedTask.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/DeployedTask.java index 1d8807999..02d6a46c9 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/DeployedTask.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/DeployedTask.java @@ -23,6 +23,11 @@ public class DeployedTask implements Listener { } + public boolean checkForDeath() + { + return _dead || _player == null; + } + public void finish() { onFinish(); @@ -36,7 +41,6 @@ public class DeployedTask implements Listener } public void onFinish() { - } } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/Tutorial.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/Tutorial.java index 0b48bda07..66568e0ca 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/Tutorial.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/Tutorial.java @@ -1,7 +1,7 @@ package mineplex.game.clans.tutorials; import java.util.ArrayList; -import java.util.HashMap; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -15,6 +15,7 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerPickupItemEvent; @@ -28,7 +29,6 @@ import mineplex.core.common.util.F; import mineplex.core.common.util.UtilFirework; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilText; import mineplex.core.donation.DonationManager; import mineplex.core.scoreboard.ScoreboardManager; import mineplex.core.scoreboard.elements.ScoreboardElement; @@ -36,6 +36,7 @@ import mineplex.core.task.TaskManager; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.game.clans.clans.ClansManager; +import mineplex.game.clans.clans.event.ClanTipEvent; import mineplex.game.clans.economy.GoldManager; /** @@ -47,9 +48,9 @@ import mineplex.game.clans.economy.GoldManager; */ public abstract class Tutorial implements ScoreboardElement, Listener { - public static String TASK_COMPLETE_TASK = "tutori%sTask%s"; - public static String TUTORIAL_COMPLETE_TASK = "tutori%sDone"; - public static String SKIPPED_TASK = "tutori%sSkip"; + public static String TASK_COMPLETE_TASK = "tutorialboughtought%sTask%s"; + public static String TUTORIAL_COMPLETE_TASK = "tutorialboughtought%sDone"; //do not change + public static String SKIPPED_TASK = "tutorialboughtought%sSkip"; protected final TutorialManager _manager; protected final GoldManager _goldManager; @@ -111,7 +112,7 @@ public abstract class Tutorial implements ScoreboardElement, Listener final TutorialClient client = _inTutorial.get(player.getName()); - lines.add(C.cAqua + _displayName + " Tutorial"); + lines.add(C.cAqua + "Tutorial"); for (final TutorialTask task : _tasks.values()) { @@ -172,7 +173,6 @@ public abstract class Tutorial implements ScoreboardElement, Listener }, 10L); } - UtilPlayer.message(player, F.main("Tutorials", "You have completed Task " + F.elem(task.getID() + ": " + task.getDisplayName()) + ". " + (_tasks.size() - task.getID()) + " task" + (UtilText.plural(_tasks.size() - task.getID()) ? "s" : "") + " to go!")); player.playSound(player.getLocation(), Sound.LEVEL_UP, 2f, 1.5f); } }, player, String.format(TASK_COMPLETE_TASK, _technicalName, task.getTechnicalName())); @@ -327,7 +327,7 @@ public abstract class Tutorial implements ScoreboardElement, Listener { for (Player other : UtilServer.getPlayers()) { - other.showPlayer(player); + if (!isInTutorial(other)) other.showPlayer(player); player.showPlayer(other); } } @@ -378,9 +378,13 @@ public abstract class Tutorial implements ScoreboardElement, Listener new JsonMessage( F.main( "Tutorial", - "Click here to confirm you want to skip the tutorial!" + "Click " )) - .click(ClickEvent.RUN_COMMAND, "/yesiconfirmiwanttoskip") + .extra("here") + .color("aqua") + .click(ClickEvent.RUN_COMMAND, "/yesiconfirmiwanttoskip") + .extra(" here to confirm you want to skip the tutorial!") + .color("gray") .sendToPlayer(player); } @@ -406,6 +410,15 @@ public abstract class Tutorial implements ScoreboardElement, Listener return _inTutorial.get(player.getName()); } + @EventHandler + public void onClanTip(ClanTipEvent event) + { + if (isInTutorial(event.getPlayer())) + { + event.setCancelled(true); + } + } + @EventHandler public void taskInfo(final UpdateEvent evt) { @@ -422,6 +435,27 @@ public abstract class Tutorial implements ScoreboardElement, Listener } } } + + @EventHandler + public void chat(final AsyncPlayerChatEvent evt) + { + if (!isInTutorial(evt.getPlayer())) + { + return; + } + + Iterator iterator = evt.getRecipients().iterator(); + + while (iterator.hasNext()) + { + if (isInTutorial(iterator.next())) + { + iterator.remove(); + } + } + + evt.setCancelled(true); + } @EventHandler public void onPlayerJoin(final PlayerJoinEvent evt) @@ -443,7 +477,7 @@ public abstract class Tutorial implements ScoreboardElement, Listener public void cleanup(Player player) { - get(player).CurrentTask.cleanup(player); + if (get(player).CurrentTask != null) get(player).CurrentTask.cleanup(player); _inTutorial.remove(player.getName()); } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/TutorialClient.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/TutorialClient.java index 5229aaf24..c6071420e 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/TutorialClient.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/TutorialClient.java @@ -8,7 +8,7 @@ public class TutorialClient { public Player Player; public TutorialTask CurrentTask; - public long LastDescriptionSentTime = 0; + public long LastDescriptionSentTime = System.currentTimeMillis() - 3000; public TutorialClient(Player player, Tutorial tutorial) { diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/TutorialTask.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/TutorialTask.java index 4a3e56476..8c609b160 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/TutorialTask.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/TutorialTask.java @@ -2,17 +2,20 @@ package mineplex.game.clans.tutorials; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import mineplex.core.common.util.C; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilText; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; public class TutorialTask implements Listener { @@ -31,6 +34,7 @@ public class TutorialTask implements Listener private List _playersFinished = new ArrayList<>(); private Map _deployedInstances = new HashMap<>(); + private List _toCull = new ArrayList<>(); private int _id; @@ -81,9 +85,15 @@ public class TutorialTask implements Listener if (System.currentTimeMillis() - client.LastDescriptionSentTime > client.CurrentTask.getDescriptionWaitTime()) { - UtilPlayer.message(player, C.cGreen + "==== Pt." + client.CurrentTask.getID() + ": " + client.CurrentTask.getDisplayName() + " ===="); - UtilPlayer.message(player, C.cYellow + client.CurrentTask.getDescription().replace("{", C.cAqua).replace("}", C.cYellow)); - UtilPlayer.message(player, C.cGreen + UtilText.repeat("=", client.CurrentTask.getDisplayName().length() + ("=== Pt." + client.CurrentTask.getID() + ": ===").length())); + UtilPlayer.message(player, " "); + UtilPlayer.message(player, " "); + UtilPlayer.message(player, " "); + UtilPlayer.message(player, C.cDGreenB + C.Strike + "---------------------------------------------"); + UtilPlayer.message(player, " "); + UtilPlayer.message(player, C.cYellowB + "Part " + _id + ": " + _displayName); + UtilPlayer.message(player, C.cWhite + _description.replace("{", C.cAqua).replace("}", C.cWhite)); + UtilPlayer.message(player, " "); + UtilPlayer.message(player, C.cDGreenB + C.Strike + "---------------------------------------------"); client.LastDescriptionSentTime = System.currentTimeMillis(); } } @@ -136,20 +146,46 @@ public class TutorialTask implements Listener public void visibleFinish(Player player) { _deployedInstances.get(player.getName()).kill(); - HandlerList.unregisterAll(_deployedInstances.get(player.getName())); + _toCull.add(_deployedInstances.get(player.getName())); + _deployedInstances.remove(player.getName()); if (_finishMessage != null) { - UtilPlayer.message(player, C.cGreen + "=================="); - UtilPlayer.message(player, C.cYellow + _finishMessage.replace("{", C.cAqua).replace("}", C.cYellow)); - UtilPlayer.message(player, C.cGreen + "=================="); + UtilPlayer.message(player, " "); + UtilPlayer.message(player, " "); + UtilPlayer.message(player, " "); + UtilPlayer.message(player, C.cDGreenB + C.Strike + "---------------------------------------------"); + UtilPlayer.message(player, " "); + UtilPlayer.message(player, C.cWhite + _finishMessage.replace("{", C.cAqua).replace("}", C.cWhite)); + UtilPlayer.message(player, " "); + UtilPlayer.message(player, C.cDGreenB + C.Strike + "---------------------------------------------"); } } - + + @EventHandler + public void update(UpdateEvent event) + { + if (event.getType() != UpdateType.SEC) + { + return; + } + + Iterator iterator = _toCull.iterator(); + + while(iterator.hasNext()) + { + DeployedTask task = iterator.next(); + + task.kill(); + HandlerList.unregisterAll(task); + iterator.remove(); + } + } + public void cleanup(Player player) { _deployedInstances.get(player.getName()).kill(); - _deployedInstances.remove(player.getName()); + _toCull.add(_deployedInstances.get(player.getName())); _playersFinished.remove(player.getName()); } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskClaim.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskClaim.java index 26a3935aa..9102fe525 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskClaim.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskClaim.java @@ -23,8 +23,6 @@ public class TaskClaim extends TutorialTask + "This is the perfect place to build a base and stash your items! " + "You can only claim in the Wilderness, and not next to other Clans Territory. " + "Claim some Territory now, by typing {/c claim}!"; - - _finishMessage = "Good job! We won't actually claim this Territory yet!"; } @Override diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskCustomizeClass.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskCustomizeClass.java index 42aa9f24a..84ca86e7c 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskCustomizeClass.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskCustomizeClass.java @@ -1,5 +1,6 @@ package mineplex.game.clans.tutorials.gettingstarted; +import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -7,6 +8,7 @@ import org.bukkit.event.EventPriority; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.game.clans.clans.ClansManager; +import mineplex.game.clans.spawn.Spawn; import mineplex.game.clans.tutorials.DeployedTask; import mineplex.game.clans.tutorials.TutorialTask; import mineplex.minecraft.game.classcombat.Class.ClientClass; @@ -20,9 +22,8 @@ public class TaskCustomizeClass extends TutorialTask _displayName = "Customize Class"; _technicalName = "CustomizeKlass"; - _description = "Now that you have Equipped a Class, you can start using Abilities. " - + "Purchase an Iron Axe from the PvP Shop. (FREE) " - + "Right-Click with your Iron Axe to use your Axe Ability!"; + _description = "Now that you have Equipped a Class, use this enchantment table to customize your Class Builds. " + + "Click on the enchantment table, and click the Edit Build button."; } @Override @@ -38,6 +39,12 @@ public class TaskCustomizeClass extends TutorialTask super(player, task); } + @Override + public void postDeploy() + { + _player.teleport(new Location(Spawn.getSpawnWorld(), 6, 66, -300, -180f, 0f)); + } + @EventHandler(priority = EventPriority.MONITOR) public void onUpdate(final UpdateEvent event) { @@ -46,6 +53,11 @@ public class TaskCustomizeClass extends TutorialTask return; } + if (checkForDeath()) + { + return; + } + final ClientClass clientclass = ClansManager.getInstance().getClassManager().Get(_player); if (clientclass != null && clientclass.GetSavingCustomBuild() != null) diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskEquipClass.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskEquipClass.java index 0a606acae..fa8cc3ee7 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskEquipClass.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskEquipClass.java @@ -3,6 +3,7 @@ package mineplex.game.clans.tutorials.gettingstarted; import java.util.ArrayList; import java.util.List; +import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -13,6 +14,7 @@ import mineplex.core.task.TaskManager; import mineplex.game.clans.clans.ClansManager; import mineplex.game.clans.clans.event.ClansPlayerBuyItemEvent; import mineplex.game.clans.clans.event.ClansShopAddButtonEvent; +import mineplex.game.clans.spawn.Spawn; import mineplex.game.clans.tutorials.DeployedTask; import mineplex.game.clans.tutorials.TutorialTask; import mineplex.minecraft.game.classcombat.Class.event.ClassEquipEvent; @@ -26,8 +28,8 @@ public class TaskEquipClass extends TutorialTask _displayName = "Equip a Class"; _technicalName = "AuszustattenKlasse"; - _description = "Find the PvP Gear shop, and Right-Click the Villager. " - + "Purchase Iron Armor from the PvP Shop. (FREE) " + _description = "Use the PvP Gear shop, and Right-Click the Villager. " + + "Purchase Iron Armor from the PvP Shop. " + "Then put on your Armor to equip a Champions Class."; } @@ -46,11 +48,15 @@ public class TaskEquipClass extends TutorialTask super(player, task); } + @Override + public void postDeploy() + { + _player.teleport(new Location(Spawn.getSpawnWorld(), 19.536, 66, -305.844, -100f, 0f)); + } + @EventHandler public void onClassEquipped(ClassEquipEvent event) { - System.out.println(event.getPlayer()); - System.out.println(ClansManager.getInstance().getClassManager().Get(_player)); if (!ClansManager.getInstance().getClassManager().Get(_player).equals(event.getPlayer())) { return; @@ -62,7 +68,7 @@ public class TaskEquipClass extends TutorialTask @EventHandler public void button(ClansShopAddButtonEvent event) { - if (_player.equals(event.getPlayer())) + if (!_player.equals(event.getPlayer())) { return; } @@ -72,7 +78,7 @@ public class TaskEquipClass extends TutorialTask return; } - if (!TaskManager.Instance.hasCompletedTask(event.getPlayer(), "iboughtthis" + event.getMaterial().name()) && !_bought.contains(event.getMaterial())) + if (!TaskManager.Instance.hasCompletedTask(event.getPlayer(), "tutorialboughtought" + event.getMaterial().name()) && !_bought.contains(event.getMaterial())) { event.setBuyPrice(0); event.setSellPrice(0); @@ -103,7 +109,7 @@ public class TaskEquipClass extends TutorialTask public void run(Boolean data) { } - }, event.getPlayer(), "iboughtthis" + event.getItem().getType().name()); + }, event.getPlayer(), "tutorialboughtought" + event.getItem().getType().name()); _bought.add(event.getItem().getType()); } } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskExploreShops.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskExploreShops.java index 07a0cd9fe..cc332b10c 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskExploreShops.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskExploreShops.java @@ -1,13 +1,13 @@ package mineplex.game.clans.tutorials.gettingstarted; +import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.game.clans.clans.ClansManager; -import mineplex.game.clans.clans.event.ClansShopAddButtonEvent; -import mineplex.game.clans.shop.energy.EnergyShop; +import mineplex.game.clans.clans.event.EnergyPageBuildEvent; import mineplex.game.clans.spawn.Spawn; import mineplex.game.clans.tutorials.DeployedTask; import mineplex.game.clans.tutorials.TutorialTask; @@ -22,8 +22,8 @@ public class TaskExploreShops extends TutorialTask _technicalName = "WillkommenZumGeschaft"; _description = "Welcome to the Shops! Here you can buy all kinds of things that you may require during your adventure. " - + "You can also sell certain items to the Villagers to make a bit of extra Gold." - + "Go to the Energy Shop and buy {7 Days} of Energy. (FREE)"; + + "You can also sell certain items to the Villagers to make a bit of extra Gold. " + + "Go to the Energy Shop and buy {Max Energy}. (FREE)"; } @Override @@ -42,13 +42,13 @@ public class TaskExploreShops extends TutorialTask @Override public void postDeploy() { - _player.teleport(Spawn.getNorthTownCenter()); + _player.teleport(new Location(Spawn.getSpawnWorld(), 17, 66.5, -330, -180f, 0f)); ClansManager.getInstance().getClan(_player).adjustEnergy(-(ClansManager.getInstance().getClan(_player).getEnergyCostPerMinute() * 60)); } @EventHandler - public void onItemPut(ClansShopAddButtonEvent event) + public void onItemPut(EnergyPageBuildEvent event) { if (!_player.equals(event.getPlayer())) { @@ -62,13 +62,11 @@ public class TaskExploreShops extends TutorialTask if (ClansManager.getInstance().getClan(_player).getEnergyPurchasable() == 0) { + _task.finishFor(_player); return; } - if (event.getShop().getClass().equals(EnergyShop.class) && event.getDisplayName().contains("Energy")) - { - event.setBuyPrice(0); - } + event.setFree(true); } @EventHandler diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskGoToWilderness.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskGoToWilderness.java index cc1792b30..6f3a5a92e 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskGoToWilderness.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskGoToWilderness.java @@ -37,17 +37,6 @@ public class TaskGoToWilderness extends TutorialTask super(player, task); } - @Override - public void postDeploy() - { - if (( - ClansManager.getInstance().getClanUtility().getClaim(_player.getLocation()) == null - ) - ){ - _task.finishFor(_player); - } - } - @EventHandler(priority = EventPriority.MONITOR) public void onTerritory(final PlayerEnterTerritoryEvent event) { diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskLeaveSpawn.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskLeaveSpawn.java index 2958c29fb..145d9eef2 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskLeaveSpawn.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskLeaveSpawn.java @@ -4,6 +4,8 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; import mineplex.game.clans.clans.ClansManager; import mineplex.game.clans.clans.event.PlayerEnterTerritoryEvent; import mineplex.game.clans.tutorials.DeployedTask; @@ -39,26 +41,26 @@ public class TaskLeaveSpawn extends TutorialTask @Override public void postDeploy() { - if (ClansManager.getInstance().getClanUtility().getClaim(_player.getLocation()) == null - || ( - ClansManager.getInstance().getClanUtility().getClaim(_player.getLocation()) != null - && !ClansManager.getInstance().getClanUtility().getClaim(_player.getLocation()).Owner.equals("Spawn") - ) - ){ + if (_player.getLocation().getY() < 100) + { _task.finishFor(_player); } } - @EventHandler(priority = EventPriority.MONITOR) - public void onTerritory(final PlayerEnterTerritoryEvent event) + @EventHandler + public void update(UpdateEvent event) { - if (!_player.equals(event.getPlayer())) + if (event.getType() != UpdateType.SEC) { return; } - if (event.getNewTerritory().contains("Spawn")) + if (checkForDeath()) { + return; + } + + if (_player.getLocation().getY() < 100){ _task.finishFor(_player); } } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskMakingMoney.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskMakingMoney.java index 505221282..7c05ec2da 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskMakingMoney.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskMakingMoney.java @@ -1,5 +1,6 @@ package mineplex.game.clans.tutorials.gettingstarted; +import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -7,6 +8,7 @@ import org.bukkit.inventory.ItemStack; import mineplex.game.clans.clans.ClansManager; import mineplex.game.clans.clans.event.ClansPlayerSellItemEvent; +import mineplex.game.clans.spawn.Spawn; import mineplex.game.clans.tutorials.DeployedTask; import mineplex.game.clans.tutorials.TutorialTask; @@ -19,8 +21,8 @@ public class TaskMakingMoney extends TutorialTask _displayName = "Making Money (Farming)"; _technicalName = "ImAFarmer"; - _description = "We have given you a few Carrots, as a starter for your Farming career. " - + "Go to the Organic Produce Villager in one of the Shops, and sell the Carrots for Gold."; + _description = "We have given you a carrot to sell in the Organic Produce Shop. " + + "Click on the Villager, and {Right-Click} the carrot to sell your carrots in exchange for Gold."; } @Override @@ -31,10 +33,18 @@ public class TaskMakingMoney extends TutorialTask class Deployed extends DeployedTask { + private int _carrotsSold; + public Deployed(Player player, TutorialTask task) { super(player, task); - player.getInventory().addItem(new ItemStack(Material.CARROT_ITEM, 5)); + player.getInventory().addItem(new ItemStack(Material.CARROT_ITEM, 1)); + } + + @Override + public void postDeploy() + { + _player.teleport(new Location(Spawn.getSpawnWorld(), 25.536, 66, -316.844, -100f, 0f)); } @EventHandler diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskUseAbility.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskUseAbility.java index 557587308..2314722e3 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskUseAbility.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TaskUseAbility.java @@ -25,7 +25,7 @@ public class TaskUseAbility extends TutorialTask _technicalName = "KlassAbilityUsage"; _description = "Now that you have Equipped a Class, you can start using Abilities. " - + "Purchase an Iron Axe from the PvP Shop. (FREE) " + + "Purchase an Iron Axe from the PvP Shop. " + "Right-Click with your Iron Axe to use your Axe Ability!"; } @@ -62,13 +62,15 @@ public class TaskUseAbility extends TutorialTask { return; } - + + System.out.println(event.getDisplayName()); + if (!event.getMaterial().equals(Material.IRON_AXE)) { return; } - if (!TaskManager.Instance.hasCompletedTask(event.getPlayer(), "iboughtthis" + event.getMaterial().name()) && !_bought.contains(event.getMaterial())) + if (!TaskManager.Instance.hasCompletedTask(event.getPlayer(), "tutorialboughtought" + event.getMaterial().name()) && !_bought.contains(event.getMaterial())) { event.setBuyPrice(0); event.setSellPrice(0); @@ -99,7 +101,7 @@ public class TaskUseAbility extends TutorialTask public void run(Boolean data) { } - }, event.getPlayer(), "iboughtthis" + event.getItem().getType().name()); + }, event.getPlayer(), "tutorialboughtought" + event.getItem().getType().name()); _bought.add(event.getItem().getType()); } } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TutorialGettingStarted.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TutorialGettingStarted.java index 6da8fec84..e690c2d5c 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TutorialGettingStarted.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/tutorials/gettingstarted/TutorialGettingStarted.java @@ -4,6 +4,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; +import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; @@ -22,19 +23,23 @@ public class TutorialGettingStarted extends Tutorial { super(goldManager, taskManager, clansManager, donationManager, manager); - addTask(new TaskWelcome(this, 1)); - addTask(new TaskCreateClan(this, 2)); - addTask(new TaskViewClanDetails(this, 3)); - addTask(new TaskLeaveSpawn(this, 4)); - addTask(new TaskGoToWilderness(this, 5)); - addTask(new TaskClaim(this, 6)); - addTask(new TaskSetHome(this, 7)); - addTask(new TaskExploreShops(this, 8)); - addTask(new TaskEquipClass(this, 9)); - addTask(new TaskUseAbility(this, 10)); - addTask(new TaskCustomizeClass(this, 11)); - addTask(new TaskMakingMoney(this, 12)); - addTask(new TaskDisbandClan(this, 13)); +// addTask(new TaskWelcome(this, 1)); + + int id = 0; + addTask(new TaskCreateClan(this, ++id)); + addTask(new TaskViewClanDetails(this, ++id)); + addTask(new TaskLeaveSpawn(this, ++id)); + addTask(new TaskGoToWilderness(this, ++id)); + addTask(new TaskClaim(this, ++id)); + addTask(new TaskSetHome(this, ++id)); + addTask(new TaskExploreShops(this, ++id)); + addTask(new TaskEquipClass(this, ++id)); + addTask(new TaskUseAbility(this, ++id)); + addTask(new TaskCustomizeClass(this, ++id)); + addTask(new TaskMakingMoney(this, ++id)); + addTask(new TaskDisbandClan(this, ++id)); + + _doScoreboard = true; _ghostMode = true; @@ -52,6 +57,24 @@ public class TutorialGettingStarted extends Tutorial player.resetPlayerTime(); } + @Override + public void onBegin(final Player player) + { + UtilPlayer.message(player, " "); + UtilPlayer.message(player, " "); + UtilPlayer.message(player, " "); + UtilPlayer.message(player, C.cDGreenB + C.Strike + "---------------------------------------------"); + UtilPlayer.message(player, " "); + UtilPlayer.message(player, C.cYellowB + "Getting Started"); + UtilPlayer.message(player, C.cWhite + "Welcome to Clans! " + + "In this game mode, you are able to create a Clan, invite your friends to the Clan, build a base, claim it to protect, and fight others with your new powerful Clan! " + + "You can also join a friend's Clan if they invite you to it! " + + "When you finish the tutorial, you will be awarded " + C.cAqua + "30,000 Gold"); + UtilPlayer.message(player, " "); + UtilPlayer.message(player, C.cDGreenB + C.Strike + "---------------------------------------------"); + } + + @EventHandler(priority = EventPriority.MONITOR) public void onUpdate(final UpdateEvent event) {