Merge branch 'master' of ssh://184.154.0.242:7999/min/Mineplex
This commit is contained in:
commit
af61b62a47
@ -23,7 +23,7 @@
|
||||
</profile>
|
||||
<profile default="false" name="Annotation profile for bungee" enabled="true">
|
||||
<sourceOutputDir name="target/generated-sources/annotations" />
|
||||
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
||||
<sourceTestOutputDir name="target\generated-test-sources\test-annotations" />
|
||||
<outputRelativeToContentRoot value="true" />
|
||||
<processorPath useClasspath="true" />
|
||||
</profile>
|
||||
|
@ -116,4 +116,12 @@ public enum Rank
|
||||
{
|
||||
return _donor;
|
||||
}
|
||||
|
||||
public String getRawTag()
|
||||
{
|
||||
if (Name.equalsIgnoreCase("ALL"))
|
||||
return "";
|
||||
|
||||
return Name;
|
||||
}
|
||||
}
|
||||
|
@ -505,12 +505,12 @@ public class UtilItem
|
||||
|
||||
public static boolean isSword(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.SWORD));
|
||||
return material == null ? false : (contains(material, ItemCategory.SWORD));
|
||||
}
|
||||
|
||||
public static boolean isEdible(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.EDIBLE));
|
||||
return material == null ? false : (contains(material, ItemCategory.EDIBLE));
|
||||
}
|
||||
|
||||
public static boolean isEdible(ItemStack stack)
|
||||
@ -520,7 +520,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isPotable(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.POTABLE));
|
||||
return material == null ? false : (contains(material, ItemCategory.POTABLE));
|
||||
}
|
||||
|
||||
public static boolean isPotable(ItemStack stack)
|
||||
@ -530,7 +530,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isAxe(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.AXE));
|
||||
return material == null ? false : (contains(material, ItemCategory.AXE));
|
||||
}
|
||||
|
||||
public static boolean isAxe(ItemStack stack)
|
||||
@ -540,7 +540,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isWeapon(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.WEAPON));
|
||||
return material == null ? false : (contains(material, ItemCategory.WEAPON));
|
||||
}
|
||||
|
||||
public static boolean isWeapon(ItemStack stack)
|
||||
@ -550,7 +550,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isHelmet(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.ARMOR_HELMET));
|
||||
return material == null ? false : (contains(material, ItemCategory.ARMOR_HELMET));
|
||||
}
|
||||
|
||||
public static boolean isHelmet(ItemStack stack)
|
||||
@ -560,7 +560,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isChestplate(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.ARMOR_CHESTPLATE));
|
||||
return material == null ? false : (contains(material, ItemCategory.ARMOR_CHESTPLATE));
|
||||
}
|
||||
|
||||
public static boolean isChestplate(ItemStack stack)
|
||||
@ -570,7 +570,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isLeggings(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.ARMOR_LEGGINGS));
|
||||
return material == null ? false : (contains(material, ItemCategory.ARMOR_LEGGINGS));
|
||||
}
|
||||
|
||||
public static boolean isLeggings(ItemStack stack)
|
||||
@ -580,7 +580,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isBoots(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.ARMOR_BOOTS));
|
||||
return material == null ? false : (contains(material, ItemCategory.ARMOR_BOOTS));
|
||||
}
|
||||
|
||||
public static boolean isBoots(ItemStack stack)
|
||||
@ -590,7 +590,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isBlock(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.BLOCK));
|
||||
return material == null ? false : (contains(material, ItemCategory.BLOCK));
|
||||
}
|
||||
|
||||
public static boolean isBlock(ItemStack stack)
|
||||
@ -600,7 +600,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isLiquid(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.LIQUID));
|
||||
return material == null ? false : (contains(material, ItemCategory.LIQUID));
|
||||
}
|
||||
|
||||
public static boolean isLiquid(ItemStack stack)
|
||||
@ -620,7 +620,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isTranslucent(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.TRANSLUCENT));
|
||||
return material == null ? false : (contains(material, ItemCategory.TRANSLUCENT));
|
||||
}
|
||||
|
||||
public static boolean isTranslucent(ItemStack stack)
|
||||
@ -630,7 +630,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isOre(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.ORE));
|
||||
return material == null ? false : (contains(material, ItemCategory.ORE));
|
||||
}
|
||||
|
||||
public static boolean isOre(ItemStack stack)
|
||||
@ -640,7 +640,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isCompactBlock(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.COMPACT_BLOCK));
|
||||
return material == null ? false : (contains(material, ItemCategory.COMPACT_BLOCK));
|
||||
}
|
||||
|
||||
public static boolean isCompactBlock(ItemStack stack)
|
||||
@ -650,7 +650,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isGlassProduct(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.GLASS));
|
||||
return material == null ? false : (contains(material, ItemCategory.GLASS));
|
||||
}
|
||||
|
||||
public static boolean isGlassProduct(ItemStack stack)
|
||||
@ -660,7 +660,7 @@ public class UtilItem
|
||||
|
||||
public static boolean doesModifyMovement(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.MOVEMENT_MODIFYING));
|
||||
return material == null ? false : (contains(material, ItemCategory.MOVEMENT_MODIFYING));
|
||||
}
|
||||
|
||||
public static boolean doesModifyMovement(ItemStack stack)
|
||||
@ -670,7 +670,7 @@ public class UtilItem
|
||||
|
||||
public static boolean doesEmitLight(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.LIGHT_EMITTING));
|
||||
return material == null ? false : (contains(material, ItemCategory.LIGHT_EMITTING));
|
||||
}
|
||||
|
||||
public static boolean doesEmitLight(ItemStack stack)
|
||||
@ -680,7 +680,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isRedstoneComponent(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.REDSTONE));
|
||||
return material == null ? false : (contains(material, ItemCategory.REDSTONE));
|
||||
}
|
||||
|
||||
public static boolean isRedstoneComponent(ItemStack stack)
|
||||
@ -690,7 +690,7 @@ public class UtilItem
|
||||
|
||||
public static boolean doesHaveGUI(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.GUI));
|
||||
return material == null ? false : (contains(material, ItemCategory.GUI));
|
||||
}
|
||||
|
||||
public static boolean doesHaveGUI(ItemStack stack)
|
||||
@ -700,7 +700,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isClimbable(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.CLIMBABLE));
|
||||
return material == null ? false : (contains(material, ItemCategory.CLIMBABLE));
|
||||
}
|
||||
|
||||
public static boolean isClimbable(ItemStack stack)
|
||||
@ -710,7 +710,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isLeatherProduct(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.LEATHER));
|
||||
return material == null ? false : (contains(material, ItemCategory.LEATHER));
|
||||
}
|
||||
|
||||
public static boolean isLeatherProduct(ItemStack stack)
|
||||
@ -720,7 +720,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isGoldProduct(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.GOLD));
|
||||
return material == null ? false : (contains(material, ItemCategory.GOLD));
|
||||
}
|
||||
|
||||
public static boolean isGoldProduct(ItemStack stack)
|
||||
@ -730,7 +730,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isIronProduct(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.IRON));
|
||||
return material == null ? false : (contains(material, ItemCategory.IRON));
|
||||
}
|
||||
|
||||
public static boolean isIronProduct(ItemStack stack)
|
||||
@ -740,7 +740,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isDiamondProduct(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.DIAMOND));
|
||||
return material == null ? false : (contains(material, ItemCategory.DIAMOND));
|
||||
}
|
||||
|
||||
public static boolean isDiamondProduct(ItemStack stack)
|
||||
@ -750,7 +750,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isStoneProduct(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.STONE));
|
||||
return material == null ? false : (contains(material, ItemCategory.STONE));
|
||||
}
|
||||
|
||||
public static boolean isStoneProduct(ItemStack stack)
|
||||
@ -760,7 +760,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isWoodProduct(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.WOOD));
|
||||
return material == null ? false : (contains(material, ItemCategory.WOOD));
|
||||
}
|
||||
|
||||
public static boolean isWoodProduct(ItemStack stack)
|
||||
@ -770,7 +770,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isChainmailProduct(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.CHAINMAIL));
|
||||
return material == null ? false : (contains(material, ItemCategory.CHAINMAIL));
|
||||
}
|
||||
|
||||
public static boolean isChainmailProduct(ItemStack stack)
|
||||
@ -780,7 +780,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isThrowable(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.THROWABLE));
|
||||
return material == null ? false : (contains(material, ItemCategory.THROWABLE));
|
||||
}
|
||||
|
||||
public static boolean isThrowable(ItemStack stack)
|
||||
@ -790,7 +790,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isVehicle(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.VEHICLE));
|
||||
return material == null ? false : (contains(material, ItemCategory.VEHICLE));
|
||||
}
|
||||
|
||||
public static boolean isVehicle(ItemStack stack)
|
||||
@ -800,7 +800,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isItem(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.ITEM));
|
||||
return material == null ? false : (contains(material, ItemCategory.ITEM));
|
||||
}
|
||||
|
||||
public static boolean isItem(ItemStack stack)
|
||||
@ -820,7 +820,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isLeaf(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.LEAVES));
|
||||
return material == null ? false : (contains(material, ItemCategory.LEAVES));
|
||||
}
|
||||
|
||||
public static boolean isLeaf(ItemStack stack)
|
||||
@ -830,7 +830,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isTool(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.TOOL));
|
||||
return material == null ? false : (contains(material, ItemCategory.TOOL));
|
||||
}
|
||||
|
||||
public static boolean isTool(ItemStack stack)
|
||||
@ -840,7 +840,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isAffectedByPhysics(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.PHYSICS));
|
||||
return material == null ? false : (contains(material, ItemCategory.PHYSICS));
|
||||
}
|
||||
|
||||
public static boolean isAffectedByPhysics(ItemStack stack)
|
||||
@ -850,7 +850,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isFromNether(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.NETHER));
|
||||
return material == null ? false : (contains(material, ItemCategory.NETHER));
|
||||
}
|
||||
|
||||
public static boolean isFromNether(ItemStack stack)
|
||||
@ -870,7 +870,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isMusicDisc(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.MUSIC_DISC));
|
||||
return material == null ? false : (contains(material, ItemCategory.MUSIC_DISC));
|
||||
}
|
||||
|
||||
public static boolean isMusicDisc(ItemStack stack)
|
||||
@ -880,7 +880,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isSpade(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.SHOVEL));
|
||||
return material == null ? false : (contains(material, ItemCategory.SHOVEL));
|
||||
}
|
||||
|
||||
public static boolean isSpade(ItemStack stack)
|
||||
@ -890,7 +890,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isPickaxe(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.PICKAXE));
|
||||
return material == null ? false : (contains(material, ItemCategory.PICKAXE));
|
||||
}
|
||||
|
||||
public static boolean isPickaxe(ItemStack stack)
|
||||
@ -900,7 +900,7 @@ public class UtilItem
|
||||
|
||||
public static boolean isHoe(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.HOE));
|
||||
return material == null ? false : (contains(material, ItemCategory.HOE));
|
||||
}
|
||||
|
||||
public static boolean isHoe(ItemStack stack)
|
||||
@ -920,13 +920,19 @@ public class UtilItem
|
||||
|
||||
public static boolean isArmor(Material material)
|
||||
{
|
||||
return material == null ? false : (_materials.get(material).contains(ItemCategory.ARMOR));
|
||||
return material == null ? false : (contains(material, ItemCategory.ARMOR));
|
||||
}
|
||||
|
||||
public static boolean isArmor(ItemStack stack)
|
||||
{
|
||||
return isArmor(stack == null ? null : stack.getType());
|
||||
}
|
||||
|
||||
private static boolean contains(Material material, ItemCategory category)
|
||||
{
|
||||
EnumSet<ItemCategory> set = _materials.get(material);
|
||||
return set == null ? false : set.contains(category);
|
||||
}
|
||||
|
||||
public static List<Material> listIn(ItemCategory... attr)
|
||||
{
|
||||
|
@ -106,4 +106,8 @@ public class UtilText {
|
||||
return x <= 0 ? true : x > 1;
|
||||
}
|
||||
|
||||
public static String trim(int maxLength, String s) {
|
||||
return s.length() <= maxLength ? s : s.substring(0, maxLength);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -18,6 +18,8 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class TaskManager extends MiniDbClientPlugin<TaskClient>
|
||||
{
|
||||
public static TaskManager Instance;
|
||||
|
||||
private static Object _taskLock = new Object();
|
||||
private TaskRepository _repository;
|
||||
|
||||
@ -27,6 +29,8 @@ public class TaskManager extends MiniDbClientPlugin<TaskClient>
|
||||
{
|
||||
super("Task Manager", plugin, clientManager);
|
||||
|
||||
Instance = this;
|
||||
|
||||
_repository = new TaskRepository(plugin);
|
||||
updateTasks();
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||
import mineplex.core.MiniPlugin;
|
||||
import mineplex.core.account.CoreClient;
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.common.CurrencyType;
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.common.util.Callback;
|
||||
import mineplex.core.common.util.NautHashMap;
|
||||
@ -236,7 +237,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
|
||||
_purchaseManager.addAccountPurchaseToQueue(client.getAccountId(), packageName, amount, data == TransactionResponse.Success);
|
||||
}
|
||||
}
|
||||
}, name, client.getAccountId(), amount == 1 ? packageName : packageName + " " + amount, false, 0, false);
|
||||
}, name, client.getAccountId(), amount == 1 ? packageName : packageName + " " + amount, CurrencyType.Gems, 0, false);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.game.clans.tutorials.types.ClanTips.TipType;
|
||||
import mineplex.game.clans.clans.ClanTips.TipType;
|
||||
|
||||
public class ClanEnergyTracker extends MiniPlugin
|
||||
{
|
||||
|
@ -670,7 +670,7 @@ public class ClanInfo
|
||||
public int getEnergyMax()
|
||||
{
|
||||
// 10080 = 7 days of minutes
|
||||
return Math.max(4320, getEnergyCostPerMinute() * 60 * 24 * 3);
|
||||
return Math.max(10080, getEnergyCostPerMinute() * 60 * 24 * 7);
|
||||
}
|
||||
|
||||
public int getEnergyCostPerMinute()
|
||||
|
@ -1,4 +1,4 @@
|
||||
package mineplex.game.clans.tutorials.types;
|
||||
package mineplex.game.clans.clans;
|
||||
|
||||
import java.util.LinkedList;
|
||||
|
||||
@ -12,8 +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.ClansManager;
|
||||
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;
|
||||
@ -117,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);
|
||||
|
@ -64,6 +64,7 @@ import mineplex.core.task.TaskManager;
|
||||
import mineplex.core.teleport.Teleport;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.game.clans.clans.ClanTips.TipType;
|
||||
import mineplex.game.clans.clans.ClansUtility.ClanRelation;
|
||||
import mineplex.game.clans.clans.commands.ClanManagementCommand;
|
||||
import mineplex.game.clans.clans.commands.ClansAllyChatCommand;
|
||||
@ -103,8 +104,6 @@ import mineplex.game.clans.gameplay.safelog.npc.NPCManager;
|
||||
import mineplex.game.clans.items.GearManager;
|
||||
import mineplex.game.clans.spawn.Spawn;
|
||||
import mineplex.game.clans.tutorials.TutorialManager;
|
||||
import mineplex.game.clans.tutorials.types.ClanTips;
|
||||
import mineplex.game.clans.tutorials.types.ClanTips.TipType;
|
||||
import mineplex.minecraft.game.classcombat.Class.ClassManager;
|
||||
import mineplex.minecraft.game.classcombat.Class.ClientClass;
|
||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass;
|
||||
@ -1002,34 +1001,34 @@ public class ClansManager extends MiniClientPlugin<ClientClan>implements IRelati
|
||||
public void updateBedStatus(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.TWOSEC)
|
||||
return;
|
||||
|
||||
for (String name : getClanNameSet())
|
||||
{
|
||||
for (String name : getClanNameSet())
|
||||
ClanInfo clan = _clanUtility.getClanByClanName(name);
|
||||
|
||||
if (clan.getHome() != null)
|
||||
{
|
||||
ClanInfo clan = _clanUtility.getClanByClanName(name);
|
||||
|
||||
if (clan.getHome() != null)
|
||||
if (UtilBlock.isValidBed(clan.getHome()))
|
||||
{
|
||||
if (UtilBlock.isValidBed(clan.getHome()))
|
||||
if (clan.getHome().clone().add(0, 1,0).getBlock().getType().equals(Material.AIR))
|
||||
{
|
||||
if (clan.getHome().clone().add(0, 1,0).getBlock().getType().equals(Material.AIR))
|
||||
{
|
||||
clan.setBedStatus(BedStatus.EXISTS_AND_UNOBSTRUCTED);
|
||||
}
|
||||
else
|
||||
{
|
||||
clan.setBedStatus(BedStatus.EXISTS_AND_OBSTRUCTED);
|
||||
}
|
||||
clan.setBedStatus(BedStatus.EXISTS_AND_UNOBSTRUCTED);
|
||||
}
|
||||
else
|
||||
{
|
||||
clan.setBedStatus(BedStatus.DESTROYED);
|
||||
clan.setBedStatus(BedStatus.EXISTS_AND_OBSTRUCTED);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
clan.setBedStatus(BedStatus.DOESNT_EXIST);
|
||||
clan.setBedStatus(BedStatus.DESTROYED);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
clan.setBedStatus(BedStatus.DOESNT_EXIST);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -674,6 +674,9 @@ public class ClansUtility
|
||||
if (!data)
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Clans", "There was an error processing your request. Try again later"));
|
||||
}else
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Clans", "You disbanded your Clan."));
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -724,11 +727,11 @@ public class ClansUtility
|
||||
}
|
||||
}
|
||||
|
||||
if (clan.getClaims() >= clan.getClaimsMax())
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Clans", "Your Clan cannot claim more Territory."));
|
||||
return false;
|
||||
}
|
||||
// if (clan.getClaims() >= clan.getClaimsMax())
|
||||
// {
|
||||
// UtilPlayer.message(caller, F.main("Clans", "Your Clan cannot claim more Territory."));
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// Adjacent
|
||||
boolean selfAdj = false;
|
||||
@ -736,7 +739,13 @@ public class ClansUtility
|
||||
{
|
||||
for (int z = -1; z <= 1; z++)
|
||||
{
|
||||
if (x == 0 && z == 0) continue;
|
||||
if ((x == 1 && z == 1)
|
||||
|| (x == -1 && z == 1)
|
||||
|| (x == -1 && z == -1)
|
||||
|| (x == 1 && z == -1)
|
||||
|| (x == 0 && z == 0)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String other = UtilWorld.chunkToStr(caller.getWorld().getChunkAt(caller.getLocation().getChunk().getX() + x, caller.getLocation().getChunk().getZ() + z));
|
||||
|
||||
@ -837,10 +846,10 @@ public class ClansUtility
|
||||
int boxed = 0;
|
||||
|
||||
// This is bad. I know. But the other way doesn't seem to work.
|
||||
String down = UtilWorld.chunkToStr(chunk.getWorld().getChunkAt(chunk.getX() + 1, chunk.getZ() + 1));
|
||||
String up = UtilWorld.chunkToStr(chunk.getWorld().getChunkAt(chunk.getX(), chunk.getZ() -1 ));
|
||||
String down = UtilWorld.chunkToStr(chunk.getWorld().getChunkAt(chunk.getX() + 0, chunk.getZ() + 1));
|
||||
String up = UtilWorld.chunkToStr(chunk.getWorld().getChunkAt(chunk.getX(), chunk.getZ() - 1));
|
||||
String right = UtilWorld.chunkToStr(chunk.getWorld().getChunkAt(chunk.getX() + 1, chunk.getZ()));
|
||||
String left = UtilWorld.chunkToStr(chunk.getWorld().getChunkAt(chunk.getX() - 1, chunk.getZ() + 0));
|
||||
String left = UtilWorld.chunkToStr(chunk.getWorld().getChunkAt(chunk.getX() - 1, chunk.getZ()));
|
||||
|
||||
ClanInfo downClan = getOwner(down);
|
||||
ClanInfo upClan = getOwner(up);
|
||||
|
@ -16,18 +16,16 @@ import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.common.util.UtilTime.TimeUnit;
|
||||
import mineplex.core.recharge.Recharge;
|
||||
import mineplex.core.common.util.UtilWorld;
|
||||
import mineplex.game.clans.Clans;
|
||||
import mineplex.core.recharge.Recharge;
|
||||
import mineplex.game.clans.clans.ClanInfo;
|
||||
import mineplex.game.clans.clans.ClanRole;
|
||||
import mineplex.game.clans.clans.ClanTips.TipType;
|
||||
import mineplex.game.clans.clans.ClansBlacklist;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
import mineplex.game.clans.clans.ClansUtility;
|
||||
import mineplex.game.clans.clans.ClientClan;
|
||||
import mineplex.game.clans.clans.event.ClansCommandExecutedEvent;
|
||||
import mineplex.game.clans.tutorials.TutorialManager;
|
||||
import mineplex.game.clans.tutorials.types.ClanTips.TipType;
|
||||
import net.minecraft.server.v1_8_R3.EnumDirection;
|
||||
|
||||
public class ClansCommand extends CommandBase<ClansManager>
|
||||
@ -275,6 +273,10 @@ public class ClansCommand extends CommandBase<ClansManager>
|
||||
// Hopefully shouldn't happen!
|
||||
UtilPlayer.message(caller, F.main("Clans", "There was an error creating the clan. Please try again"));
|
||||
}
|
||||
else
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Clans", "You created Clan " + C.cYellow + data.getName() + C.cGray + "."));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -777,6 +779,15 @@ public class ClansCommand extends CommandBase<ClansManager>
|
||||
{
|
||||
ClanInfo clan = Plugin.getClanUtility().getClanByPlayer(caller);
|
||||
|
||||
// Event
|
||||
ClansCommandExecutedEvent event = new ClansCommandExecutedEvent(caller, "homeset");
|
||||
UtilServer.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
if (event.isCancelled())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (clan == null)
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Clans", "You are not in a Clan."));
|
||||
@ -833,7 +844,7 @@ public class ClansCommand extends CommandBase<ClansManager>
|
||||
}
|
||||
|
||||
public void infoClan(Player caller, String search)
|
||||
{
|
||||
{System.out.println(search);
|
||||
if (search == null)
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Clans", "You did not input a search parameter."));
|
||||
@ -854,6 +865,36 @@ public class ClansCommand extends CommandBase<ClansManager>
|
||||
_manager.getClanShop().openClanWho(caller, clan);
|
||||
}
|
||||
|
||||
public void forceJoinClan(Player caller, String search)
|
||||
{
|
||||
if (_manager.getClientManager().hasRank(caller, Rank.ADMIN))
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Clans", "No no no, this command is not for you ;-)"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (search == null)
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Clans", "You did not input a search parameter."));
|
||||
return;
|
||||
}
|
||||
|
||||
ClansCommandExecutedEvent event = new ClansCommandExecutedEvent(caller, "info", search);
|
||||
UtilServer.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
if (event.isCancelled())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ClanInfo clan = Plugin.getClanUtility().searchClanPlayer(caller, search, true);
|
||||
if (clan == null) return;
|
||||
|
||||
_manager.getClanUtility().join(caller, clan);
|
||||
_manager.getClanDataAccess().role(clan, caller.getUniqueId(), ClanRole.LEADER);
|
||||
}
|
||||
|
||||
|
||||
public void infoTerritory(Player caller, String[] args)
|
||||
{
|
||||
ClanInfo clan;
|
||||
|
@ -0,0 +1,40 @@
|
||||
package mineplex.game.clans.clans.commands;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import mineplex.core.command.CommandBase;
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.task.TaskManager;
|
||||
import mineplex.game.clans.tutorials.Tutorial;
|
||||
import mineplex.game.clans.tutorials.TutorialManager;
|
||||
import mineplex.game.clans.tutorials.gettingstarted.TutorialGettingStarted;
|
||||
|
||||
public class RestartTutCommand extends CommandBase<TutorialManager>
|
||||
{
|
||||
public RestartTutCommand(TutorialManager plugin)
|
||||
{
|
||||
super(plugin, Rank.ALL, "rst", "rstut");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void Execute(Player caller, String[] args)
|
||||
{
|
||||
String ignoreString = String.format(Tutorial.TUTORIAL_REWARD_TASK, "GettingStartedTutorial");
|
||||
Integer ignoreInt = TaskManager.Instance.getTaskId(ignoreString);
|
||||
|
||||
Iterator<Integer> it = TaskManager.Instance.Get(caller).TasksCompleted.iterator();
|
||||
while (it.hasNext())
|
||||
{
|
||||
Integer i = it.next();
|
||||
if (i != null && (ignoreInt == null || i.intValue() != ignoreInt.intValue()))
|
||||
{
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
|
||||
TutorialManager.Instance.cancelTutorial(caller);
|
||||
TutorialManager.Instance.startTutorial(TutorialGettingStarted.class, caller);
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -55,6 +55,7 @@ import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.common.util.UtilTime.TimeUnit;
|
||||
import mineplex.core.itemstack.ItemBuilder;
|
||||
import mineplex.core.portal.ServerTransferEvent;
|
||||
import mineplex.core.timing.TimingManager;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
@ -69,7 +70,7 @@ import net.minecraft.server.v1_8_R3.PersistentCollection;
|
||||
|
||||
public class ItemMapManager extends MiniPlugin
|
||||
{
|
||||
private int _blocksScan = 16 * 12;
|
||||
private int _blocksScan = 16 * 3;
|
||||
private ClansUtility _clansUtility;
|
||||
private Comparator<Entry<Integer, Integer>> _comparator;
|
||||
private int _halfMapSize = 1536 / 2;
|
||||
@ -702,9 +703,7 @@ public class ItemMapManager extends MiniPlugin
|
||||
public void renderMap(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.FAST)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_scanList.isEmpty())
|
||||
{
|
||||
@ -741,13 +740,16 @@ public class ItemMapManager extends MiniPlugin
|
||||
|
||||
boolean outsideMap = startingZ < -_halfMapSize;
|
||||
|
||||
TimingManager.start("renderMap.scanWorldMap");
|
||||
scanWorldMap(startingX, startingZ, !outsideMap);
|
||||
|
||||
TimingManager.stop("renderMap.scanWorldMap");
|
||||
|
||||
if (outsideMap)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
TimingManager.start("renderMap.scale loop");
|
||||
for (int scale = 1; scale < _scale.size(); scale++)
|
||||
{
|
||||
if (scale == 3 && _loadWorld)
|
||||
@ -760,8 +762,11 @@ public class ItemMapManager extends MiniPlugin
|
||||
|
||||
colorWorldHeight(scale, startingX, startingZ);
|
||||
}
|
||||
|
||||
TimingManager.stop("renderMap.scale loop");
|
||||
|
||||
TimingManager.start("renderMap.colorWorldHeight 0");
|
||||
colorWorldHeight(0, startingX, startingZ);
|
||||
TimingManager.stop("renderMap.colorWorldHeight 0");
|
||||
}
|
||||
|
||||
public void scanWorldMap(int startingX, int startingZ, boolean setColors)
|
||||
|
@ -14,7 +14,7 @@ public class ObserverCommand extends CommandBase<ObserverManager>
|
||||
{
|
||||
public ObserverCommand(ObserverManager plugin)
|
||||
{
|
||||
super(plugin, Rank.ALL, "observer", "o");
|
||||
super(plugin, Rank.HELPER, "observer", "o");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,6 +1,8 @@
|
||||
package mineplex.game.clans.clans.scoreboard;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scoreboard.DisplaySlot;
|
||||
import org.bukkit.scoreboard.Objective;
|
||||
@ -10,6 +12,7 @@ import org.bukkit.scoreboard.Team;
|
||||
import net.minecraft.server.v1_8_R3.ScoreboardTeam;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.UtilText;
|
||||
import mineplex.core.scoreboard.PlayerScoreboard;
|
||||
import mineplex.core.scoreboard.ScoreboardManager;
|
||||
import mineplex.game.clans.clans.ClanInfo;
|
||||
@ -73,6 +76,33 @@ public class ClansPlayerScoreboard extends PlayerScoreboard
|
||||
|
||||
public void add(Scoreboard scoreboard, Player otherPlayer, ClanInfo clanInfo, ClanRelation relation, int ownScore)
|
||||
{
|
||||
if (otherPlayer.getGameMode().equals(GameMode.CREATIVE))
|
||||
{
|
||||
String teamName = UtilText.trim(16, _clansManager.getClientManager().Get(otherPlayer).GetRank().getRawTag() + "CREATIVE");
|
||||
Team team = scoreboard.getTeam(teamName);
|
||||
if (team == null)
|
||||
{
|
||||
team = scoreboard.registerNewTeam(teamName);
|
||||
team.setPrefix(UtilText.trim(16, _clansManager.getClientManager().Get(otherPlayer).GetRank().getTag(true, true) + ChatColor.RESET + " "));
|
||||
team.setSuffix(C.cRed + " STAFF MODE");
|
||||
}
|
||||
|
||||
Objective domObjective;
|
||||
if ((domObjective = scoreboard.getObjective(DisplaySlot.BELOW_NAME)) == null)
|
||||
{
|
||||
domObjective = scoreboard.registerNewObjective("war", "dummy");
|
||||
domObjective.setDisplayName("War Points");
|
||||
domObjective.setDisplaySlot(DisplaySlot.BELOW_NAME);
|
||||
}
|
||||
|
||||
if (clanInfo != null)
|
||||
domObjective.getScore(otherPlayer.getName()).setScore(ownScore);
|
||||
|
||||
team.addPlayer(otherPlayer);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
String teamName = getTeamName(clanInfo, relation, ownScore);
|
||||
Team team = scoreboard.getTeam(teamName);
|
||||
if (team == null)
|
||||
|
@ -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(35, TimeUnit.SECONDS, TimeUnit.MILLISECONDS);
|
||||
|
||||
public StuckManager(ClansManager clans)
|
||||
{
|
||||
|
@ -27,13 +27,13 @@ import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.game.clans.clans.ClanInfo;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
import mineplex.game.clans.clans.ClansUtility;
|
||||
import mineplex.game.clans.clans.ClanTips.TipType;
|
||||
import mineplex.game.clans.clans.event.ClanDisbandedEvent;
|
||||
import mineplex.game.clans.clans.event.ClansPlayerDeathEvent;
|
||||
import mineplex.game.clans.clans.war.command.WarPointsCommand;
|
||||
import mineplex.game.clans.clans.war.event.WarInvasionEndEvent;
|
||||
import mineplex.game.clans.clans.war.event.WarInvasionStartEvent;
|
||||
import mineplex.game.clans.core.war.ClanWarData;
|
||||
import mineplex.game.clans.tutorials.types.ClanTips.TipType;
|
||||
|
||||
public class WarManager extends MiniPlugin implements ScoreboardElement
|
||||
{
|
||||
|
@ -20,8 +20,8 @@ import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.common.util.UtilTextMiddle;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
import mineplex.game.clans.clans.ClanTips.TipType;
|
||||
import mineplex.game.clans.gameplay.safelog.npc.NPCManager;
|
||||
import mineplex.game.clans.tutorials.types.ClanTips.TipType;
|
||||
|
||||
public class SafeLog extends MiniPlugin
|
||||
{
|
||||
|
@ -4,6 +4,7 @@ import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.common.util.UtilItem;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.shop.ShopBase;
|
||||
@ -79,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));
|
||||
}
|
||||
}
|
||||
|
||||
@ -88,6 +89,7 @@ public abstract class ClansShopPage<T extends ShopBase<ClansManager>> extends Sh
|
||||
addShopItem(index, item, (byte) 0, displayName, 1);
|
||||
}
|
||||
|
||||
|
||||
public void addShopItem(int index, ClansShopItem item)
|
||||
{
|
||||
addShopItem(index, item, (byte) 0);
|
||||
|
@ -3,6 +3,7 @@ package mineplex.game.clans.shop;
|
||||
import org.bukkit.Material;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.UtilItem;
|
||||
import mineplex.core.shop.item.ShopItem;
|
||||
|
||||
public class PvpItem extends ShopItem
|
||||
@ -25,7 +26,18 @@ public class PvpItem extends ShopItem
|
||||
|
||||
public PvpItem(Material type, byte data, int displayAmount, String name, int buyPrice, int sellPrice, int bulkCount)
|
||||
{
|
||||
super(type, data, name, new String[] { C.cWhite + " ", LEFT_CLICK_BUY, C.cWhite + "Costs " + C.cGreen + buyPrice + "g", C.cWhite + " ", C.cYellow + "Shift Left-Click" + C.cWhite + " to Buy " + C.cGreen + bulkCount, C.cWhite + "Costs " + C.cGreen + (buyPrice * bulkCount) + "g", C.cWhite + " ", RIGHT_CLICK_SELL, C.cWhite + "Earns " + C.cGreen + sellPrice + "g", C.cWhite + " ", C.cYellow + "Shift Right-Click" + C.cWhite + " to Sell " + C.cGreen + "All", }, 0, false, false);
|
||||
super(type, data, name, new String[] {
|
||||
C.cWhite + " ",
|
||||
LEFT_CLICK_BUY,
|
||||
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 == 0 ? "Free" : sellPrice + ""),
|
||||
C.cWhite + " ",
|
||||
C.cYellow + "Shift Right-Click" + C.cWhite + " to Sell " + C.cGreen + "All",
|
||||
}, 0, false, false);
|
||||
|
||||
_price = buyPrice;
|
||||
_sellPrice = sellPrice;
|
||||
|
@ -1,14 +1,18 @@
|
||||
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;
|
||||
import mineplex.core.common.util.UtilItem;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.shop.item.IButton;
|
||||
@ -24,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
|
||||
@ -78,7 +95,7 @@ public class ShopItemButton<T extends ShopPageBase<?, ?>> implements IButton
|
||||
}
|
||||
else if (clickType == ClickType.SHIFT_LEFT || clickType == ClickType.LEFT)
|
||||
{
|
||||
final int amount = shiftClick ? 64 : 1;
|
||||
final int amount = !(UtilItem.isArmor(_item.getType()) || UtilItem.isTool(_item.getType())) && shiftClick ? 64 : 1;
|
||||
final int cost = amount * _buyPrice;
|
||||
int goldCount = GoldManager.getInstance().getGold(player);
|
||||
|
||||
|
@ -8,12 +8,15 @@ import org.bukkit.entity.Player;
|
||||
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.shop.item.ShopItem;
|
||||
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>
|
||||
{
|
||||
@ -44,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)
|
||||
@ -63,7 +70,7 @@ 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";
|
||||
@ -73,7 +80,7 @@ public class EnergyPage extends ShopPageBase<ClanEnergyManager, EnergyShop>
|
||||
if (locked)
|
||||
setItem(slot, shopItem);
|
||||
else
|
||||
addButton(slot, shopItem, new EnergyShopButton(getPlugin(), this, energyAmount, clanInfo));
|
||||
addButton(slot, shopItem, new EnergyShopButton(getPlugin(), this, energyAmount, clanInfo, free ? 0 : getPlugin().convertEnergyToGold(energyAmount)));
|
||||
}
|
||||
|
||||
private void buildNoClan()
|
||||
|
@ -24,13 +24,15 @@ public class EnergyShopButton implements IButton
|
||||
private EnergyPage _page;
|
||||
private int _energyToPurchase;
|
||||
private ClanInfo _clanInfo;
|
||||
private int _cost;
|
||||
|
||||
public EnergyShopButton(ClanEnergyManager energyManager, EnergyPage page, int energyToPurchase, ClanInfo clanInfo)
|
||||
public EnergyShopButton(ClanEnergyManager energyManager, EnergyPage page, int energyToPurchase, ClanInfo clanInfo, int cost)
|
||||
{
|
||||
_energyManager = energyManager;
|
||||
_clanInfo = clanInfo;
|
||||
_energyToPurchase = energyToPurchase;
|
||||
_page = page;
|
||||
_cost = cost;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -56,7 +58,7 @@ public class EnergyShopButton implements IButton
|
||||
// Notify
|
||||
_energyManager.getClansManager().messageClan(_clanInfo, F.main("Energy", F.name(player.getName()) + " purchased " + F.elem(_energyToPurchase + " Energy") + " for the clan"));
|
||||
}
|
||||
}, _page, new EnergyPackage(_energyToPurchase + " Energy", _energyManager.convertEnergyToGold(_energyToPurchase)), CurrencyType.Gold, player));
|
||||
}, _page, new EnergyPackage(_energyToPurchase + " Energy", _cost), CurrencyType.Gold, player));
|
||||
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,46 @@
|
||||
package mineplex.game.clans.tutorials;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
public class DeployedTask implements Listener
|
||||
{
|
||||
protected Player _player;
|
||||
protected boolean _finished;
|
||||
|
||||
protected TutorialTask<?> _task;
|
||||
|
||||
protected boolean _dead;
|
||||
|
||||
public DeployedTask(Player player, TutorialTask<?> task)
|
||||
{
|
||||
_player = player;
|
||||
|
||||
_task = task;
|
||||
}
|
||||
|
||||
public void postDeploy()
|
||||
{
|
||||
}
|
||||
|
||||
public boolean checkForDeath()
|
||||
{
|
||||
return _dead || _player == null;
|
||||
}
|
||||
|
||||
public void finish()
|
||||
{
|
||||
onFinish();
|
||||
_task.finishFor(_player);
|
||||
}
|
||||
|
||||
public void kill()
|
||||
{
|
||||
_dead = true;
|
||||
_player = null;
|
||||
}
|
||||
|
||||
public void onFinish() {
|
||||
}
|
||||
|
||||
}
|
@ -1,7 +1,8 @@
|
||||
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;
|
||||
|
||||
@ -14,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;
|
||||
@ -27,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;
|
||||
@ -35,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;
|
||||
|
||||
/**
|
||||
@ -46,9 +48,10 @@ import mineplex.game.clans.economy.GoldManager;
|
||||
*/
|
||||
public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
{
|
||||
public static String TASK_COMPLETE_TASK = "Tutorial%sDoneTask%s";
|
||||
public static String TUTORIAL_COMPLETE_TASK = "Tutorial%sFinito";
|
||||
public static String SKIPPED_TASK = "Tutorial%sSkipito";
|
||||
public static String TASK_COMPLETE_TASK = "tttatatta%sTask%s";
|
||||
public static String TUTORIAL_COMPLETE_TASK = "tatatatatat%sDone"; //do not change
|
||||
public static String TUTORIAL_REWARD_TASK = "tatatatatat%sRewardGiven"; //do not change
|
||||
public static String SKIPPED_TASK = "tatatatata%sSkip";
|
||||
|
||||
protected final TutorialManager _manager;
|
||||
protected final GoldManager _goldManager;
|
||||
@ -56,17 +59,17 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
protected final TaskManager _taskManager;
|
||||
protected final DonationManager _donationManager;
|
||||
|
||||
private final Map<Integer, TutorialTask> _tasks;
|
||||
private final Map<String, TutorialTask> _nameToTask;
|
||||
protected final Map<String, TutorialClient> _inTutorial;
|
||||
protected final LinkedHashMap<Integer, TutorialTask<?>> _tasks;
|
||||
protected final LinkedHashMap<String, TutorialTask<?>> _nameToTask;
|
||||
protected final LinkedHashMap<String, TutorialClient> _inTutorial;
|
||||
|
||||
protected boolean _doScoreboard;
|
||||
protected boolean _ghostMode;
|
||||
|
||||
protected boolean _startOnJoin;
|
||||
|
||||
protected String _uniqueId;
|
||||
protected String _friendlyName;
|
||||
protected String _technicalName;
|
||||
protected String _displayName;
|
||||
|
||||
protected int _goldReward = -1;
|
||||
protected int _gemReward = -1;
|
||||
@ -79,9 +82,9 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
_donationManager = donationManager;
|
||||
_taskManager = taskManager;
|
||||
_manager = manager;
|
||||
_tasks = new HashMap<>();
|
||||
_inTutorial = new HashMap<>();
|
||||
_nameToTask = new HashMap<>();
|
||||
_tasks = new LinkedHashMap<>();
|
||||
_inTutorial = new LinkedHashMap<>();
|
||||
_nameToTask = new LinkedHashMap<>();
|
||||
|
||||
_manager.getPluginManager().registerEvents(this, _manager.getPlugin());
|
||||
}
|
||||
@ -91,78 +94,72 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
{
|
||||
final List<String> lines = new ArrayList<>();
|
||||
|
||||
if (!isInTutorial(player) || !_doScoreboard)
|
||||
if (!isInTutorial(player))
|
||||
{
|
||||
return lines;
|
||||
}
|
||||
|
||||
if (!_doScoreboard)
|
||||
{
|
||||
return lines;
|
||||
}
|
||||
|
||||
if (get(player).CurrentTask == null)
|
||||
{
|
||||
return lines;
|
||||
}
|
||||
|
||||
out.clear();
|
||||
|
||||
final TutorialClient ptutorial = _inTutorial.get(player.getName());
|
||||
final TutorialClient client = _inTutorial.get(player.getName());
|
||||
|
||||
lines.add(C.cAqua + _friendlyName + " Tutorial");
|
||||
lines.add(C.cAqua + "Tutorial");
|
||||
|
||||
for (final TutorialTask task : _tasks.values())
|
||||
for (final TutorialTask<?> task : _tasks.values())
|
||||
{
|
||||
if (get(player).getCurrentTask() == task.getID())
|
||||
if (get(player).CurrentTask.equals(task))
|
||||
{
|
||||
lines.add(C.cDAqua + task.getID() + ". " + task.getFriendlyName());
|
||||
lines.add(C.cDAqua + task.getID() + ". " + task.getDisplayName());
|
||||
}
|
||||
else if (ptutorial.hasFinishedTask(task))
|
||||
else if (client.CurrentTask.getID() > task.getID())
|
||||
{
|
||||
lines.add(C.cGreen + task.getID() + ". " + task.getFriendlyName());
|
||||
lines.add(C.cGreen + task.getID() + ". " + task.getDisplayName());
|
||||
}
|
||||
else
|
||||
{
|
||||
lines.add(C.cRed + task.getID() + ". " + task.getFriendlyName());
|
||||
lines.add(C.cRed + task.getID() + ". " + task.getDisplayName());
|
||||
}
|
||||
}
|
||||
|
||||
lines.add(C.cYellow + "To skip, type: /skiptutorial");
|
||||
// lines.add(C.cYellow + "To get info, type: /taskinfo");
|
||||
|
||||
return lines;
|
||||
}
|
||||
|
||||
protected void addTask(final int id, final String name, final String description)
|
||||
protected void addTask(TutorialTask<?> task)
|
||||
{
|
||||
addTask(id, name, description, null);
|
||||
_tasks.put(_tasks.size() + 1, task);
|
||||
_nameToTask.put(task.getTechnicalName(), task);
|
||||
}
|
||||
|
||||
protected void addTask(final int id, final String name, final String description, final String finishMessage)
|
||||
protected boolean hasFinishedTask(Player player, TutorialTask<?> task)
|
||||
{
|
||||
_tasks.put(id, new TutorialTask(id, name, description, finishMessage));
|
||||
_nameToTask.put(name, _tasks.get(id));
|
||||
return get(player).CurrentTask.getID() < task.getID();
|
||||
}
|
||||
|
||||
protected boolean hasFinishedTask(Player player, String taskName)
|
||||
protected void finishTask(final Player player, final TutorialTask<?> task)
|
||||
{
|
||||
return hasFinishedTask(player, _nameToTask.get(taskName).getID());
|
||||
}
|
||||
|
||||
protected boolean hasFinishedTask(Player player, int taskID)
|
||||
{
|
||||
return get(player).hasFinishedTask(_tasks.get(taskID));
|
||||
}
|
||||
|
||||
protected void finishTask(final Player player, final int taskID)
|
||||
{
|
||||
final TutorialTask task = _tasks.get(taskID);
|
||||
|
||||
String taskName = task.getFriendlyName();
|
||||
onFinishTask(player, taskName);
|
||||
get(player).LastDescriptionSentTime = 0;
|
||||
get(player).CurrentTask.visibleFinish(player);
|
||||
get(player).CurrentTask = task.equals(_tasks.get(_tasks.size())) ? null : _tasks.get(task.getID() + 1);
|
||||
|
||||
_inTutorial.get(player.getName()).setTaskFinished(taskID);
|
||||
|
||||
if (!_taskManager.hasCompletedTask(player, String.format(TASK_COMPLETE_TASK, _uniqueId, task.getUniqueId())))
|
||||
if (!_taskManager.hasCompletedTask(player, String.format(TASK_COMPLETE_TASK, _technicalName, task.getTechnicalName())))
|
||||
{
|
||||
_taskManager.completedTask(new Callback<Boolean>()
|
||||
{
|
||||
public void run(final Boolean completed)
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Tutorials", "You have completed Task " + F.elem(taskID + ": " + task.getFriendlyName()) + ". " + (_tasks.size() - taskID) + " task" + (UtilText.plural(_tasks.size() - taskID) ? "s" : "") + " to go!"));
|
||||
|
||||
if (taskID == _tasks.size())
|
||||
if (task.equals(_tasks.get(_tasks.size())))
|
||||
{
|
||||
finishFor(player);
|
||||
}
|
||||
@ -172,30 +169,20 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
_tasks.get(taskID + 1).sendDescriptionTo(player);
|
||||
get(player).CurrentTask.deploy(player);
|
||||
}
|
||||
}, 40L);
|
||||
}, 10L);
|
||||
}
|
||||
|
||||
player.playSound(player.getLocation(), Sound.LEVEL_UP, 2f, 1.5f);
|
||||
}
|
||||
}, player, String.format(TASK_COMPLETE_TASK, _uniqueId, task.getUniqueId()));
|
||||
}, player, String.format(TASK_COMPLETE_TASK, _technicalName, task.getTechnicalName()));
|
||||
}
|
||||
}
|
||||
|
||||
protected void finishTask(final Player player, final String taskName)
|
||||
public TutorialTask<?> getTask(final String technicalName)
|
||||
{
|
||||
finishTask(player, _nameToTask.get(taskName).getID());
|
||||
}
|
||||
|
||||
public TutorialTask getTask(final int taskID)
|
||||
{
|
||||
return _tasks.get(taskID);
|
||||
}
|
||||
|
||||
public TutorialTask getTask(final String name)
|
||||
{
|
||||
return _nameToTask.get(name);
|
||||
return _nameToTask.get(technicalName);
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
|
||||
@ -239,20 +226,21 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
_inTutorial.remove(player.getName());
|
||||
|
||||
UtilFirework.launchFirework(player.getLocation(), Type.BALL_LARGE, Color.LIME, false, false, new Vector(0, 0, 0), 1);
|
||||
UtilPlayer.message(player, F.main("Tutorials", "You have completed the " + F.elem(_friendlyName + " Tutorial") + "."));
|
||||
onFinished(player);
|
||||
if (!_taskManager.hasCompletedTask(player, String.format(TUTORIAL_COMPLETE_TASK, _uniqueId)))
|
||||
|
||||
if (!_taskManager.hasCompletedTask(player, String.format(TUTORIAL_REWARD_TASK, _technicalName)))
|
||||
{
|
||||
_taskManager.completedTask(new Callback<Boolean>()
|
||||
{
|
||||
public void run(final Boolean completed)
|
||||
@Override
|
||||
public void run(Boolean data)
|
||||
{
|
||||
if (_goldReward != -1)
|
||||
{
|
||||
_goldManager.addGold(player, _goldReward);
|
||||
UtilPlayer.message(player, F.main("Tutorials", "You have been awarded " + F.elem(_goldReward + " Gold") + "."));
|
||||
}
|
||||
|
||||
|
||||
if (_gemReward != -1)
|
||||
{
|
||||
_donationManager.RewardGems(new Callback<Boolean>() {
|
||||
@ -262,7 +250,7 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
}
|
||||
}, "Clans", player.getName(), player.getUniqueId(), _gemReward);
|
||||
}
|
||||
|
||||
|
||||
if (_coinReward != -1)
|
||||
{
|
||||
_donationManager.RewardCoins(new Callback<Boolean>() {
|
||||
@ -272,7 +260,17 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
}
|
||||
}, "Clans", player.getName(), _clansManager.getClientManager().getAccountId(player), _coinReward);
|
||||
}
|
||||
|
||||
}
|
||||
}, player, String.format(TUTORIAL_REWARD_TASK, _technicalName));
|
||||
|
||||
}
|
||||
|
||||
if (!_taskManager.hasCompletedTask(player, String.format(TUTORIAL_COMPLETE_TASK, _technicalName)))
|
||||
{
|
||||
_taskManager.completedTask(new Callback<Boolean>()
|
||||
{
|
||||
public void run(final Boolean completed)
|
||||
{
|
||||
if (_ghostMode)
|
||||
{
|
||||
for (Player other : UtilServer.getPlayers())
|
||||
@ -294,7 +292,7 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
}, i * 10);
|
||||
}
|
||||
}
|
||||
}, player, String.format(TUTORIAL_COMPLETE_TASK, _uniqueId));
|
||||
}, player, String.format(TUTORIAL_COMPLETE_TASK, _technicalName));
|
||||
}
|
||||
}
|
||||
|
||||
@ -303,11 +301,6 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
{
|
||||
}
|
||||
|
||||
// Implementation left to sub classes.
|
||||
protected void onFinishTask(final Player player, String task)
|
||||
{
|
||||
}
|
||||
|
||||
// Implementation left to sub classes.
|
||||
protected void onBegin(final Player player)
|
||||
{
|
||||
@ -320,7 +313,10 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
_manager._playerTutorials.put(player.getName(), this);
|
||||
}
|
||||
|
||||
_inTutorial.put(player.getName(), TutorialClient.create(player, _taskManager, this));
|
||||
_inTutorial.put(player.getName(), new TutorialClient(player, this));
|
||||
|
||||
get(player).CurrentTask.deploy(player);
|
||||
|
||||
player.playSound(player.getLocation(), Sound.LEVEL_UP, 2f, 1.5f);
|
||||
|
||||
if (_ghostMode)
|
||||
@ -335,8 +331,6 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
onBegin(player);
|
||||
}
|
||||
|
||||
//_playerTutorials.remove(player.getName());
|
||||
|
||||
public void cancelFor(final Player player)
|
||||
{
|
||||
_inTutorial.remove(player.getName());
|
||||
@ -345,7 +339,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);
|
||||
}
|
||||
}
|
||||
@ -361,19 +355,19 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
return _inTutorial.containsKey(player);
|
||||
}
|
||||
|
||||
public Map<Integer, TutorialTask> getTasks()
|
||||
public Map<Integer, TutorialTask<?>> getTasks()
|
||||
{
|
||||
return _tasks;
|
||||
}
|
||||
|
||||
public boolean hasCompleted(final Player player)
|
||||
{
|
||||
return _taskManager.hasCompletedTask(player, String.format(TUTORIAL_COMPLETE_TASK, _uniqueId));
|
||||
return _taskManager.hasCompletedTask(player, String.format(TUTORIAL_COMPLETE_TASK, _technicalName));
|
||||
}
|
||||
|
||||
public boolean hasSkipped(final Player player)
|
||||
{
|
||||
return _taskManager.hasCompletedTask(player, String.format(SKIPPED_TASK, _uniqueId));
|
||||
return _taskManager.hasCompletedTask(player, String.format(SKIPPED_TASK, _technicalName));
|
||||
}
|
||||
|
||||
public void skip(final Player player)
|
||||
@ -396,12 +390,15 @@ 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);
|
||||
|
||||
}
|
||||
|
||||
public void doSkip(final Player player)
|
||||
@ -412,12 +409,12 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
{
|
||||
cancelFor(player);
|
||||
}
|
||||
}, player, String.format(SKIPPED_TASK, _uniqueId));
|
||||
}, player, String.format(SKIPPED_TASK, _technicalName));
|
||||
}
|
||||
|
||||
public String getUniqueId()
|
||||
public String getTechnicalName()
|
||||
{
|
||||
return _uniqueId;
|
||||
return _technicalName;
|
||||
}
|
||||
|
||||
public TutorialClient get(final Player player)
|
||||
@ -425,10 +422,19 @@ 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)
|
||||
{
|
||||
if (evt.getType() != UpdateType.SEC_30)
|
||||
if (evt.getType() != UpdateType.SEC)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@ -437,10 +443,31 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
{
|
||||
if (isInTutorial(player))
|
||||
{
|
||||
getTask(get(player).getCurrentTask()).sendDescriptionTo(player);
|
||||
get(player).CurrentTask.trySendDescription(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@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)
|
||||
@ -459,5 +486,12 @@ public abstract class Tutorial implements ScoreboardElement, Listener
|
||||
}, 40L);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void cleanup(Player player)
|
||||
{
|
||||
if (get(player) != null && get(player).CurrentTask != null)
|
||||
get(player).CurrentTask.cleanup(player);
|
||||
|
||||
_inTutorial.remove(player.getName());
|
||||
}
|
||||
}
|
||||
|
@ -2,70 +2,31 @@ package mineplex.game.clans.tutorials;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.task.TaskManager;
|
||||
|
||||
public class TutorialClient
|
||||
{
|
||||
private final Tutorial _tutorial;
|
||||
private final Player _player;
|
||||
public Player Player;
|
||||
public TutorialTask<?> CurrentTask;
|
||||
public long LastDescriptionSentTime = System.currentTimeMillis() - 3000;
|
||||
|
||||
private int _currentTask = 1;
|
||||
|
||||
public TutorialClient(final Player player, final Tutorial tutorial)
|
||||
public TutorialClient(Player player, Tutorial tutorial)
|
||||
{
|
||||
_player = player;
|
||||
_tutorial = tutorial;
|
||||
}
|
||||
|
||||
public static TutorialClient create(final Player player, final TaskManager taskManager, final Tutorial tutorial)
|
||||
{
|
||||
final TutorialClient user = new TutorialClient(player, tutorial);
|
||||
Player = player;
|
||||
|
||||
for (final int i : tutorial.getTasks().keySet())
|
||||
CurrentTask = tutorial._tasks.get(1);
|
||||
|
||||
for (TutorialTask<?> task : tutorial._tasks.values())
|
||||
{
|
||||
if (taskManager.hasCompletedTask(player, String.format(Tutorial.TASK_COMPLETE_TASK, tutorial.getUniqueId(), tutorial.getTask(i).getUniqueId())))
|
||||
if (TaskManager.Instance.hasCompletedTask(player, String.format(
|
||||
Tutorial.TASK_COMPLETE_TASK,
|
||||
task.getTutorial().getTechnicalName(), task.getTechnicalName())))
|
||||
{
|
||||
user._currentTask = i;
|
||||
if (CurrentTask.getID() <= task.getID())
|
||||
{
|
||||
CurrentTask = task.getTutorial().getTasks().get(Math.min(task.getTutorial().getTasks().size(), task.getID() + 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(tutorial._manager.getPlugin(), new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
tutorial.getTask(user._currentTask).sendDescriptionTo(player);
|
||||
}
|
||||
}, 40);
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
public int getCurrentTask()
|
||||
{
|
||||
return _currentTask;
|
||||
}
|
||||
|
||||
public Tutorial getTutorial()
|
||||
{
|
||||
return _tutorial;
|
||||
}
|
||||
|
||||
public Player getPlayer()
|
||||
{
|
||||
return _player;
|
||||
}
|
||||
|
||||
public void setTaskFinished(final int taskID)
|
||||
{
|
||||
_currentTask = taskID + 1;
|
||||
|
||||
_tutorial.getTask(taskID).onFinish(_player);
|
||||
}
|
||||
|
||||
public boolean hasFinishedTask(final TutorialTask task)
|
||||
{
|
||||
return task != null && task.getID() < _currentTask;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,13 +1,11 @@
|
||||
package mineplex.game.clans.tutorials;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import mineplex.core.MiniPlugin;
|
||||
@ -16,14 +14,12 @@ import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.preferences.PreferencesManager;
|
||||
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.commands.RestartTutCommand;
|
||||
import mineplex.game.clans.economy.GoldManager;
|
||||
import mineplex.game.clans.tutorials.commands.DoSkipTutorialCommand;
|
||||
import mineplex.game.clans.tutorials.commands.SkipTutorialCommand;
|
||||
import mineplex.game.clans.tutorials.commands.TaskInfoCommand;
|
||||
import mineplex.game.clans.tutorials.types.TutorialGettingStarted;
|
||||
import mineplex.game.clans.tutorials.gettingstarted.TutorialGettingStarted;
|
||||
|
||||
public class TutorialManager extends MiniPlugin
|
||||
{
|
||||
@ -49,7 +45,7 @@ public class TutorialManager extends MiniPlugin
|
||||
{
|
||||
addCommand(new SkipTutorialCommand(this));
|
||||
addCommand(new DoSkipTutorialCommand(this));
|
||||
addCommand(new TaskInfoCommand(this));
|
||||
addCommand(new RestartTutCommand(this));
|
||||
}
|
||||
|
||||
public boolean startTutorial(final Class<? extends Tutorial> tutorial, final Player player)
|
||||
@ -81,9 +77,9 @@ public class TutorialManager extends MiniPlugin
|
||||
{
|
||||
getTutorial(player).cancelFor(player);
|
||||
|
||||
_playerTutorials.remove(player.getName());
|
||||
|
||||
UtilPlayer.message(player, F.main("Tutorials", "You have cancelled the " + F.elem(getTutorial(player)._friendlyName + " Tutorial") + "."));
|
||||
UtilPlayer.message(player, F.main("Tutorials", "You have cancelled the " + F.elem(getTutorial(player)._displayName + " Tutorial") + "."));
|
||||
_playerTutorials.remove(player.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@ -99,32 +95,18 @@ public class TutorialManager extends MiniPlugin
|
||||
{
|
||||
if (isInTutorial(player))
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Tutorials", "You have skipped the " + F.elem(getTutorial(player)._friendlyName + " Tutorial") + "."));
|
||||
UtilPlayer.message(player, F.main("Tutorials", "You have skipped the " + F.elem(getTutorial(player)._displayName + " Tutorial") + "."));
|
||||
getTutorial(player).doSkip(player);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void cleanup(UpdateEvent event)
|
||||
public void quit(PlayerQuitEvent event)
|
||||
{
|
||||
if (!event.getType().equals(UpdateType.SLOW))
|
||||
{
|
||||
if (!isInTutorial(event.getPlayer()))
|
||||
return;
|
||||
}
|
||||
|
||||
List<String> del = new ArrayList<>();
|
||||
for (String name : _playerTutorials.keySet())
|
||||
{
|
||||
if (Bukkit.getPlayer(name) == null)
|
||||
{
|
||||
del.add(name);
|
||||
}
|
||||
}
|
||||
|
||||
for (String name : del)
|
||||
{
|
||||
_playerTutorials.remove(name);
|
||||
}
|
||||
getTutorial(event.getPlayer()).cleanup(event.getPlayer());
|
||||
}
|
||||
|
||||
public Tutorial getTutorial(final Player player)
|
||||
|
@ -1,39 +1,121 @@
|
||||
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.UtilText;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
|
||||
public class TutorialTask
|
||||
public class TutorialTask<T extends Tutorial> implements Listener
|
||||
{
|
||||
private final String _name;
|
||||
private final String _description;
|
||||
private final String _finishMessage;
|
||||
private final int _id;
|
||||
private T _tutorial;
|
||||
|
||||
public TutorialTask(final int id, final String name, final String description, String finishMessage)
|
||||
protected long _autoCompleteTime = -1;
|
||||
|
||||
protected String _displayName;
|
||||
protected String _technicalName;
|
||||
|
||||
protected String _description;
|
||||
protected String _finishMessage;
|
||||
|
||||
protected long _descriptionWaitTime = 30000;
|
||||
|
||||
private List<String> _playersFinished = new ArrayList<>();
|
||||
|
||||
private Map<String, DeployedTask> _deployedInstances = new HashMap<>();
|
||||
private List<DeployedTask> _toCull = new ArrayList<>();
|
||||
|
||||
private int _id;
|
||||
|
||||
public TutorialTask(T tutorial, int id)
|
||||
{
|
||||
_tutorial = tutorial;
|
||||
_id = id;
|
||||
_name = name;
|
||||
_description = description;
|
||||
_finishMessage = finishMessage;
|
||||
|
||||
UtilServer.getServer().getPluginManager().registerEvents(this, _tutorial._manager.getPlugin());
|
||||
}
|
||||
|
||||
public int getID()
|
||||
protected DeployedTask deploy(final Player player)
|
||||
{
|
||||
return _id;
|
||||
DeployedTask task = customDeploy(player);
|
||||
|
||||
_deployedInstances.put(player.getName(), task);
|
||||
|
||||
UtilServer.getServer().getPluginManager().registerEvents(task, _tutorial._manager.getPlugin());
|
||||
|
||||
trySendDescription(player);
|
||||
|
||||
if (_autoCompleteTime != -1)
|
||||
{
|
||||
UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(_tutorial._manager.getPlugin(), new Runnable(){
|
||||
public void run()
|
||||
{
|
||||
if (_deployedInstances.containsKey(player.getName()))
|
||||
{
|
||||
finishFor(player);
|
||||
}
|
||||
}
|
||||
}, _autoCompleteTime);
|
||||
}
|
||||
|
||||
task.postDeploy();
|
||||
|
||||
return task;
|
||||
}
|
||||
|
||||
public String getFinishMessage()
|
||||
public void trySendDescription(Player player)
|
||||
{
|
||||
return _finishMessage;
|
||||
if (!_tutorial.isInTutorial(player))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
TutorialClient client = _tutorial.get(player);
|
||||
|
||||
if (System.currentTimeMillis() - client.LastDescriptionSentTime > client.CurrentTask.getDescriptionWaitTime())
|
||||
{
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
public String getFriendlyName()
|
||||
protected DeployedTask customDeploy(final Player player)
|
||||
{
|
||||
return _name;
|
||||
return new DeployedTask(player, this);
|
||||
}
|
||||
|
||||
public final void startFor(Player player)
|
||||
{
|
||||
deploy(player);
|
||||
}
|
||||
|
||||
public final boolean hasFinished(final Player player)
|
||||
{
|
||||
return _playersFinished.contains(player.getName());
|
||||
}
|
||||
|
||||
public String getDisplayName()
|
||||
{
|
||||
return _displayName;
|
||||
}
|
||||
|
||||
public String getDescription()
|
||||
@ -41,26 +123,79 @@ public class TutorialTask
|
||||
return _description;
|
||||
}
|
||||
|
||||
public String getUniqueId()
|
||||
public String getFinishMessage()
|
||||
{
|
||||
return _name.replace(" ", "");
|
||||
return _finishMessage;
|
||||
}
|
||||
|
||||
public void sendDescriptionTo(final Player player)
|
||||
public String getTechnicalName()
|
||||
{
|
||||
UtilPlayer.message(player, C.cGreen + "==== Pt." + _id + ": " + _name + " ====");
|
||||
UtilPlayer.message(player, C.cYellow + _description.replace("{", C.cAqua).replace("}", C.cYellow));
|
||||
UtilPlayer.message(player, C.cGreen + UtilText.repeat("=", _name.length() + ("=== Pt." + _id + ": ===").length()));
|
||||
return _technicalName;
|
||||
}
|
||||
|
||||
public void onFinish(final Player player)
|
||||
public int getID()
|
||||
{
|
||||
return _id;
|
||||
}
|
||||
|
||||
public void finishFor(Player player)
|
||||
{
|
||||
_tutorial.finishTask(player, this);
|
||||
}
|
||||
|
||||
public void visibleFinish(Player player)
|
||||
{
|
||||
_deployedInstances.get(player.getName()).kill();
|
||||
_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();
|
||||
_toCull.add(_deployedInstances.get(player.getName()));
|
||||
_playersFinished.remove(player.getName());
|
||||
}
|
||||
|
||||
public long getDescriptionWaitTime()
|
||||
{
|
||||
return _descriptionWaitTime;
|
||||
}
|
||||
|
||||
public T getTutorial()
|
||||
{
|
||||
return _tutorial;
|
||||
}
|
||||
}
|
||||
|
@ -1,31 +0,0 @@
|
||||
package mineplex.game.clans.tutorials.commands;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import mineplex.core.command.CommandBase;
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.game.clans.tutorials.TutorialManager;
|
||||
|
||||
public class TaskInfoCommand extends CommandBase<TutorialManager>
|
||||
{
|
||||
public TaskInfoCommand(final TutorialManager plugin)
|
||||
{
|
||||
super(plugin, Rank.ALL, "taskinfo", "ti");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void Execute(final Player caller, final String[] args)
|
||||
{
|
||||
if (Plugin.isInTutorial(caller))
|
||||
{
|
||||
Plugin.getTutorial(caller).getTask(Plugin.getTutorial(caller).get(caller).getCurrentTask()).sendDescriptionTo(caller);
|
||||
}
|
||||
else
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Tutorials", "You are not currently in a tutorial."));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
package mineplex.game.clans.tutorials.gettingstarted;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
import mineplex.game.clans.clans.event.ClansCommandExecutedEvent;
|
||||
import mineplex.game.clans.tutorials.DeployedTask;
|
||||
import mineplex.game.clans.tutorials.TutorialTask;
|
||||
|
||||
public class TaskClaim extends TutorialTask<TutorialGettingStarted>
|
||||
{
|
||||
public TaskClaim(TutorialGettingStarted tutorial, int id)
|
||||
{
|
||||
super(tutorial, id);
|
||||
|
||||
_displayName = "Claim some Territory";
|
||||
_technicalName = "ClaimTerr";
|
||||
|
||||
_description = "Clans can claim 16x16 areas of Territory! "
|
||||
+ "Once claimed, only your Clan can break/place blocks here. "
|
||||
+ "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}!";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeployedTask customDeploy(Player player)
|
||||
{
|
||||
return new Deployed(player, this);
|
||||
}
|
||||
|
||||
class Deployed extends DeployedTask
|
||||
{
|
||||
public Deployed(Player player, TutorialTask<?> task)
|
||||
{
|
||||
super(player, task);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onClansCommand(ClansCommandExecutedEvent event)
|
||||
{
|
||||
if (!_player.equals(event.getPlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ClansManager.getInstance().isInClan(event.getPlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getCommand().equals("claim"))
|
||||
{
|
||||
_task.finishFor(_player);
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
package mineplex.game.clans.tutorials.gettingstarted;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
import mineplex.game.clans.clans.event.ClanCreatedEvent;
|
||||
import mineplex.game.clans.tutorials.DeployedTask;
|
||||
import mineplex.game.clans.tutorials.TutorialTask;
|
||||
|
||||
public class TaskCreateClan extends TutorialTask<TutorialGettingStarted>
|
||||
{
|
||||
public TaskCreateClan(TutorialGettingStarted tutorial, int id)
|
||||
{
|
||||
super(tutorial, id);
|
||||
|
||||
_displayName = "Create a Clan";
|
||||
_technicalName = "ClanCreation";
|
||||
|
||||
_description = "Before beginning, use the {/c create <ClanName>} command to start up your own Clan! ";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeployedTask customDeploy(Player player)
|
||||
{
|
||||
return new Deployed(player, this);
|
||||
}
|
||||
|
||||
class Deployed extends DeployedTask
|
||||
{
|
||||
public Deployed(Player player, TutorialTask<?> task)
|
||||
{
|
||||
super(player, task);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onClanCreated(ClanCreatedEvent event)
|
||||
{
|
||||
if (!_player.equals(event.getFounder()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_task.finishFor(_player);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
public class TaskCustomizeClass extends TutorialTask<TutorialGettingStarted>
|
||||
{
|
||||
public TaskCustomizeClass(TutorialGettingStarted tutorial, int id)
|
||||
{
|
||||
super(tutorial, id);
|
||||
|
||||
_displayName = "Customize Class";
|
||||
_technicalName = "CustomizeKlass";
|
||||
|
||||
_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
|
||||
public DeployedTask customDeploy(Player player)
|
||||
{
|
||||
return new Deployed(player, this);
|
||||
}
|
||||
|
||||
class Deployed extends DeployedTask
|
||||
{
|
||||
public Deployed(Player player, TutorialTask<?> task)
|
||||
{
|
||||
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)
|
||||
{
|
||||
if (!event.getType().equals(UpdateType.SEC))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (checkForDeath())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final ClientClass clientclass = ClansManager.getInstance().getClassManager().Get(_player);
|
||||
|
||||
if (clientclass != null && clientclass.GetSavingCustomBuild() != null)
|
||||
{
|
||||
_task.finishFor(_player);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
package mineplex.game.clans.tutorials.gettingstarted;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
import mineplex.game.clans.clans.event.ClanDisbandedEvent;
|
||||
import mineplex.game.clans.tutorials.DeployedTask;
|
||||
import mineplex.game.clans.tutorials.TutorialTask;
|
||||
|
||||
public class TaskDisbandClan extends TutorialTask<TutorialGettingStarted>
|
||||
{
|
||||
public TaskDisbandClan(TutorialGettingStarted tutorial, int id)
|
||||
{
|
||||
super(tutorial, id);
|
||||
|
||||
_displayName = "Disband your Clan";
|
||||
_technicalName = "DisbandClan";
|
||||
|
||||
_description = "Finally, let's disband your Clan to end the Tutorial. "
|
||||
+ "Simply type {/c disband} to do this. "
|
||||
+ "This will delete your Clan, and you'll be able to create or join a new one!";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeployedTask customDeploy(Player player)
|
||||
{
|
||||
return new Deployed(player, this);
|
||||
}
|
||||
|
||||
class Deployed extends DeployedTask
|
||||
{
|
||||
public Deployed(Player player, TutorialTask<?> task)
|
||||
{
|
||||
super(player, task);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void sell(ClanDisbandedEvent event)
|
||||
{
|
||||
if (!_player.equals(event.getDisbander()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_task.finishFor(_player);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,116 @@
|
||||
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;
|
||||
|
||||
import mineplex.core.common.util.Callback;
|
||||
import mineplex.core.common.util.UtilItem;
|
||||
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;
|
||||
|
||||
public class TaskEquipClass extends TutorialTask<TutorialGettingStarted>
|
||||
{
|
||||
public TaskEquipClass(TutorialGettingStarted tutorial, int id)
|
||||
{
|
||||
super(tutorial, id);
|
||||
|
||||
_displayName = "Equip a Class";
|
||||
_technicalName = "AuszustattenKlasse";
|
||||
|
||||
_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 Champion’s Class.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeployedTask customDeploy(Player player)
|
||||
{
|
||||
return new Deployed(player, this);
|
||||
}
|
||||
|
||||
class Deployed extends DeployedTask
|
||||
{
|
||||
private List<Material> _bought = new ArrayList<>();
|
||||
|
||||
public Deployed(Player player, TutorialTask<?> task)
|
||||
{
|
||||
super(player, task);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postDeploy()
|
||||
{
|
||||
_player.teleport(new Location(Spawn.getSpawnWorld(), 19, 66, -305.844, -100f, 0f));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onClassEquipped(ClassEquipEvent event)
|
||||
{
|
||||
if (!ClansManager.getInstance().getClassManager().Get(_player).equals(event.getPlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_task.finishFor(_player);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void button(ClansShopAddButtonEvent event)
|
||||
{
|
||||
if (!_player.equals(event.getPlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(UtilItem.isArmor(event.getMaterial()) && UtilItem.isIronProduct(event.getMaterial())))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!TaskManager.Instance.hasCompletedTask(event.getPlayer(), "tuttoooooe" + event.getMaterial().name()) && !_bought.contains(event.getMaterial()))
|
||||
{
|
||||
event.setBuyPrice(0);
|
||||
event.setSellPrice(0);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void buy(final ClansPlayerBuyItemEvent event)
|
||||
{
|
||||
if (!_player.equals(event.getPlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(UtilItem.isArmor(event.getItem().getType()) && UtilItem.isIronProduct(event.getItem().getType())))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getCost() == 0 && _bought.contains(event.getItem().getType()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
TaskManager.Instance.completedTask(new Callback<Boolean>() {
|
||||
@Override
|
||||
public void run(Boolean data)
|
||||
{
|
||||
}
|
||||
}, event.getPlayer(), "tuttoooooe" + event.getItem().getType().name());
|
||||
_bought.add(event.getItem().getType());
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,87 @@
|
||||
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.EnergyPageBuildEvent;
|
||||
import mineplex.game.clans.spawn.Spawn;
|
||||
import mineplex.game.clans.tutorials.DeployedTask;
|
||||
import mineplex.game.clans.tutorials.TutorialTask;
|
||||
|
||||
public class TaskExploreShops extends TutorialTask<TutorialGettingStarted>
|
||||
{
|
||||
public TaskExploreShops(TutorialGettingStarted tutorial, int id)
|
||||
{
|
||||
super(tutorial, id);
|
||||
|
||||
_displayName = "Welcome to the Shops";
|
||||
_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 {Max Energy}. (FREE)";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeployedTask customDeploy(Player player)
|
||||
{
|
||||
return new Deployed(player, this);
|
||||
}
|
||||
|
||||
class Deployed extends DeployedTask
|
||||
{
|
||||
public Deployed(Player player, TutorialTask<?> task)
|
||||
{
|
||||
super(player, task);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postDeploy()
|
||||
{
|
||||
_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(EnergyPageBuildEvent event)
|
||||
{
|
||||
if (!_player.equals(event.getPlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ClansManager.getInstance().isInClan(_player))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (ClansManager.getInstance().getClan(_player).getEnergyPurchasable() == 0)
|
||||
{
|
||||
_task.finishFor(_player);
|
||||
return;
|
||||
}
|
||||
|
||||
event.setFree(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onUpdate(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.TWOSEC)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (ClansManager.getInstance().getClan(_player).getEnergy() == ClansManager.getInstance().getClan(_player).getEnergyMax())
|
||||
{
|
||||
_task.finishFor(_player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
package mineplex.game.clans.tutorials.gettingstarted;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
import mineplex.game.clans.clans.event.PlayerEnterTerritoryEvent;
|
||||
import mineplex.game.clans.tutorials.DeployedTask;
|
||||
import mineplex.game.clans.tutorials.TutorialTask;
|
||||
|
||||
public class TaskGoToWilderness extends TutorialTask<TutorialGettingStarted>
|
||||
{
|
||||
public TaskGoToWilderness(TutorialGettingStarted tutorial, int id)
|
||||
{
|
||||
super(tutorial, id);
|
||||
|
||||
_displayName = "Go To The Wilderness";
|
||||
_technicalName = "GoToWildy";
|
||||
|
||||
_description = "Use your Map (Slot 9) to help find your way to the Wilderness. "
|
||||
+ "The Wilderness is anywhere that is not colored on the Map. "
|
||||
+ "If you don't have a map, you can get one at any time by typing {/map}. "
|
||||
+ "You can zoom in/out on our map by left and right clicking!";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeployedTask customDeploy(Player player)
|
||||
{
|
||||
return new Deployed(player, this);
|
||||
}
|
||||
|
||||
class Deployed extends DeployedTask
|
||||
{
|
||||
public Deployed(Player player, TutorialTask<?> task)
|
||||
{
|
||||
super(player, task);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onTerritory(final PlayerEnterTerritoryEvent event)
|
||||
{
|
||||
if (!_player.equals(event.getPlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getNewTerritory().contains("Wilderness"))
|
||||
{
|
||||
_task.finishFor(_player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
package mineplex.game.clans.tutorials.gettingstarted;
|
||||
|
||||
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;
|
||||
import mineplex.game.clans.tutorials.TutorialTask;
|
||||
|
||||
public class TaskLeaveSpawn extends TutorialTask<TutorialGettingStarted>
|
||||
{
|
||||
public TaskLeaveSpawn(TutorialGettingStarted tutorial, int id)
|
||||
{
|
||||
super(tutorial, id);
|
||||
|
||||
_displayName = "Leave Spawn Islands";
|
||||
_technicalName = "LeaveSpawn";
|
||||
|
||||
_description = "Now you can leave the Spawn Island. "
|
||||
+ "Don't worry, you won't get hurt from the fall! "
|
||||
+ "Once you end the tutorial, PvP will be enabled down there, so be careful!";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeployedTask customDeploy(Player player)
|
||||
{
|
||||
return new Deployed(player, this);
|
||||
}
|
||||
|
||||
class Deployed extends DeployedTask
|
||||
{
|
||||
public Deployed(Player player, TutorialTask<?> task)
|
||||
{
|
||||
super(player, task);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postDeploy()
|
||||
{
|
||||
if (_player.getLocation().getY() < 100)
|
||||
{
|
||||
_task.finishFor(_player);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void update(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.SEC)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (checkForDeath())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_player.getLocation().getY() < 100){
|
||||
_task.finishFor(_player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
package mineplex.game.clans.tutorials.gettingstarted;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
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;
|
||||
|
||||
public class TaskMakingMoney extends TutorialTask<TutorialGettingStarted>
|
||||
{
|
||||
public TaskMakingMoney(TutorialGettingStarted tutorial, int id)
|
||||
{
|
||||
super(tutorial, id);
|
||||
|
||||
_displayName = "Making Money (Farming)";
|
||||
_technicalName = "ImAFarmer";
|
||||
|
||||
_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
|
||||
public DeployedTask customDeploy(Player player)
|
||||
{
|
||||
return new Deployed(player, this);
|
||||
}
|
||||
|
||||
class Deployed extends DeployedTask
|
||||
{
|
||||
private int _carrotsSold;
|
||||
|
||||
public Deployed(Player player, TutorialTask<?> task)
|
||||
{
|
||||
super(player, task);
|
||||
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
|
||||
public void button(ClansPlayerSellItemEvent event)
|
||||
{
|
||||
if (!_player.equals(event.getPlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ClansManager.getInstance().isInClan(_player))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!event.getItem().getType().equals(Material.CARROT_ITEM))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_task.finishFor(_player);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
package mineplex.game.clans.tutorials.gettingstarted;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
import mineplex.game.clans.clans.event.ClansCommandExecutedEvent;
|
||||
import mineplex.game.clans.tutorials.DeployedTask;
|
||||
import mineplex.game.clans.tutorials.TutorialTask;
|
||||
|
||||
public class TaskSetHome extends TutorialTask<TutorialGettingStarted>
|
||||
{
|
||||
public TaskSetHome(TutorialGettingStarted tutorial, int id)
|
||||
{
|
||||
super(tutorial, id);
|
||||
|
||||
_displayName = "Set Clan Home";
|
||||
_technicalName = "SetClanHome";
|
||||
|
||||
_description = "You are now ready to set a Clan Home. "
|
||||
+ "To do this, use the {/c sethome} command.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeployedTask customDeploy(Player player)
|
||||
{
|
||||
return new Deployed(player, this);
|
||||
}
|
||||
|
||||
class Deployed extends DeployedTask
|
||||
{
|
||||
public Deployed(Player player, TutorialTask<?> task)
|
||||
{
|
||||
super(player, task);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onSetHome(ClansCommandExecutedEvent event)
|
||||
{
|
||||
if (!_player.equals(event.getPlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ClansManager.getInstance().isInClan(event.getPlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!event.getCommand().equals("homeset"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_task.finishFor(_player);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,129 @@
|
||||
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;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import org.bukkit.event.inventory.InventoryType;
|
||||
import org.bukkit.inventory.CraftingInventory;
|
||||
import org.bukkit.inventory.PlayerInventory;
|
||||
|
||||
import mineplex.core.common.util.Callback;
|
||||
import mineplex.core.task.TaskManager;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
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.Skill.event.SkillTriggerEvent;
|
||||
|
||||
public class TaskUseAbility extends TutorialTask<TutorialGettingStarted>
|
||||
{
|
||||
public TaskUseAbility(TutorialGettingStarted tutorial, int id)
|
||||
{
|
||||
super(tutorial, id);
|
||||
|
||||
_displayName = "Use a Class Ability";
|
||||
_technicalName = "KlassAbilityUsage";
|
||||
|
||||
_description = "Now that you have equipped a class, you can start using abilities. "
|
||||
+ "Purchase an Iron Axe from the PvP Shop. "
|
||||
+ "Right-Click with your Iron Axe to use your Axe Ability!";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeployedTask customDeploy(Player player)
|
||||
{
|
||||
return new Deployed(player, this);
|
||||
}
|
||||
|
||||
class Deployed extends DeployedTask
|
||||
{
|
||||
private List<Material> _bought = new ArrayList<>();
|
||||
private boolean _teleported = false;
|
||||
|
||||
public Deployed(Player player, TutorialTask<?> task)
|
||||
{
|
||||
super(player, task);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void teleportPlayer(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.SEC) return;
|
||||
|
||||
if (!_teleported && _player != null && _player.isOnline() && _player.getOpenInventory().getType() == InventoryType.CRAFTING)
|
||||
{
|
||||
_player.teleport(new Location(Spawn.getSpawnWorld(), 19, 66, -305.844, -100f, 0f));
|
||||
_teleported = true;
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onAbilityUesd(SkillTriggerEvent event)
|
||||
{
|
||||
if (_player == null || !_player.equals(event.GetPlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_task.finishFor(_player);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void button(ClansShopAddButtonEvent event)
|
||||
{
|
||||
if (!_player.equals(event.getPlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
System.out.println(event.getDisplayName());
|
||||
|
||||
if (!event.getMaterial().equals(Material.IRON_AXE))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!TaskManager.Instance.hasCompletedTask(event.getPlayer(), "tuttoooooe" + event.getMaterial().name()) && !_bought.contains(event.getMaterial()))
|
||||
{
|
||||
event.setBuyPrice(0);
|
||||
event.setSellPrice(0);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void buy(final ClansPlayerBuyItemEvent event)
|
||||
{
|
||||
if (!_player.equals(event.getPlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!event.getItem().getType().equals(Material.IRON_AXE))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getCost() == 0 && _bought.contains(event.getItem().getType()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
TaskManager.Instance.completedTask(new Callback<Boolean>() {
|
||||
@Override
|
||||
public void run(Boolean data)
|
||||
{
|
||||
}
|
||||
}, event.getPlayer(), "tuttoooooe" + event.getItem().getType().name());
|
||||
_bought.add(event.getItem().getType());
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
package mineplex.game.clans.tutorials.gettingstarted;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
import mineplex.game.clans.clans.event.ClansCommandExecutedEvent;
|
||||
import mineplex.game.clans.tutorials.DeployedTask;
|
||||
import mineplex.game.clans.tutorials.TutorialTask;
|
||||
|
||||
public class TaskViewClanDetails extends TutorialTask<TutorialGettingStarted>
|
||||
{
|
||||
public TaskViewClanDetails(TutorialGettingStarted tutorial, int id)
|
||||
{
|
||||
super(tutorial, id);
|
||||
|
||||
_displayName = "Viewing Clan Details";
|
||||
_technicalName = "CommandClanX";
|
||||
|
||||
_description = "Now you can view information about your clan. "
|
||||
+ "To do this type {/c [clan name]}! "
|
||||
+ "You can also use any clan's name to get some information about them as well.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeployedTask customDeploy(Player player)
|
||||
{
|
||||
return new Deployed(player, this);
|
||||
}
|
||||
|
||||
class Deployed extends DeployedTask
|
||||
{
|
||||
public Deployed(Player player, TutorialTask<?> task)
|
||||
{
|
||||
super(player, task);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onClansCommand(ClansCommandExecutedEvent event)
|
||||
{
|
||||
if (!_player.equals(event.getPlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getCommand().equals("info"))
|
||||
{
|
||||
_task.finishFor(_player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package mineplex.game.clans.tutorials.gettingstarted;
|
||||
|
||||
import mineplex.game.clans.tutorials.TutorialTask;
|
||||
|
||||
public class TaskWelcome extends TutorialTask<TutorialGettingStarted>
|
||||
{
|
||||
public TaskWelcome(TutorialGettingStarted tutorial, int id)
|
||||
{
|
||||
super(tutorial, id);
|
||||
|
||||
_autoCompleteTime = 20 * 10;
|
||||
|
||||
_displayName = "Welcome";
|
||||
_technicalName = "Welcome";
|
||||
|
||||
_description = "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 {30,000 Gold}";
|
||||
}
|
||||
}
|
@ -0,0 +1,106 @@
|
||||
package mineplex.game.clans.tutorials.gettingstarted;
|
||||
|
||||
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;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
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.economy.GoldManager;
|
||||
import mineplex.game.clans.spawn.Spawn;
|
||||
import mineplex.game.clans.tutorials.Tutorial;
|
||||
import mineplex.game.clans.tutorials.TutorialManager;
|
||||
|
||||
public class TutorialGettingStarted extends Tutorial
|
||||
{
|
||||
public TutorialGettingStarted(final TutorialManager manager, final ClansManager clansManager, final DonationManager donationManager, final GoldManager goldManager, final TaskManager taskManager)
|
||||
{
|
||||
super(goldManager, taskManager, clansManager, donationManager, manager);
|
||||
|
||||
// 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 TaskCustomizeClass(this, ++id));
|
||||
addTask(new TaskUseAbility(this, ++id));
|
||||
addTask(new TaskMakingMoney(this, ++id));
|
||||
addTask(new TaskDisbandClan(this, ++id));
|
||||
|
||||
|
||||
|
||||
_doScoreboard = true;
|
||||
_ghostMode = true;
|
||||
_startOnJoin = true;
|
||||
_goldReward = 30000;
|
||||
|
||||
_technicalName = "GettingStartedTutorial";
|
||||
_displayName = "Getting Started";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFinished(final Player player)
|
||||
{
|
||||
UtilPlayer.message(player, C.cDGreenB + C.Strike + "---------------------------------------------");
|
||||
UtilPlayer.message(player, C.cYellowB + "CONGRATULATIONS");
|
||||
UtilPlayer.message(player, " ");
|
||||
UtilPlayer.message(player, C.cWhite + "You have completed the Clans basic tutorial and have been awarded " + C.cAqua + "30,000 Gold");
|
||||
UtilPlayer.message(player, C.cWhite + "You can now begin your adventure, but do take a moment to read the signs around spawn for more information!");
|
||||
UtilPlayer.message(player, C.cDGreenB + C.Strike + "---------------------------------------------");
|
||||
|
||||
player.resetPlayerTime();
|
||||
player.teleport(Spawn.getEastSpawn());
|
||||
}
|
||||
|
||||
@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 play with you, build a base, and wage war against others! "
|
||||
+ "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)
|
||||
{
|
||||
if (!event.getType().equals(UpdateType.SEC))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (Player player : UtilServer.getPlayers())
|
||||
{
|
||||
if (isInTutorial(player))
|
||||
{
|
||||
for (Player other : UtilServer.getPlayers())
|
||||
{
|
||||
other.hidePlayer(player.getPlayer());
|
||||
player.hidePlayer(other);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,404 +0,0 @@
|
||||
package mineplex.game.clans.tutorials.types;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import mineplex.core.common.util.Callback;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilItem;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.common.util.UtilItem.ItemCategory;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.task.TaskManager;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.game.clans.clans.ClanRole;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
import mineplex.game.clans.clans.event.ClanCreatedEvent;
|
||||
import mineplex.game.clans.clans.event.ClanDisbandedEvent;
|
||||
import mineplex.game.clans.clans.event.ClanJoinEvent;
|
||||
import mineplex.game.clans.clans.event.ClanSetHomeEvent;
|
||||
import mineplex.game.clans.clans.event.ClansCommandExecutedEvent;
|
||||
import mineplex.game.clans.clans.event.ClansPlayerBuyItemEvent;
|
||||
import mineplex.game.clans.clans.event.ClansPlayerSellItemEvent;
|
||||
import mineplex.game.clans.clans.event.ClansShopAddButtonEvent;
|
||||
import mineplex.game.clans.clans.event.PlayerEnterTerritoryEvent;
|
||||
import mineplex.game.clans.economy.GoldManager;
|
||||
import mineplex.game.clans.spawn.Spawn;
|
||||
import mineplex.game.clans.tutorials.Tutorial;
|
||||
import mineplex.game.clans.tutorials.TutorialClient;
|
||||
import mineplex.game.clans.tutorials.TutorialManager;
|
||||
import mineplex.minecraft.game.classcombat.Class.ClientClass;
|
||||
import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent;
|
||||
|
||||
public class TutorialGettingStarted extends Tutorial
|
||||
{
|
||||
public TutorialGettingStarted(final TutorialManager manager, final ClansManager clansManager, final DonationManager donationManager, final GoldManager goldManager, final TaskManager taskManager)
|
||||
{
|
||||
super(goldManager, taskManager, clansManager, donationManager, manager);
|
||||
|
||||
addTask(1, "Welcome",
|
||||
"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 {30,000 Gold}");
|
||||
|
||||
addTask(2, "Create a clan",
|
||||
"Before beginning, use the {/c create <ClanName>} command to start up your own Clan!"
|
||||
+ "Alternatively, you can join a friend's Clan, if they have invited you, instead of making your own.");
|
||||
|
||||
addTask(3, "Viewing Clan Details",
|
||||
"Now you can view information about your Clan. "
|
||||
+ "To do this type {/c [Clan Name]}! "
|
||||
+ "You can also use any Clans name to get some information about them as well.");
|
||||
|
||||
addTask(4, "Leave Spawn Islands",
|
||||
"Now you can leave the Spawn Island. "
|
||||
+ "Don't worry, you won't get hurt from the fall! "
|
||||
+ "Once you end the tutorial, PvP will be enabled down there, so be careful!");
|
||||
|
||||
addTask(5, "Go To The Wilderness",
|
||||
"Use your Map (Slot 9) to help find your way to the Wilderness. "
|
||||
+ "The Wilderness is anywhere that is not colored on the Map. "
|
||||
+ "If you don't have a map, you can get one at any time by typing {/map}. "
|
||||
+ "You can zoom in/out by Left and Right Clicking!");
|
||||
|
||||
addTask(6, "Claim some Territory",
|
||||
"Clans can claim 16x16 areas of Territory! "
|
||||
+ "Once claimed, only your Clan can break/place blocks here. "
|
||||
+ "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}! ",
|
||||
|
||||
"Good job! We won't actually claim this Territory yet!");
|
||||
|
||||
addTask(7, "Set Clan Home",
|
||||
"You are now ready to set a Clan Home."
|
||||
+ "To do this, use the {/c sethome} command.");
|
||||
|
||||
addTask(8, "Explore the Shops",
|
||||
"You can buy all sorts of things at the Shops! "
|
||||
+ "You can also sell things to the Villagers for Gold! "
|
||||
+ "Look at your Map and take notice of where the Shops is. "
|
||||
+ "You can also transfer {1,000 Gems} into {32,000 Clans Gold} each day.");
|
||||
|
||||
addTask(9, "Equip a Class",
|
||||
"Find the PvP Gear shop, and Right-Click the Villager. "
|
||||
+ "Purchase Iron Armor from the PvP Shop. (FREE) "
|
||||
+ "Then put on your Armor to equip a Champions Class. ");
|
||||
|
||||
addTask(10, "Use a Class Ability",
|
||||
"Now that you have Equipped a Class, you can start using Abilities. "
|
||||
+ "Purchase a Sword from the PvP Shop. (FREE) "
|
||||
+ "Right-Click with your Sword to use your Sword Ability!");
|
||||
|
||||
addTask(11, "Class Customization",
|
||||
"To customize your Class, Right-Click an Enchantment Table! "
|
||||
+ "There should be one nearby in the Shops!"
|
||||
+ "Find it, and try customizing your Class! ");
|
||||
|
||||
addTask(12, "Making Money (Farming)",
|
||||
"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}.");
|
||||
|
||||
addTask(13, "Disband your Clan",
|
||||
"Finally, let's disband your Clan to end the Tutorial. "
|
||||
+ "Simply type {/c disband} to do this. "
|
||||
+ "This will delete your Clan, and you'll be able to create or join a new one!");
|
||||
|
||||
_doScoreboard = true;
|
||||
_ghostMode = true;
|
||||
_startOnJoin = true;
|
||||
_goldReward = 30000;
|
||||
|
||||
_uniqueId = "GettingStartedTutorial";
|
||||
_friendlyName = "Getting Started";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFinished(final Player player)
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Tutorials", "You are now ready to play, welcome to the game."));
|
||||
player.resetPlayerTime();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void button(ClansShopAddButtonEvent event)
|
||||
{
|
||||
if (get(event.getPlayer()).hasFinishedTask(getTask("Explore the Shops")) && !get(event.getPlayer()).hasFinishedTask(getTask("Equip a Class")))
|
||||
{
|
||||
if (!(UtilItem.isArmor(event.getMaterial()) && UtilItem.isIronProduct(event.getMaterial())))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_taskManager.hasCompletedTask(event.getPlayer(), "GettingStartedBought" + event.getMaterial().name()))
|
||||
{
|
||||
event.setBuyPrice(0);
|
||||
event.setSellPrice(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void swordbutton(ClansShopAddButtonEvent event)
|
||||
{
|
||||
if (get(event.getPlayer()).hasFinishedTask(getTask("Equip A Class")) && !get(event.getPlayer()).hasFinishedTask(getTask("Use a Class Ability")))
|
||||
{
|
||||
if (!(UtilItem.isSword(event.getMaterial())))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_taskManager.hasCompletedTask(event.getPlayer(), "GettingStartedBoughtSword"))
|
||||
{
|
||||
event.setBuyPrice(0);
|
||||
event.setSellPrice(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void buy(final ClansPlayerBuyItemEvent event)
|
||||
{
|
||||
if (get(event.getPlayer()).hasFinishedTask(getTask("Explore the Shops")) && !get(event.getPlayer()).hasFinishedTask(getTask("Equip a Class")))
|
||||
{
|
||||
if (!(UtilItem.isArmor(event.getItem().getType()) && UtilItem.isIronProduct(event.getItem().getType())))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_taskManager.completedTask(new Callback<Boolean>(){
|
||||
@Override
|
||||
public void run(Boolean data)
|
||||
{
|
||||
}
|
||||
}, event.getPlayer(), "GettingStartedBought" + event.getItem().getType().name());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void buysword(final ClansPlayerBuyItemEvent event)
|
||||
{
|
||||
if (get(event.getPlayer()).hasFinishedTask(getTask("Equip A Class")) && !get(event.getPlayer()).hasFinishedTask(getTask("Use a Class Ability")))
|
||||
{
|
||||
if (UtilItem.isSword(event.getItem().getType()))
|
||||
{
|
||||
_taskManager.completedTask(new Callback<Boolean>() {
|
||||
@Override
|
||||
public void run(Boolean data)
|
||||
{
|
||||
}
|
||||
}, event.getPlayer(), "GettingStartedBoughtSword");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void sell(ClansPlayerSellItemEvent event)
|
||||
{
|
||||
if (get(event.getPlayer()).hasFinishedTask(getTask("Class Customization")) && !get(event.getPlayer()).hasFinishedTask(getTask("Making Money (Farming)")))
|
||||
{
|
||||
finishTask(event.getPlayer(), "Making Money (Farming)");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBegin(final Player player)
|
||||
{
|
||||
UtilPlayer.message(player, F.main("Tutorials", "Welcome to the " + F.elem("Getting Started Tutorial!")));
|
||||
|
||||
UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(_clansManager.getPlugin(), new Runnable() {
|
||||
public void run()
|
||||
{
|
||||
finishTask(player, "Welcome");
|
||||
|
||||
UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(_clansManager.getPlugin(), new Runnable() {
|
||||
public void run()
|
||||
{
|
||||
if (_clansManager.isInClan(player) && _clansManager.getClan(player).getClansPlayerFromName(player.getName()).getRole().has(ClanRole.ADMIN))
|
||||
{
|
||||
finishTask(player, "Create a clan");
|
||||
}
|
||||
}
|
||||
}, 20L);
|
||||
}
|
||||
}, 80L);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onClanCreated(ClanCreatedEvent event)
|
||||
{
|
||||
if (event.getFounder() == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (isInTutorial(event.getFounder()) && get(event.getFounder()).hasFinishedTask(getTask("Welcome")) && !get(event.getFounder()).hasFinishedTask(getTask("Create a clan")))
|
||||
{
|
||||
finishTask(event.getFounder(), "Create a clan");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onClanJoined(ClanJoinEvent event)
|
||||
{
|
||||
if (event.getPlayer() == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (isInTutorial(event.getPlayer()) && get(event.getPlayer()).hasFinishedTask(getTask("Welcome")) && !get(event.getPlayer()).hasFinishedTask(getTask("Create a clan")))
|
||||
{
|
||||
finishTask(event.getPlayer(), "Create a clan");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void handlePlayerChat(AsyncPlayerChatEvent event)
|
||||
{
|
||||
for (TutorialClient player : _inTutorial.values())
|
||||
{
|
||||
if (event.getPlayer().equals(player.getPlayer()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
continue;
|
||||
}
|
||||
|
||||
event.getRecipients().remove(player.getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onClansCommand(ClansCommandExecutedEvent event)
|
||||
{
|
||||
if (event.getCommand().equals("info"))
|
||||
{
|
||||
if (isInTutorial(event.getPlayer()) && get(event.getPlayer()).hasFinishedTask(getTask("Create a clan")) && !get(event.getPlayer()).hasFinishedTask(getTask("Viewing Clan Details")))
|
||||
{
|
||||
finishTask(event.getPlayer(), "Viewing Clan Details");
|
||||
}
|
||||
}
|
||||
else if (event.getCommand().equals("claim"))
|
||||
{
|
||||
if (isInTutorial(event.getPlayer()) && get(event.getPlayer()).hasFinishedTask(getTask("Go To The Wilderness")) && !get(event.getPlayer()).hasFinishedTask(getTask("Claiming Territory")))
|
||||
{
|
||||
finishTask(event.getPlayer(), "Claim some Territory");
|
||||
event.getPlayer().teleport(Spawn.getNorthTown());
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onSethome(ClanSetHomeEvent event)
|
||||
{
|
||||
if (isInTutorial(event.getPlayer()) && get(event.getPlayer()).hasFinishedTask(getTask("Claim some Territory")) && !get(event.getPlayer()).hasFinishedTask(getTask("Set Clan Home")))
|
||||
{
|
||||
finishTask(event.getPlayer(), "Set Clan Home");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onTerritory(final PlayerEnterTerritoryEvent event)
|
||||
{
|
||||
final Player player = event.getPlayer();
|
||||
final String newTerritory = event.getNewTerritory();
|
||||
|
||||
if (isInTutorial(player) && newTerritory.contains("Spawn") && get(player).hasFinishedTask(getTask("Viewing Clan Details")) && !get(player).hasFinishedTask(getTask("Leave Spawn Islands")))
|
||||
{
|
||||
finishTask(player, "Leave Spawn Islands");
|
||||
}
|
||||
else if (isInTutorial(player) && newTerritory.contains("Wilderness") && get(player).hasFinishedTask(getTask("Leave Spawn Islands")) && !get(player).hasFinishedTask(getTask("Go To The Wilderness")))
|
||||
{
|
||||
finishTask(player, "Go To The Wilderness");
|
||||
}
|
||||
else if (isInTutorial(player) && newTerritory.contains("Shops") && get(player).hasFinishedTask(getTask("Claim some Territory")) && !get(player).hasFinishedTask(getTask("Explore the Shops")))
|
||||
{
|
||||
finishTask(player, "Explore the Shops");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onSkillTriggered(final SkillTriggerEvent event)
|
||||
{
|
||||
final Player player = event.GetPlayer();
|
||||
|
||||
if (isInTutorial(player) && get(player).hasFinishedTask(getTask("Equip a Class")) && !get(player).hasFinishedTask(getTask("Use a Class Ability")))
|
||||
{
|
||||
finishTask(player, "Use a Class Ability");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onUpdated(final UpdateEvent event)
|
||||
{
|
||||
for (Player player : UtilServer.getPlayers())
|
||||
{
|
||||
if (!isInTutorial(player))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
ClientClass client = _clansManager.getClassManager().Get(player);
|
||||
|
||||
if (client == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (client.GetGameClass() == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (isInTutorial(player) && get(player).hasFinishedTask(getTask("Explore the Shops")) && !get(player).hasFinishedTask(getTask("Equip a Class")))
|
||||
{
|
||||
finishTask(player, "Use a Class Ability");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onUpdate(final UpdateEvent event)
|
||||
{
|
||||
if (!event.getType().equals(UpdateType.SEC))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (final TutorialClient client : _inTutorial.values())
|
||||
{
|
||||
if (isInTutorial(client.getPlayer()))
|
||||
{
|
||||
client.getPlayer().setPlayerTime(6000, false);
|
||||
|
||||
if (get(client.getPlayer()).hasFinishedTask(getTask("Equip a Class")) && !get(client.getPlayer()).hasFinishedTask(getTask("Class Customization")))
|
||||
{
|
||||
final ClientClass clientclass = _clansManager.getClassManager().Get(client.getPlayer());
|
||||
|
||||
if (clientclass != null && clientclass.GetSavingCustomBuild() != null)
|
||||
{
|
||||
finishTask(client.getPlayer(), "Class Customization");
|
||||
client.getPlayer().getInventory().addItem(new ItemStack(Material.CARROT_ITEM, 5));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onDeletedClan(final ClanDisbandedEvent event)
|
||||
{
|
||||
if (isInTutorial(event.getDisbander()) && get(event.getDisbander()).hasFinishedTask(getTask("Making Money (Farming)")) && !get(event.getDisbander()).hasFinishedTask(getTask("Disband your Clan")))
|
||||
{
|
||||
finishTask(event.getDisbander(), "Disband your Clan");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -3,9 +3,12 @@ package mineplex.game.clans.world;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
@ -38,7 +41,23 @@ public class WorldManager extends MiniPlugin
|
||||
for (Entity ent : world.getEntities())
|
||||
{
|
||||
if (ent.getCustomName() == null)
|
||||
_ents.get(ent.getType()).add(ent);
|
||||
{
|
||||
boolean cull = true;
|
||||
|
||||
for (Player player : world.getPlayers())
|
||||
{
|
||||
if (player.getLocation().distance(ent.getLocation()) <= 64)
|
||||
{
|
||||
cull = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (cull)
|
||||
{
|
||||
_ents.get(ent.getType()).add(ent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (EntityType type : _ents.keySet())
|
||||
|
@ -17,9 +17,11 @@ import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.NautHashMap;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.donation.Donor;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
||||
import mineplex.minecraft.game.classcombat.Class.event.ClassEquipEvent;
|
||||
import mineplex.minecraft.game.classcombat.Class.repository.token.ClientClassToken;
|
||||
import mineplex.minecraft.game.classcombat.Class.repository.token.CustomBuildToken;
|
||||
import mineplex.minecraft.game.classcombat.Class.repository.token.SlotToken;
|
||||
@ -343,7 +345,16 @@ public class ClientClass
|
||||
}
|
||||
|
||||
ResetToDefaults(!skillsOnly, !skillsOnly);
|
||||
|
||||
|
||||
// Event
|
||||
ClassEquipEvent event = new ClassEquipEvent(this, customBuild);
|
||||
UtilServer.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
if (event.isCancelled())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (notify)
|
||||
{
|
||||
ListSkills(_client.GetPlayer());
|
||||
|
@ -5,8 +5,10 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import mineplex.core.common.util.Callback;
|
||||
import mineplex.core.common.util.UtilGear;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.gadget.types.GadgetType;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import mineplex.minecraft.game.classcombat.Class.event.ClassEquipEvent;
|
||||
import mineplex.minecraft.game.classcombat.Class.repository.token.CustomBuildToken;
|
||||
import mineplex.minecraft.game.classcombat.Skill.ISkill;
|
||||
|
||||
|
@ -0,0 +1,57 @@
|
||||
package mineplex.minecraft.game.classcombat.Class.event;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import mineplex.minecraft.game.classcombat.Class.ClientClass;
|
||||
import mineplex.minecraft.game.classcombat.Class.PvpClass;
|
||||
import mineplex.minecraft.game.classcombat.Class.repository.token.CustomBuildToken;
|
||||
|
||||
public class ClassEquipEvent extends Event
|
||||
{
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
|
||||
private ClientClass _client;
|
||||
|
||||
private CustomBuildToken _build;
|
||||
|
||||
private boolean _cancelled;
|
||||
|
||||
public ClassEquipEvent(ClientClass client, CustomBuildToken build)
|
||||
{
|
||||
_client = client;
|
||||
_build = build;
|
||||
}
|
||||
|
||||
public ClientClass getPlayer()
|
||||
{
|
||||
return _client;
|
||||
}
|
||||
|
||||
public CustomBuildToken getBuild()
|
||||
{
|
||||
return _build;
|
||||
}
|
||||
|
||||
public void setCancelled(boolean cancelled)
|
||||
{
|
||||
_cancelled = cancelled;
|
||||
}
|
||||
|
||||
public boolean isCancelled()
|
||||
{
|
||||
return _cancelled;
|
||||
}
|
||||
|
||||
public HandlerList getHandlers()
|
||||
{
|
||||
return handlers;
|
||||
}
|
||||
|
||||
public static HandlerList getHandlerList()
|
||||
{
|
||||
return handlers;
|
||||
}
|
||||
|
||||
}
|
@ -172,6 +172,7 @@ public class BlockToss extends SkillCharge implements IThrown
|
||||
|
||||
//Block to Item
|
||||
FallingBlock block = player.getWorld().spawnFallingBlock(player.getEyeLocation(), event.getClickedBlock().getType(), event.getClickedBlock().getData());
|
||||
block.setDropItem(false);
|
||||
|
||||
//Action
|
||||
player.eject();
|
||||
@ -280,6 +281,7 @@ public class BlockToss extends SkillCharge implements IThrown
|
||||
FallingBlock thrown = (FallingBlock) data.GetThrown();
|
||||
|
||||
FallingBlock newThrown = data.GetThrown().getWorld().spawnFallingBlock(data.GetThrown().getLocation(), thrown.getMaterial(), thrown.getBlockData());
|
||||
newThrown.setDropItem(false);
|
||||
|
||||
//Remove Old
|
||||
_falling.remove(thrown);
|
||||
@ -385,17 +387,17 @@ public class BlockToss extends SkillCharge implements IThrown
|
||||
|
||||
if (
|
||||
id != 1 &&
|
||||
id != 2 &&
|
||||
id != 3 &&
|
||||
id != 4 &&
|
||||
id != 12 &&
|
||||
id != 13 &&
|
||||
id != 80)
|
||||
id != 2 &&
|
||||
id != 3 &&
|
||||
id != 4 &&
|
||||
id != 12 &&
|
||||
id != 13 &&
|
||||
id != 80)
|
||||
return;
|
||||
|
||||
for (FallingBlock block : _falling.keySet())
|
||||
if (UtilMath.offset(event.getEntity().getLocation(), block.getLocation()) < 1)
|
||||
event.setCancelled(true);
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -374,7 +374,7 @@ public class ConditionEffect implements Listener
|
||||
for (LivingEntity ent : Manager.GetActiveConditions().keySet())
|
||||
{
|
||||
Condition condition = Manager.GetActiveCondition(ent, ConditionType.POISON_SHOCK);
|
||||
if (condition == null)
|
||||
if (condition == null || condition.GetSource() == null)
|
||||
continue;
|
||||
|
||||
Manager.getDamagerManager().NewDamageEvent(ent, condition.GetSource(), null,
|
||||
|
Loading…
Reference in New Issue
Block a user