tutorial revamp 2.0

This commit is contained in:
NewGarbo 2015-11-29 02:10:39 +00:00
parent e1be0b1dbd
commit 9ff9724fc8
23 changed files with 359 additions and 112 deletions

View File

@ -239,3 +239,4 @@ public class MorphTitan extends MorphGadget
}
}
}
}

View File

@ -79,7 +79,7 @@ public class ConfirmationPage<PluginType extends MiniPlugin, ShopType extends Sh
buildSquareAt(_okSquareSlotStart, new ShopItem(Material.EMERALD_BLOCK, (byte) 0, ChatColor.GREEN + "OK", null, 1, false, true), okClicked);
buildSquareAt(_okSquareSlotStart + 6, new ShopItem(Material.REDSTONE_BLOCK, (byte) 0, ChatColor.RED + "CANCEL", null, 1, false, true), cancelClicked);
this.getInventory().setItem(4, new ShopItem(getCurrencyType().GetDisplayMaterial(), (byte)0, getCurrencyType().toString(), new String[] { C.cGray + _salesItem.GetCost(getCurrencyType()) + " " + getCurrencyType().toString() + " will be deducted from your account balance." }, 1, false, true).getHandle());
this.getInventory().setItem(4, new ShopItem(getCurrencyType().GetDisplayMaterial(), (byte)0, getCurrencyType().toString(), new String[] { C.cGray + _salesItem.GetCost(getCurrencyType()) + " " + getCurrencyType().toString() + " will be", "deducted from your account balance." }, 1, false, true).getHandle());
}
protected void okClicked(Player player)
@ -146,6 +146,7 @@ public class ConfirmationPage<PluginType extends MiniPlugin, ShopType extends Sh
if (data)
{
showResultsPage(TransactionResponse.Success);
getPlayer().playSound(getPlayer().getLocation(), Sound.LEVEL_UP, 2f, 1.5f);
}
else
{

View File

@ -12,7 +12,9 @@ import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.preferences.PreferencesManager;
import mineplex.game.clans.clans.event.ClanTipEvent;
import mineplex.game.clans.clans.event.PlayerClaimTerritoryEvent;
import mineplex.game.clans.clans.event.PlayerEnterTerritoryEvent;
import mineplex.game.clans.clans.event.PlayerUnClaimTerritoryEvent;
@ -116,6 +118,15 @@ public class ClanTips extends MiniPlugin
return;
}
ClanTipEvent event = new ClanTipEvent(tip, player);
UtilServer.getServer().getPluginManager().callEvent(event);
if (event.isCancelled())
{
return;
}
UtilPlayer.message(player, " ");
UtilPlayer.message(player, tip._messages);

View File

@ -0,0 +1,55 @@
package mineplex.game.clans.clans.event;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import mineplex.game.clans.clans.ClanTips.TipType;
public class ClanTipEvent extends Event
{
private static final HandlerList handlers = new HandlerList();
private Player _player;
private TipType _tip;
private boolean _cancelled;
public ClanTipEvent(TipType tip, Player player)
{
_player = player;
_tip = tip;
}
public Player getPlayer()
{
return _player;
}
public TipType getTip()
{
return _tip;
}
public void setCancelled(boolean cancelled)
{
_cancelled = cancelled;
}
public boolean isCancelled()
{
return _cancelled;
}
public HandlerList getHandlers()
{
return handlers;
}
public static HandlerList getHandlerList()
{
return handlers;
}
}

View File

@ -0,0 +1,58 @@
package mineplex.game.clans.clans.event;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import mineplex.core.shop.ShopBase;
public class EnergyPageBuildEvent extends Event
{
private static final HandlerList handlers = new HandlerList();
private boolean _free;
private boolean _cancelled;
private Player _player;
public EnergyPageBuildEvent(Player player)
{
_player = player;
}
public Player getPlayer()
{
return _player;
}
public boolean free()
{
return _free;
}
public void setFree(boolean free)
{
_free = free;
}
public boolean isCancelled()
{
return _cancelled;
}
public void setCancelled(boolean cancelled)
{
_cancelled = cancelled;
}
public HandlerList getHandlers()
{
return handlers;
}
public static HandlerList getHandlerList()
{
return handlers;
}
}

View File

@ -19,7 +19,7 @@ import mineplex.game.clans.spawn.Spawn;
public class StuckManager extends MiniClientPlugin<StuckClient>
{
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)
{

View File

@ -80,7 +80,7 @@ public abstract class ClansShopPage<T extends ShopBase<ClansManager>> extends Sh
if (!event.isCancelled())
{
PvpItem item = new PvpItem(material, data, 1, displayName, buyPrice, sellPrice, 64);
addButton(slot, item, new ShopItemButton<ClansShopPage<?>>(this, buyPrice, sellPrice, material, data, amount));
addButton(slot, item, new ShopItemButton<ClansShopPage<?>>(this, buyPrice, sellPrice, material, data, amount, displayName));
}
}

View File

@ -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);

View File

@ -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<T extends ShopPageBase<?, ?>> 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

View File

@ -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<ClanEnergyManager, EnergyShop>
{
@ -46,9 +47,13 @@ public class EnergyPage extends ShopPageBase<ClanEnergyManager, EnergyShop>
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<ClanEnergyManager, EnergyShop>
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()

View File

@ -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() {
}
}

View File

@ -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<Player> 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());
}

View File

@ -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)
{

View File

@ -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<T extends Tutorial> implements Listener
{
@ -31,6 +34,7 @@ public class TutorialTask<T extends Tutorial> implements Listener
private List<String> _playersFinished = new ArrayList<>();
private Map<String, DeployedTask> _deployedInstances = new HashMap<>();
private List<DeployedTask> _toCull = new ArrayList<>();
private int _id;
@ -81,9 +85,15 @@ public class TutorialTask<T extends Tutorial> 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<T extends Tutorial> 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<DeployedTask> 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());
}

View File

@ -23,8 +23,6 @@ public class TaskClaim extends TutorialTask<TutorialGettingStarted>
+ "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

View File

@ -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<TutorialGettingStarted>
_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<TutorialGettingStarted>
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<TutorialGettingStarted>
return;
}
if (checkForDeath())
{
return;
}
final ClientClass clientclass = ClansManager.getInstance().getClassManager().Get(_player);
if (clientclass != null && clientclass.GetSavingCustomBuild() != null)

View File

@ -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<TutorialGettingStarted>
_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<TutorialGettingStarted>
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<TutorialGettingStarted>
@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<TutorialGettingStarted>
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<TutorialGettingStarted>
public void run(Boolean data)
{
}
}, event.getPlayer(), "iboughtthis" + event.getItem().getType().name());
}, event.getPlayer(), "tutorialboughtought" + event.getItem().getType().name());
_bought.add(event.getItem().getType());
}
}

View File

@ -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<TutorialGettingStarted>
_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<TutorialGettingStarted>
@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<TutorialGettingStarted>
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

View File

@ -37,17 +37,6 @@ public class TaskGoToWilderness extends TutorialTask<TutorialGettingStarted>
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)
{

View File

@ -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<TutorialGettingStarted>
@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);
}
}

View File

@ -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<TutorialGettingStarted>
_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<TutorialGettingStarted>
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

View File

@ -25,7 +25,7 @@ public class TaskUseAbility extends TutorialTask<TutorialGettingStarted>
_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<TutorialGettingStarted>
{
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<TutorialGettingStarted>
public void run(Boolean data)
{
}
}, event.getPlayer(), "iboughtthis" + event.getItem().getType().name());
}, event.getPlayer(), "tutorialboughtought" + event.getItem().getType().name());
_bought.add(event.getItem().getType());
}
}

View File

@ -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)
{