Merge pull request #108 in MIN/mineplex from develop to master
* commit '7a72762c78ff56b3390fef809e3f57f51e755d14': (81 commits) Update MOTD Updating Holiday Achievements Updating Stats GUI Achievements.... changing Category adding PM message. fixing Kit NPEs Fixing ending Stats. Wrong iterator! Update game display Adjust GUI, fix beta button Yo shaun debug this m8 ty Fixing Gems adjusting some timings Fixing Tutorial Minion fixing last commit adding Tutorial notification Adding Tutorial notification nuke delay and Stats Fixing some nuke stuff, Giant noises only for own Team and "Giant under attack message", spelling fixes ...
This commit is contained in:
commit
893fea49ab
@ -56,7 +56,7 @@ public class MotdManager implements Listener, Runnable
|
|||||||
//String motdLine = "§f§l◄ §c§lMaintenance§f§l ►";
|
//String motdLine = "§f§l◄ §c§lMaintenance§f§l ►";
|
||||||
//String motdLine = "§f§l◄ §a§lCarl the Creeper§f§l ►";
|
//String motdLine = "§f§l◄ §a§lCarl the Creeper§f§l ►";
|
||||||
// String motdLine = " §2§l§n M O N S T E R M A Z E B E T A §f";
|
// String motdLine = " §2§l§n M O N S T E R M A Z E B E T A §f";
|
||||||
String motdLine = " §f❄ §2§lWinter Update §f❄ §2§lSnow Fight §f❄";
|
String motdLine = " §f❄ §2§lNew Game §f❄ §2§lType Wars §f❄";
|
||||||
//String motdLine = " §d§lRank Sale §a§l40% Off");
|
//String motdLine = " §d§lRank Sale §a§l40% Off");
|
||||||
//String motdLine = " §f§l◄§c§lMAINTENANCE§f§l►");
|
//String motdLine = " §f§l◄§c§lMAINTENANCE§f§l►");
|
||||||
|
|
||||||
|
@ -23,6 +23,13 @@ public enum Achievement
|
|||||||
new int[]{200},
|
new int[]{200},
|
||||||
AchievementCategory.HOLIDAY),
|
AchievementCategory.HOLIDAY),
|
||||||
|
|
||||||
|
GLOBAL_PRESENT_HOARDER_2015("2015 Present Hoarder", 4000,
|
||||||
|
new String[]{"Global.Christmas Presents 2015"},
|
||||||
|
new String[]{"Open 200 Christmas Presents,",
|
||||||
|
"during Christmas 2015!"},
|
||||||
|
new int[]{200},
|
||||||
|
AchievementCategory.HOLIDAY),
|
||||||
|
|
||||||
//Bridges
|
//Bridges
|
||||||
BRIDGES_WINS("Bridge Champion", 600,
|
BRIDGES_WINS("Bridge Champion", 600,
|
||||||
new String[]{"The Bridges.Wins"},
|
new String[]{"The Bridges.Wins"},
|
||||||
@ -811,9 +818,43 @@ public enum Achievement
|
|||||||
new String[]{"Gladiators.SwiftKill"},
|
new String[]{"Gladiators.SwiftKill"},
|
||||||
new String[]{"Earn 15 first bloods", "in Gladiators"},
|
new String[]{"Earn 15 first bloods", "in Gladiators"},
|
||||||
new int[]{15},
|
new int[]{15},
|
||||||
AchievementCategory.GLADIATORS)
|
AchievementCategory.GLADIATORS),
|
||||||
|
|
||||||
;
|
TYPE_WARS_SPEED_DEMON("Speed Demon", 1000,
|
||||||
|
new String[]{"Type Wars.Demon"},
|
||||||
|
new String[]{"Kill 5 Mobs in 8 seconds", "by typing"},
|
||||||
|
new int[]{1},
|
||||||
|
AchievementCategory.TYPE_WARS),
|
||||||
|
|
||||||
|
TYPE_WARS_PERFECTIONIST("Perfectionist", 1200,
|
||||||
|
new String[]{"Type Wars.Perfectionist"},
|
||||||
|
new String[]{"Go an entire game", "without mistyping"},
|
||||||
|
new int[]{1},
|
||||||
|
AchievementCategory.TYPE_WARS),
|
||||||
|
|
||||||
|
TYPE_WARS_WAIT_FOR_IT("Wait for it", 1200,
|
||||||
|
new String[]{"Type Wars.Nuke"},
|
||||||
|
new String[]{"Kill 30 or more Mobs", "with a Nuke Spell"},
|
||||||
|
new int[]{1},
|
||||||
|
AchievementCategory.TYPE_WARS),
|
||||||
|
|
||||||
|
TYPE_WARS_HOARDER("Hoarder", 1000,
|
||||||
|
new String[]{"Type Wars.Hoarder"},
|
||||||
|
new String[]{"Summon 50 Mobs in one game"},
|
||||||
|
new int[]{1},
|
||||||
|
AchievementCategory.TYPE_WARS),
|
||||||
|
|
||||||
|
TYPE_WARS_DUMBLEDONT("Dumbledont", 800,
|
||||||
|
new String[]{"Type Wars.Dumbledont"},
|
||||||
|
new String[]{"Win without using any spells"},
|
||||||
|
new int[]{1},
|
||||||
|
AchievementCategory.TYPE_WARS),
|
||||||
|
|
||||||
|
TYPE_WARS_WINNS("The True Typewriter", 2000,
|
||||||
|
new String[]{"Type Wars.Wins"},
|
||||||
|
new String[]{"Win 30 Games"},
|
||||||
|
new int[]{30},
|
||||||
|
AchievementCategory.TYPE_WARS);
|
||||||
|
|
||||||
private String _name;
|
private String _name;
|
||||||
private String[] _desc;
|
private String[] _desc;
|
||||||
|
@ -23,7 +23,7 @@ public enum AchievementCategory
|
|||||||
|
|
||||||
HOLIDAY("Holiday Achievements", null,
|
HOLIDAY("Holiday Achievements", null,
|
||||||
new StatDisplay[] {},
|
new StatDisplay[] {},
|
||||||
Material.PUMPKIN_PIE, 0, GameCategory.HOLIDAY, "None"),
|
Material.CAKE, 0, GameCategory.HOLIDAY, "None"),
|
||||||
|
|
||||||
BRIDGES("The Bridges", null,
|
BRIDGES("The Bridges", null,
|
||||||
new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED },
|
new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED },
|
||||||
@ -150,12 +150,15 @@ public enum AchievementCategory
|
|||||||
MONSTER_MAZE("Monster Maze", null,
|
MONSTER_MAZE("Monster Maze", null,
|
||||||
new StatDisplay[] {StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED},
|
new StatDisplay[] {StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED},
|
||||||
Material.ROTTEN_FLESH, 0, GameCategory.ARCADE, "SoonTM"),
|
Material.ROTTEN_FLESH, 0, GameCategory.ARCADE, "SoonTM"),
|
||||||
|
|
||||||
GLADIATORS("Gladiators", null,
|
GLADIATORS("Gladiators", null,
|
||||||
new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED },
|
new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED },
|
||||||
Material.IRON_SWORD, 0, GameCategory.ARCADE, null)
|
Material.IRON_SWORD, 0, GameCategory.ARCADE, null),
|
||||||
|
|
||||||
;
|
TYPE_WARS("Type Wars", null,
|
||||||
|
new StatDisplay[] {StatDisplay.WINS, StatDisplay.GAMES_PLAYED, new StatDisplay("Minions killed", "MinionKills"), new StatDisplay("Words Per Minute", false, true, "MinionKills", "TimeInGame"), StatDisplay.GEMS_EARNED},
|
||||||
|
Material.FEATHER, 0, GameCategory.CLASSICS, null);
|
||||||
|
|
||||||
|
|
||||||
private String _name;
|
private String _name;
|
||||||
private String[] _statsToPull;
|
private String[] _statsToPull;
|
||||||
@ -243,7 +246,7 @@ public enum AchievementCategory
|
|||||||
if (!clientManager.Get(player).GetRank().has(Rank.MODERATOR) && !player.equals(target) && (displayName.contains("Losses") || displayName.contains("Kills") || displayName.contains("Deaths") || displayName.equals("Time In Game") || displayName.equals("Games Played")))
|
if (!clientManager.Get(player).GetRank().has(Rank.MODERATOR) && !player.equals(target) && (displayName.contains("Losses") || displayName.contains("Kills") || displayName.contains("Deaths") || displayName.equals("Time In Game") || displayName.equals("Games Played")))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
int statNumber = 0;
|
double statNumber = 0;
|
||||||
|
|
||||||
|
|
||||||
// This is so we could load stats from other games
|
// This is so we could load stats from other games
|
||||||
@ -256,15 +259,49 @@ public enum AchievementCategory
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (String statToPull : _statsToPull)
|
for (String statToPull : _statsToPull)
|
||||||
|
{
|
||||||
for (String statName : _statDisplays[i].getStats())
|
for (String statName : _statDisplays[i].getStats())
|
||||||
statNumber += stats.getStat(statToPull + "." + statName);
|
{
|
||||||
|
if(_statDisplays[i].isDivideStats())
|
||||||
|
{
|
||||||
|
if(statNumber == 0)
|
||||||
|
{
|
||||||
|
statNumber = stats.getStat(statToPull + "." + statName);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
double stat = stats.getStat(statToPull + "." + statName);
|
||||||
|
if(stat == 0)
|
||||||
|
statNumber = statNumber / 1;
|
||||||
|
else
|
||||||
|
statNumber = (double) statNumber / stat;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
statNumber += stats.getStat(statToPull + "." + statName);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String statString = C.cWhite + statNumber;
|
String statString = C.cWhite + Math.round(statNumber);
|
||||||
|
|
||||||
|
// doubles
|
||||||
|
// Special display for Words per Minute
|
||||||
|
if (displayName.equalsIgnoreCase("Words Per Minute"))
|
||||||
|
{
|
||||||
|
statString = C.cWhite + (double) statNumber;
|
||||||
|
if(statString.length() > 7)
|
||||||
|
statString = statString.substring(0, 7);
|
||||||
|
|
||||||
|
lore.add(C.cYellow + displayName + ": " + statString);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ints
|
||||||
// Need to display special for time
|
// Need to display special for time
|
||||||
if (displayName.equalsIgnoreCase("Time In Game"))
|
if (displayName.equalsIgnoreCase("Time In Game"))
|
||||||
statString = C.cWhite + UtilTime.convertString(statNumber * 1000L, 0, UtilTime.TimeUnit.FIT);
|
statString = C.cWhite + UtilTime.convertString(Math.round(statNumber) * 1000L, 0, UtilTime.TimeUnit.FIT);
|
||||||
|
|
||||||
|
|
||||||
lore.add(C.cYellow + displayName + ": " + statString);
|
lore.add(C.cYellow + displayName + ": " + statString);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ public class StatDisplay
|
|||||||
private String[] _stats;
|
private String[] _stats;
|
||||||
private boolean _fullStat;
|
private boolean _fullStat;
|
||||||
private boolean _justDisplayName;
|
private boolean _justDisplayName;
|
||||||
|
private boolean _divideStats;
|
||||||
|
|
||||||
public StatDisplay(String stat)
|
public StatDisplay(String stat)
|
||||||
{
|
{
|
||||||
@ -25,19 +26,26 @@ public class StatDisplay
|
|||||||
_displayName = stat;
|
_displayName = stat;
|
||||||
_stats = new String[] { stat };
|
_stats = new String[] { stat };
|
||||||
_fullStat = false;
|
_fullStat = false;
|
||||||
|
_divideStats = false;
|
||||||
_justDisplayName = justDisplayName;
|
_justDisplayName = justDisplayName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public StatDisplay(String displayName, boolean divideStats, String... stats)
|
||||||
|
{
|
||||||
|
this(displayName, false, divideStats, stats);
|
||||||
|
}
|
||||||
|
|
||||||
public StatDisplay(String displayName, String... stats)
|
public StatDisplay(String displayName, String... stats)
|
||||||
{
|
{
|
||||||
this(displayName, false, stats);
|
this(displayName, false, false, stats);
|
||||||
}
|
}
|
||||||
|
|
||||||
public StatDisplay(String displayName, boolean fullStat, String... stats)
|
public StatDisplay(String displayName, boolean fullStat, boolean divideStats, String... stats)
|
||||||
{
|
{
|
||||||
_displayName = displayName;
|
_displayName = displayName;
|
||||||
_stats = stats;
|
_stats = stats;
|
||||||
_fullStat = fullStat;
|
_fullStat = fullStat;
|
||||||
|
_divideStats = divideStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDisplayName()
|
public String getDisplayName()
|
||||||
@ -59,6 +67,11 @@ public class StatDisplay
|
|||||||
{
|
{
|
||||||
return _fullStat;
|
return _fullStat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isDivideStats()
|
||||||
|
{
|
||||||
|
return _divideStats;
|
||||||
|
}
|
||||||
|
|
||||||
public static StatDisplay fromGame(String name, GameDisplay gameDisplay, String... stats)
|
public static StatDisplay fromGame(String name, GameDisplay gameDisplay, String... stats)
|
||||||
{
|
{
|
||||||
|
@ -49,7 +49,7 @@ public class AchievementMainPage extends ShopPageBase<AchievementManager, Achiev
|
|||||||
"XXXXOXXXO",
|
"XXXXOXXXO",
|
||||||
"OXOXOXOXO",
|
"OXOXOXOXO",
|
||||||
"OXOXOXOXO",
|
"OXOXOXOXO",
|
||||||
"XXOXOXOXX").getItemSlots();
|
"XOXOXOXOX").getItemSlots();
|
||||||
int listSlot = 0;
|
int listSlot = 0;
|
||||||
|
|
||||||
for (AchievementCategory category : AchievementCategory.values())
|
for (AchievementCategory category : AchievementCategory.values())
|
||||||
|
@ -73,30 +73,20 @@ public class CustomDataRepository extends RepositoryBase
|
|||||||
|
|
||||||
for (CustomData cd : data.getDataMap().keySet())
|
for (CustomData cd : data.getDataMap().keySet())
|
||||||
{
|
{
|
||||||
|
if (executeUpdate(
|
||||||
executeInsert(UPDATE_DATA, new ResultSetCallable()
|
UPDATE_DATA,
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void processResultSet(ResultSet resultSet) throws SQLException
|
|
||||||
{
|
|
||||||
|
|
||||||
if (!resultSet.isBeforeFirst())
|
|
||||||
{
|
|
||||||
|
|
||||||
// Not already in the DB
|
|
||||||
executeUpdate(
|
|
||||||
INSERT_DATA,
|
|
||||||
new ColumnInt("account", accountId),
|
|
||||||
new ColumnInt("customData", cd.getId()),
|
|
||||||
new ColumnInt("data", data.getDataMap().get(cd))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
new ColumnInt("data", data.getDataMap().get(cd)),
|
new ColumnInt("data", data.getDataMap().get(cd)),
|
||||||
new ColumnInt("account", accountId),
|
new ColumnInt("account", accountId),
|
||||||
new ColumnInt("customData", cd.getId())
|
new ColumnInt("customData", cd.getId())) < 1)
|
||||||
);
|
{
|
||||||
|
// Not already in the DB
|
||||||
|
executeUpdate(
|
||||||
|
INSERT_DATA,
|
||||||
|
new ColumnInt("account", accountId),
|
||||||
|
new ColumnInt("customData", cd.getId()),
|
||||||
|
new ColumnInt("data", data.getDataMap().get(cd))
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,12 +67,10 @@ public enum GameDisplay
|
|||||||
MonsterLeague("Monster League", Material.MINECART, (byte)0, GameCategory.ARCADE, 56),
|
MonsterLeague("Monster League", Material.MINECART, (byte)0, GameCategory.ARCADE, 56),
|
||||||
|
|
||||||
Lobbers("Bomb Lobbers", Material.FIREBALL, (byte) 0, GameCategory.ARCADE, 54),
|
Lobbers("Bomb Lobbers", Material.FIREBALL, (byte) 0, GameCategory.ARCADE, 54),
|
||||||
|
|
||||||
ChampionsCTF("Champions CTF", "Champions", Material.BANNER, DyeColor.RED.getDyeData(), GameCategory.CHAMPIONS, 56),
|
ChampionsCTF("Champions CTF", "Champions", Material.BANNER, DyeColor.RED.getDyeData(), GameCategory.CHAMPIONS, 56),
|
||||||
|
|
||||||
BouncyBalls("Bouncy Balls", Material.SLIME_BALL, (byte)0, GameCategory.ARCADE, 57),
|
BouncyBalls("Bouncy Balls", Material.SLIME_BALL, (byte)0, GameCategory.ARCADE, 57),
|
||||||
|
|
||||||
Gladiators("Gladiators", Material.IRON_SWORD, (byte)0, GameCategory.ARCADE, 58),
|
Gladiators("Gladiators", Material.IRON_SWORD, (byte)0, GameCategory.ARCADE, 58),
|
||||||
|
TypeWars("Type Wars", Material.NAME_TAG, (byte) 0, GameCategory.CLASSICS, 59),
|
||||||
|
|
||||||
Event("Mineplex Event", Material.CAKE, (byte)0, GameCategory.EVENT, 999);
|
Event("Mineplex Event", Material.CAKE, (byte)0, GameCategory.EVENT, 999);
|
||||||
|
|
||||||
|
@ -11,16 +11,17 @@ import java.util.Map;
|
|||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.DyeColor;
|
||||||
import org.bukkit.FireworkEffect;
|
import org.bukkit.FireworkEffect;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.inventory.ItemFlag;
|
import org.bukkit.inventory.ItemFlag;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.BannerMeta;
|
||||||
import org.bukkit.inventory.meta.FireworkEffectMeta;
|
import org.bukkit.inventory.meta.FireworkEffectMeta;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.bukkit.inventory.meta.LeatherArmorMeta;
|
import org.bukkit.inventory.meta.LeatherArmorMeta;
|
||||||
import org.bukkit.inventory.meta.SkullMeta;
|
import org.bukkit.inventory.meta.SkullMeta;
|
||||||
import org.bukkit.potion.Potion;
|
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
|
|
||||||
@ -254,6 +255,10 @@ public class ItemBuilder
|
|||||||
{
|
{
|
||||||
((FireworkEffectMeta) meta).setEffect(FireworkEffect.builder().withColor(_color).build());
|
((FireworkEffectMeta) meta).setEffect(FireworkEffect.builder().withColor(_color).build());
|
||||||
}
|
}
|
||||||
|
else if (meta instanceof BannerMeta)
|
||||||
|
{
|
||||||
|
((BannerMeta) meta).setBaseColor(DyeColor.getByColor(_color));
|
||||||
|
}
|
||||||
|
|
||||||
meta.addItemFlags(getItemFlags().toArray(new ItemFlag[0]));
|
meta.addItemFlags(getItemFlags().toArray(new ItemFlag[0]));
|
||||||
meta.spigot().setUnbreakable(isUnbreakable());
|
meta.spigot().setUnbreakable(isUnbreakable());
|
||||||
|
@ -224,6 +224,11 @@ public class MessageManager extends MiniClientPlugin<ClientMessage>
|
|||||||
UtilPlayer.message(from, C.cPurple + to.getName() + " is often AFK or minimized, due to plugin development.");
|
UtilPlayer.message(from, C.cPurple + to.getName() + " is often AFK or minimized, due to plugin development.");
|
||||||
UtilPlayer.message(from, C.cPurple + "Please be patient if he does not reply instantly.");
|
UtilPlayer.message(from, C.cPurple + "Please be patient if he does not reply instantly.");
|
||||||
}
|
}
|
||||||
|
if (to.getName().equals("xXVevzZXx"))
|
||||||
|
{
|
||||||
|
UtilPlayer.message(from, C.cPurple + to.getName() + " is often AFK or minimized, due to plugin development.");
|
||||||
|
UtilPlayer.message(from, C.cPurple + "Please be patient if she does not reply instantly.");
|
||||||
|
}
|
||||||
|
|
||||||
/*if(to.getName().equals("ishh"))
|
/*if(to.getName().equals("ishh"))
|
||||||
{
|
{
|
||||||
|
@ -13,7 +13,7 @@ public class TempRepository extends RepositoryBase
|
|||||||
|
|
||||||
public TempRepository(JavaPlugin plugin)
|
public TempRepository(JavaPlugin plugin)
|
||||||
{
|
{
|
||||||
super(plugin, DBPool.ACCOUNT);
|
super(plugin, DBPool.getAccount());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addGemBooster(String name, int amount)
|
public void addGemBooster(String name, int amount)
|
||||||
|
@ -23,7 +23,7 @@ public class PurchaseRepository extends RepositoryBase
|
|||||||
|
|
||||||
public PurchaseRepository(JavaPlugin plugin)
|
public PurchaseRepository(JavaPlugin plugin)
|
||||||
{
|
{
|
||||||
super(plugin, DBPool.ACCOUNT);
|
super(plugin, DBPool.getAccount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -87,6 +87,8 @@ public class ServerManager extends MiniPlugin
|
|||||||
private NautHashMap<String, ServerInfo> _serverInfoMap = new NautHashMap<String, ServerInfo>();
|
private NautHashMap<String, ServerInfo> _serverInfoMap = new NautHashMap<String, ServerInfo>();
|
||||||
private NautHashMap<String, Long> _serverUpdate = new NautHashMap<String, Long>();
|
private NautHashMap<String, Long> _serverUpdate = new NautHashMap<String, Long>();
|
||||||
private NautHashMap<Vector, String> _serverPortalLocations = new NautHashMap<Vector, String>();
|
private NautHashMap<Vector, String> _serverPortalLocations = new NautHashMap<Vector, String>();
|
||||||
|
|
||||||
|
private ClansServerShop _clansShop;
|
||||||
|
|
||||||
// Join Time for Free Players Timer
|
// Join Time for Free Players Timer
|
||||||
private NautHashMap<String, Long> _joinTime = new NautHashMap<String, Long>();
|
private NautHashMap<String, Long> _joinTime = new NautHashMap<String, Long>();
|
||||||
@ -121,7 +123,7 @@ public class ServerManager extends MiniPlugin
|
|||||||
//_domShop = new new QueueShop(_queueManager, clientManager, donationManager, "Dominate");
|
//_domShop = new new QueueShop(_queueManager, clientManager, donationManager, "Dominate");
|
||||||
|
|
||||||
// TODO: Find more appropriate place to initialize Clans server shop?
|
// TODO: Find more appropriate place to initialize Clans server shop?
|
||||||
new ClansServerShop(this, _clientManager, _donationManager);
|
_clansShop = new ClansServerShop(this, _clientManager, _donationManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOW)
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
@ -786,6 +788,11 @@ public class ServerManager extends MiniPlugin
|
|||||||
{
|
{
|
||||||
return _serverNpcShopMap.get("Dominate");
|
return _serverNpcShopMap.get("Dominate");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ServerNpcShop getCtfShop()
|
||||||
|
{
|
||||||
|
return _serverNpcShopMap.get("Capture the Flag");
|
||||||
|
}
|
||||||
|
|
||||||
public ServerNpcShop getBridgesShop()
|
public ServerNpcShop getBridgesShop()
|
||||||
{
|
{
|
||||||
@ -804,9 +811,9 @@ public class ServerManager extends MiniPlugin
|
|||||||
|
|
||||||
public ServerNpcShop getBetaShop()
|
public ServerNpcShop getBetaShop()
|
||||||
{
|
{
|
||||||
return _serverNpcShopMap.get("Beta Games");
|
return _serverNpcShopMap.get("Beta Monster Maze");
|
||||||
}
|
}
|
||||||
|
|
||||||
public ServerNpcShop getUHCShop()
|
public ServerNpcShop getUHCShop()
|
||||||
{
|
{
|
||||||
return _serverNpcShopMap.get("Ultra Hardcore");
|
return _serverNpcShopMap.get("Ultra Hardcore");
|
||||||
@ -822,6 +829,11 @@ public class ServerManager extends MiniPlugin
|
|||||||
return _serverNpcShopMap.get("Mineplex Player Servers");
|
return _serverNpcShopMap.get("Mineplex Player Servers");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ServerNpcShop getShop(String name)
|
||||||
|
{
|
||||||
|
return _serverNpcShopMap.get(name);
|
||||||
|
}
|
||||||
|
|
||||||
private Vector ParseVector(String vectorString)
|
private Vector ParseVector(String vectorString)
|
||||||
{
|
{
|
||||||
Vector vector = new Vector();
|
Vector vector = new Vector();
|
||||||
@ -882,4 +894,14 @@ public class ServerManager extends MiniPlugin
|
|||||||
{
|
{
|
||||||
return _serverNpcShopMap.get("Master Builders");
|
return _serverNpcShopMap.get("Master Builders");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ClansServerShop getClansShop()
|
||||||
|
{
|
||||||
|
return _clansShop;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ShopBase<ServerManager> getTypeWarsShop()
|
||||||
|
{
|
||||||
|
return _serverNpcShopMap.get("Type Wars");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Color;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@ -12,15 +13,18 @@ import mineplex.core.account.CoreClientManager;
|
|||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.donation.DonationManager;
|
import mineplex.core.donation.DonationManager;
|
||||||
import mineplex.core.itemstack.ItemBuilder;
|
import mineplex.core.itemstack.ItemBuilder;
|
||||||
import mineplex.core.itemstack.ItemStackFactory;
|
|
||||||
import mineplex.core.shop.page.ShopPageBase;
|
import mineplex.core.shop.page.ShopPageBase;
|
||||||
import mineplex.hub.server.ServerManager;
|
import mineplex.hub.server.ServerManager;
|
||||||
|
import mineplex.hub.server.ui.button.SelectBETAButton;
|
||||||
import mineplex.hub.server.ui.button.SelectBHButton;
|
import mineplex.hub.server.ui.button.SelectBHButton;
|
||||||
import mineplex.hub.server.ui.button.SelectBLDButton;
|
import mineplex.hub.server.ui.button.SelectBLDButton;
|
||||||
import mineplex.hub.server.ui.button.SelectBRButton;
|
import mineplex.hub.server.ui.button.SelectBRButton;
|
||||||
|
import mineplex.hub.server.ui.button.SelectCLANSButton;
|
||||||
import mineplex.hub.server.ui.button.SelectCSButton;
|
import mineplex.hub.server.ui.button.SelectCSButton;
|
||||||
|
import mineplex.hub.server.ui.button.SelectCTFButton;
|
||||||
import mineplex.hub.server.ui.button.SelectDMTButton;
|
import mineplex.hub.server.ui.button.SelectDMTButton;
|
||||||
import mineplex.hub.server.ui.button.SelectDOMButton;
|
import mineplex.hub.server.ui.button.SelectDOMButton;
|
||||||
|
import mineplex.hub.server.ui.button.SelectFEATButton;
|
||||||
import mineplex.hub.server.ui.button.SelectMINButton;
|
import mineplex.hub.server.ui.button.SelectMINButton;
|
||||||
import mineplex.hub.server.ui.button.SelectMSButton;
|
import mineplex.hub.server.ui.button.SelectMSButton;
|
||||||
import mineplex.hub.server.ui.button.SelectPLAYERButton;
|
import mineplex.hub.server.ui.button.SelectPLAYERButton;
|
||||||
@ -28,6 +32,7 @@ import mineplex.hub.server.ui.button.SelectSGButton;
|
|||||||
import mineplex.hub.server.ui.button.SelectSKYButton;
|
import mineplex.hub.server.ui.button.SelectSKYButton;
|
||||||
import mineplex.hub.server.ui.button.SelectSSMButton;
|
import mineplex.hub.server.ui.button.SelectSSMButton;
|
||||||
import mineplex.hub.server.ui.button.SelectTDMButton;
|
import mineplex.hub.server.ui.button.SelectTDMButton;
|
||||||
|
import mineplex.hub.server.ui.button.SelectTWButton;
|
||||||
import mineplex.hub.server.ui.button.SelectUHCButton;
|
import mineplex.hub.server.ui.button.SelectUHCButton;
|
||||||
import mineplex.hub.server.ui.button.SelectWIZButton;
|
import mineplex.hub.server.ui.button.SelectWIZButton;
|
||||||
|
|
||||||
@ -38,11 +43,12 @@ public class ServerGameMenu extends ShopPageBase<ServerManager, QuickShop>
|
|||||||
|
|
||||||
private int _ssmIndex;
|
private int _ssmIndex;
|
||||||
private int _minigameIndex;
|
private int _minigameIndex;
|
||||||
|
private boolean _extraValue;
|
||||||
|
|
||||||
public ServerGameMenu(ServerManager plugin, QuickShop quickShop, CoreClientManager clientManager,
|
public ServerGameMenu(ServerManager plugin, QuickShop quickShop, CoreClientManager clientManager,
|
||||||
DonationManager donationManager, String name, Player player)
|
DonationManager donationManager, String name, Player player)
|
||||||
{
|
{
|
||||||
super(plugin, quickShop, clientManager, donationManager, name, player, 47);
|
super(plugin, quickShop, clientManager, donationManager, name, player, 45);
|
||||||
|
|
||||||
createSuperSmashCycle();
|
createSuperSmashCycle();
|
||||||
createMinigameCycle();
|
createMinigameCycle();
|
||||||
@ -50,246 +56,247 @@ public class ServerGameMenu extends ShopPageBase<ServerManager, QuickShop>
|
|||||||
buildPage();
|
buildPage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
@Override
|
||||||
protected void buildPage()
|
protected void buildPage()
|
||||||
{
|
{
|
||||||
setItem(0, new ItemBuilder(Material.IRON_PICKAXE)
|
addButton(3, new ItemBuilder(Material.NAME_TAG).setTitle(C.cYellowB + "Type Wars " + C.cGray + "Team Deathmatch").addLore(new String[]
|
||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "The Bridges " + C.cGray + "4 Team Survival").addLore(new String[]
|
|
||||||
{
|
|
||||||
C.Reset + "",
|
|
||||||
C.Reset + "4 Teams get 10 minutes to prepare.",
|
|
||||||
C.Reset + "Then the bridges drop, and all hell",
|
|
||||||
C.Reset + "breaks loose as you battle to the",
|
|
||||||
C.Reset + "death with the other teams.",
|
|
||||||
C.Reset + "",
|
|
||||||
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("BR") + C.Reset + " other players!"
|
|
||||||
}).setHideInfo(true).build());
|
|
||||||
|
|
||||||
setItem(2, new ItemBuilder(Material.DIAMOND_SWORD)
|
|
||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Survival Games " + C.cGray + "Solo/Team Survival").addLore(new String[]
|
|
||||||
{
|
|
||||||
C.Reset + "",
|
|
||||||
C.Reset + "Search for chests to find loot and ",
|
|
||||||
C.Reset + "fight others to be the last man standing. ",
|
|
||||||
C.Reset + "Stay away from the borders!",
|
|
||||||
C.Reset + "",
|
|
||||||
C.Reset + "Join " + C.cGreen
|
|
||||||
+ (getPlugin().getGroupTagPlayerCount("HG") + getPlugin().getGroupTagPlayerCount("SG2")) + C.Reset
|
|
||||||
+ " other players!"
|
|
||||||
}).setHideInfo(true).build());
|
|
||||||
|
|
||||||
setItem(4, new ItemBuilder(Material.FEATHER)
|
|
||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Skywars " + C.cGray + "Solo/Team Survival").addLore(new String[]
|
|
||||||
{
|
|
||||||
C.Reset + "",
|
|
||||||
C.Reset + "16 contenders fight to rule the skies!",
|
|
||||||
C.Reset + "Spawn on a sky island and build your path!",
|
|
||||||
C.Reset + "Find weapons to take your enemies down!",
|
|
||||||
C.Reset + "Up in the skies, death looming if you fall..",
|
|
||||||
C.Reset + "Win! Fight! Send enemies flying in Skywars!",
|
|
||||||
C.Reset + "",
|
|
||||||
C.Reset + "Join " + C.cGreen
|
|
||||||
+ (getPlugin().getGroupTagPlayerCount("SKY") + getPlugin().getGroupTagPlayerCount("SKY2")) + C.Reset
|
|
||||||
+ " other players!",
|
|
||||||
}).setHideInfo(true).build());
|
|
||||||
|
|
||||||
setItem(6, new ItemBuilder(Material.GOLDEN_APPLE)
|
|
||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "UHC " + C.cGray + "Ultra Hardcore Mode").addLore(new String[]
|
|
||||||
{
|
|
||||||
C.Reset + "",
|
|
||||||
C.Reset + "Extremely hard team-based survival ",
|
|
||||||
C.Reset + "Gather materials and fight your way",
|
|
||||||
C.Reset + "to become the last team standing!",
|
|
||||||
C.Reset + "",
|
|
||||||
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("UHC") + C.Reset + " other players!",
|
|
||||||
}).setHideInfo(true).build());
|
|
||||||
|
|
||||||
setItem(8, new ItemBuilder(Material.BLAZE_ROD)
|
|
||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Wizards " + C.cGray + "Last Man Standing").addLore(new String[]
|
|
||||||
{
|
|
||||||
C.Reset + "",
|
|
||||||
C.Reset + "Wield powerful spells to fight",
|
|
||||||
C.Reset + "against other players in this",
|
|
||||||
C.Reset + "exciting free-for-all brawl!",
|
|
||||||
C.Reset + "",
|
|
||||||
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("WIZ") + C.Reset + " other players!",
|
|
||||||
}).setHideInfo(true).build());
|
|
||||||
|
|
||||||
setItem(18, new ItemBuilder(Material.DIAMOND_CHESTPLATE)
|
|
||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Castle Siege " + C.cGray + "Team Game").addLore(new String[]
|
|
||||||
{
|
|
||||||
C.Reset + "",
|
|
||||||
C.Reset + "Defenders must protect King Sparklez",
|
|
||||||
C.Reset + "from the endless waves of Undead",
|
|
||||||
C.Reset + "until the sun rises!",
|
|
||||||
C.Reset + "",
|
|
||||||
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("CS") + C.Reset + " other players!",
|
|
||||||
}).setHideInfo(true).build());
|
|
||||||
|
|
||||||
setItem(20, new ItemBuilder(Material.GRASS)
|
|
||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Block Hunt " + C.cGray + "Cat and Mouse").addLore(new String[]
|
|
||||||
{
|
|
||||||
C.Reset + "",
|
|
||||||
C.Reset + "Hide as blocks/animals, upgrade your ",
|
|
||||||
C.Reset + "weapon and fight to survive against",
|
|
||||||
C.Reset + "the Hunters!",
|
|
||||||
C.Reset + "",
|
|
||||||
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("BH") + C.Reset + " other players!",
|
|
||||||
}).setHideInfo(true).build());
|
|
||||||
|
|
||||||
setItem(22, _superSmashCycle.get(_ssmIndex));
|
|
||||||
|
|
||||||
setItem(24, ItemStackFactory.Instance.CreateStack(Material.TNT.getId(), (byte) 0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Mine-Strike" + C.cGray + "Team Survival", new String[]
|
|
||||||
{
|
{
|
||||||
ChatColor.RESET + "",
|
(_extraValue ? C.cAquaB : C.cWhiteB) + "NEW GAME",
|
||||||
ChatColor.RESET + "One team must defend two bomb sites from",
|
C.Reset + "",
|
||||||
ChatColor.RESET + "the other team, who are trying to plant a bomb",
|
C.Reset + "Attack your enemies with",
|
||||||
ChatColor.RESET + "and blow them up!",
|
C.Reset + "waves of mobs. Defend your giant",
|
||||||
ChatColor.RESET + "",
|
C.Reset + "by typing the name of an enemy mob",
|
||||||
ChatColor.RESET + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("MS") + ChatColor.RESET + " other players!",
|
C.Reset + "to kill it.",
|
||||||
}));
|
C.Reset + "",
|
||||||
|
C.Reset + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("TW") + C.Reset + " other players!",
|
||||||
setItem(26, ItemStackFactory.Instance.CreateStack(Material.BOOK_AND_QUILL.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Draw My Thing " + C.cGray + "Pictionary!", new String[]
|
}).setHideInfo(true).build(), new SelectTWButton(this));
|
||||||
{
|
|
||||||
ChatColor.RESET + "",
|
addButton(5, new ItemBuilder(Material.IRON_SWORD).setTitle(C.cYellowB + "Gladiators" + C.cGray + " Bracketted Deathmatch").addLore(new String[]
|
||||||
ChatColor.RESET + "Players take turns at drawing a random",
|
|
||||||
ChatColor.RESET + "word. Whoever guesses it within the time",
|
|
||||||
ChatColor.RESET + "limit gets some points!",
|
|
||||||
ChatColor.RESET + "",
|
|
||||||
ChatColor.RESET + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("DMT") + ChatColor.RESET + " other players!",
|
|
||||||
}));
|
|
||||||
|
|
||||||
setItem(36, ItemStackFactory.Instance.CreateStack(Material.BEACON.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Dominate " + C.cGray + "Team Game", new String[]
|
|
||||||
{
|
{
|
||||||
ChatColor.RESET + "",
|
(_extraValue ? C.cAquaB : C.cWhiteB) + "FEATURED ARCADE GAME",
|
||||||
ChatColor.RESET + "Customize one of five exciting champions",
|
C.Reset + "",
|
||||||
ChatColor.RESET + "and battle with the opposing team for the",
|
C.Reset + "A 1v1 tournament.",
|
||||||
ChatColor.RESET + "control points on the map.",
|
C.Reset + "Kill your enemy and then",
|
||||||
ChatColor.RESET + "",
|
C.Reset + "run to the next arena!",
|
||||||
ChatColor.RESET + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("DOM") + ChatColor.RESET + " other players!",
|
C.Reset + "",
|
||||||
}));
|
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("GLD") + C.Reset + " other players!"
|
||||||
|
}).setHideInfo(true).build(), new SelectFEATButton(this, "Gladiators"));
|
||||||
setItem(38, ItemStackFactory.Instance.CreateStack(Material.GOLD_SWORD.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Team Deathmatch " + C.cGray + "Team Game", new String[]
|
|
||||||
|
addButton(9, new ItemBuilder(Material.IRON_PICKAXE).setTitle(C.cYellowB + "The Bridges " + C.cGray + "4 Team Survival").addLore(new String[]
|
||||||
{
|
{
|
||||||
ChatColor.RESET + "",
|
C.Reset + "",
|
||||||
ChatColor.RESET + "Customize one of five exciting champions",
|
C.Reset + "4 Teams get 10 minutes to prepare.",
|
||||||
ChatColor.RESET + "and battle with the opposing team to the",
|
C.Reset + "Then the bridges drop, and all hell",
|
||||||
ChatColor.RESET + "last man standing.",
|
C.Reset + "breaks loose as you battle to the",
|
||||||
ChatColor.RESET + "",
|
C.Reset + "death with the other teams.",
|
||||||
ChatColor.RESET + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("TDM") + ChatColor.RESET + " other players!",
|
C.Reset + "",
|
||||||
}));
|
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("BR") + C.Reset + " other players!"
|
||||||
|
}).setHideInfo(true).build(), new SelectBRButton(this));
|
||||||
setItem(40, ItemStackFactory.Instance.CreateStack(Material.WOOD.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Master Builders " + C.cGray + "Creative Build", new String[]
|
|
||||||
{
|
|
||||||
ChatColor.RESET + "",
|
|
||||||
ChatColor.RESET + "Players are given a Build Theme and ",
|
|
||||||
ChatColor.RESET + "must use blocks, monsters and more",
|
|
||||||
ChatColor.RESET + "to create a masterpiece!",
|
|
||||||
ChatColor.RESET + "",
|
|
||||||
ChatColor.RESET + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("BLD") + ChatColor.RESET + " other players!",
|
|
||||||
}));
|
|
||||||
|
|
||||||
setItem(24, new ItemBuilder(Material.TNT)
|
|
||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Mine-Strike " + C.cGray + "Team Survival").addLore(new String[]
|
|
||||||
{
|
|
||||||
C.Reset + "",
|
|
||||||
C.Reset + "One team must defend two bomb sites from",
|
|
||||||
C.Reset + "the other team, who are trying to plant a bomb",
|
|
||||||
C.Reset + "and blow them up!",
|
|
||||||
C.Reset + "",
|
|
||||||
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("MS") + C.Reset + " other players!",
|
|
||||||
}).setHideInfo(true).build());
|
|
||||||
|
|
||||||
setItem(26, new ItemBuilder(Material.BOOK_AND_QUILL)
|
addButton(11, new ItemBuilder(Material.DIAMOND_SWORD).setTitle(C.cYellowB + "Survival Games " + C.cGray + "Solo/Team Survival").addLore(new String[]
|
||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Draw My Thing " + C.cGray + "Pictionary!").addLore(new String[]
|
{
|
||||||
{
|
C.Reset + "",
|
||||||
C.Reset + "",
|
C.Reset + "Search for chests to find loot and ",
|
||||||
C.Reset + "Players take turns at drawing a random",
|
C.Reset + "fight others to be the last man standing. ",
|
||||||
C.Reset + "word. Whoever guesses it within the time",
|
C.Reset + "Stay away from the borders!",
|
||||||
C.Reset + "limit gets some points!",
|
C.Reset + "",
|
||||||
C.Reset + "",
|
C.Reset + "Join " + C.cGreen + (getPlugin().getGroupTagPlayerCount("HG") + getPlugin().getGroupTagPlayerCount("SG2")) + C.Reset + " other players!"
|
||||||
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("DMT") + C.Reset + " other players!",
|
}).setHideInfo(true).build(), new SelectSGButton(this));
|
||||||
}).setHideInfo(true).build());
|
|
||||||
|
|
||||||
setItem(36, new ItemBuilder(Material.BEACON).setTitle(C.Reset + C.Bold + C.cYellow + "Dominate " + C.cGray + "Team Game")
|
addButton(13, new ItemBuilder(Material.FEATHER).setTitle(C.cYellowB + "Skywars " + C.cGray + "Solo/Team Survival").addLore(new String[]
|
||||||
.addLore(new String[]
|
{
|
||||||
{
|
C.Reset + "",
|
||||||
C.Reset + "",
|
C.Reset + "16 contenders fight to rule the skies!",
|
||||||
C.Reset + "Customize one of five exciting champions",
|
C.Reset + "Spawn on a sky island and build your path!",
|
||||||
C.Reset + "and battle with the opposing team for the",
|
C.Reset + "Find weapons to take your enemies down!",
|
||||||
C.Reset + "control points on the map.",
|
C.Reset + "Up in the skies, death looming if you fall..",
|
||||||
C.Reset + "",
|
C.Reset + "Win! Fight! Send enemies flying in Skywars!",
|
||||||
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("DOM") + C.Reset + " other players!",
|
C.Reset + "",
|
||||||
}).setHideInfo(true).build());
|
C.Reset + "Join " + C.cGreen + (getPlugin().getGroupTagPlayerCount("SKY") + getPlugin().getGroupTagPlayerCount("SKY2")) + C.Reset + " other players!",
|
||||||
|
}).setHideInfo(true).build(), new SelectSKYButton(this));
|
||||||
|
|
||||||
setItem(38, new ItemBuilder(Material.GOLD_SWORD)
|
addButton(15, new ItemBuilder(Material.GOLDEN_APPLE).setTitle(C.cYellowB + "UHC " + C.cGray + "Ultra Hardcore Mode").addLore(new String[]
|
||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Team Deathmatch " + C.cGray + "Team Game").addLore(new String[]
|
{
|
||||||
{
|
C.Reset + "",
|
||||||
C.Reset + "",
|
C.Reset + "Extremely hard team-based survival ",
|
||||||
C.Reset + "Customize one of five exciting champions",
|
C.Reset + "Gather materials and fight your way",
|
||||||
C.Reset + "and battle with the opposing team to the",
|
C.Reset + "to become the last team standing!",
|
||||||
C.Reset + "last man standing.",
|
C.Reset + "",
|
||||||
C.Reset + "",
|
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("UHC") + C.Reset + " other players!",
|
||||||
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("TDM") + C.Reset + " other players!",
|
}).setHideInfo(true).build(), new SelectUHCButton(this));
|
||||||
}).setHideInfo(true).build());
|
|
||||||
|
|
||||||
setItem(40, new ItemBuilder(Material.WOOD)
|
addButton(17, new ItemBuilder(Material.BLAZE_ROD).setTitle(C.cYellowB + "Wizards " + C.cGray + "Last Man Standing").addLore(new String[]
|
||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Master Builders " + C.cGray + "Creative Build").addLore(new String[]
|
{
|
||||||
{
|
C.Reset + "",
|
||||||
C.Reset + "",
|
C.Reset + "Wield powerful spells to fight",
|
||||||
C.Reset + "Players are given a Build Theme and ",
|
C.Reset + "against other players in this",
|
||||||
C.Reset + "must use blocks, monsters and more",
|
C.Reset + "exciting free-for-all brawl!",
|
||||||
C.Reset + "to create a masterpiece!",
|
C.Reset + "",
|
||||||
C.Reset + "",
|
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("WIZ") + C.Reset + " other players!",
|
||||||
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("BLD") + C.Reset + " other players!",
|
}).setHideInfo(true).build(), new SelectWIZButton(this));
|
||||||
}).setHideInfo(true).build());
|
|
||||||
|
|
||||||
setItem(42, _minigameCycle.get(_minigameIndex));
|
addButton(18, new ItemBuilder(Material.BANNER).setColor(Color.RED).setTitle(C.cYellowB + "Capture the Flag " + C.cGray + "Team Game").addLore(new String[]
|
||||||
|
{
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "One team must steal the other",
|
||||||
|
C.Reset + "team's flag. Capture it",
|
||||||
|
C.Reset + "three times to win.",
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("CTF") + C.Reset + " other players!",
|
||||||
|
}).setHideInfo(true).build(), new SelectCTFButton(this));
|
||||||
|
|
||||||
setItem(44, new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 3)
|
addButton(20, new ItemBuilder(Material.BEACON).setTitle(C.cYellowB + "Dominate " + C.cGray + "Team Game").addLore(new String[]
|
||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Player Servers " + C.cGray + "Player Hosted Games").addLore(new String[]
|
{
|
||||||
{
|
C.Reset + "",
|
||||||
C.Reset + "",
|
C.Reset + "Customize one of five exciting champions",
|
||||||
C.Reset + "Join your friends in their own ",
|
C.Reset + "and battle with the opposing team for the",
|
||||||
C.Reset + "Mineplex Player Server. You can play",
|
C.Reset + "control points on the map.",
|
||||||
C.Reset + "the games you want, when you want.",
|
C.Reset + "",
|
||||||
C.Reset + "",
|
C.Reset + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("DOM") + C.Reset + " other players!",
|
||||||
}).setHideInfo(true).build());
|
}).setHideInfo(true).build(), new SelectDOMButton(this));
|
||||||
|
|
||||||
getButtonMap().put(0, new SelectBRButton(this));
|
addButton(22, new ItemBuilder(Material.GOLD_SWORD).setTitle(C.cYellowB + "Team Deathmatch " + C.cGray + "Team Game").addLore(new String[]
|
||||||
getButtonMap().put(2, new SelectSGButton(this));
|
{
|
||||||
getButtonMap().put(4, new SelectSKYButton(this));
|
C.Reset + "",
|
||||||
getButtonMap().put(6, new SelectUHCButton(this));
|
C.Reset + "Customize one of five exciting champions",
|
||||||
getButtonMap().put(8, new SelectWIZButton(this));
|
C.Reset + "and battle with the opposing team to the",
|
||||||
|
C.Reset + "last man standing.",
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("TDM") + C.Reset + " other players!",
|
||||||
|
}).setHideInfo(true).build(), new SelectTDMButton(this));
|
||||||
|
|
||||||
getButtonMap().put(18, new SelectCSButton(this));
|
addButton(24, new ItemBuilder(Material.DIAMOND_CHESTPLATE).setTitle(C.cYellowB + "Castle Siege " + C.cGray + "Team Game").addLore(new String[]
|
||||||
getButtonMap().put(20, new SelectBHButton(this));
|
{
|
||||||
getButtonMap().put(22, new SelectSSMButton(this));
|
C.Reset + "",
|
||||||
getButtonMap().put(24, new SelectMSButton(this));
|
C.Reset + "Defenders must protect King Sparklez",
|
||||||
getButtonMap().put(26, new SelectDMTButton(this));
|
C.Reset + "from the endless waves of Undead",
|
||||||
getButtonMap().put(36, new SelectDOMButton(this));
|
C.Reset + "until the sun rises!",
|
||||||
getButtonMap().put(38, new SelectTDMButton(this));
|
C.Reset + "",
|
||||||
getButtonMap().put(40, new SelectBLDButton(this));
|
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("CS") + C.Reset + " other players!",
|
||||||
getButtonMap().put(42, new SelectMINButton(this));
|
}).setHideInfo(true).build(), new SelectCSButton(this));
|
||||||
getButtonMap().put(44, new SelectPLAYERButton(this));
|
|
||||||
// getButtonMap().put(44, new SelectBETAButton(this));
|
addButton(26, new ItemBuilder(Material.GRASS).setTitle(C.cYellowB + "Block Hunt " + C.cGray + "Cat and Mouse").addLore(new String[]
|
||||||
|
{
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Hide as blocks/animals, upgrade your ",
|
||||||
|
C.Reset + "weapon and fight to survive against",
|
||||||
|
C.Reset + "the Hunters!",
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("BH") + C.Reset + " other players!",
|
||||||
|
}).setHideInfo(true).build(), new SelectBHButton(this));
|
||||||
|
|
||||||
|
addButton(27, new ItemBuilder(Material.TNT).setTitle(C.cYellowB + "MineStrike " + C.cGray + "Team Survival").addLore(new String[]
|
||||||
|
{
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "One team must defend two bomb sites from",
|
||||||
|
C.Reset + "the other team, who are trying to plant a bomb",
|
||||||
|
C.Reset + "and blow them up!",
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("MS") + C.Reset + " other players!",
|
||||||
|
}).setHideInfo(true).build(), new SelectMSButton(this));
|
||||||
|
|
||||||
|
addButton(29, new ItemBuilder(Material.BOOK_AND_QUILL).setTitle(C.cYellowB + "Draw My Thing " + C.cGray + "Pictionary").addLore(new String[]
|
||||||
|
{
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Players take turns at drawing a random",
|
||||||
|
C.Reset + "word. Whoever guesses it within the time",
|
||||||
|
C.Reset + "limit gets some points!",
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("DMT") + C.Reset + " other players!",
|
||||||
|
}).setHideInfo(true).build(), new SelectDMTButton(this));
|
||||||
|
|
||||||
|
addButton(31, _superSmashCycle.get(_ssmIndex), new SelectSSMButton(this));
|
||||||
|
|
||||||
|
addButton(33, _minigameCycle.get(_minigameIndex), new SelectMINButton(this));
|
||||||
|
|
||||||
|
addButton(35, new ItemBuilder(Material.WOOD).setTitle(C.cYellowB + "Master Builders " + C.cGray + "Creative Build").setLore(new String[]
|
||||||
|
{
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Players are given a Build Theme and ",
|
||||||
|
C.Reset + "must use blocks, monsters and more",
|
||||||
|
C.Reset + "to create a masterpiece!",
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("BLD") + C.Reset + " other players!",
|
||||||
|
}).setHideInfo(true).build(), new SelectBLDButton(this));
|
||||||
|
|
||||||
|
addButton(37, new ItemBuilder(Material.SNOW_BALL).setTitle(C.cYellowB + "Snow Fight " + C.cGray + "Team Survival").addLore(new String[]
|
||||||
|
{
|
||||||
|
(_extraValue ? C.cAquaB : C.cWhiteB) + "LIMITED TIME",
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Harness the power of snow",
|
||||||
|
C.Reset + "to vanquish your enemies in",
|
||||||
|
C.Reset + "this ULTIMATE snowball fight!",
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("SF") + C.Reset + " other players!",
|
||||||
|
}).setHideInfo(true).build(), new SelectFEATButton(this, "Snow Fight"));
|
||||||
|
|
||||||
|
addButton(39, new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 3).setTitle(C.cYellowB + "Player Servers " + C.cGray + "Player Hosted Games").addLore(new String[]
|
||||||
|
{
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Join your friends in their own ",
|
||||||
|
C.Reset + "Mineplex Player Server. You can play",
|
||||||
|
C.Reset + "the games you want, when you want.",
|
||||||
|
}).setHideInfo(true).build(), new SelectPLAYERButton(this));
|
||||||
|
|
||||||
|
addButton(40, new ItemBuilder(Material.IRON_DOOR).setTitle(C.cYellowB + "Mineplex Clans " + C.cGray + "Champions Teams").addLore(new String[]
|
||||||
|
{
|
||||||
|
(_extraValue ? C.cAquaB : C.cWhiteB) + "ALPHA RELEASE",
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Equip custom skills and builds",
|
||||||
|
C.Reset + "and join your clan to destroy",
|
||||||
|
C.Reset + "and raid others!",
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("Clans") + C.Reset + " other players!",
|
||||||
|
}).setHideInfo(true).build(), new SelectCLANSButton(this));
|
||||||
|
|
||||||
|
addButton(41, new ItemBuilder(Material.BREWING_STAND_ITEM).setTitle(C.cYellowB + "Monster Maze " + C.cGray + "Snow Sprint").addLore(new String[]
|
||||||
|
{
|
||||||
|
(_extraValue ? C.cAquaB : C.cWhiteB) + "BETA GAME",
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Run along a maze avoiding",
|
||||||
|
C.Reset + "evil monsters. Get to the",
|
||||||
|
C.Reset + "Safe-Pad or be killed!",
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("BETA") + C.Reset + " other players!",
|
||||||
|
}).setHideInfo(true).build(), new SelectBETAButton(this));
|
||||||
|
|
||||||
|
addButton(43, new ItemBuilder(Material.BOOKSHELF).setTitle(C.cYellowB + "Christmas Chaos " + C.cGray + "Help Save Christmas").addLore(new String[]
|
||||||
|
{
|
||||||
|
(_extraValue ? C.cAquaB : C.cWhiteB) + "LIMITED TIME",
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Band together with your friends",
|
||||||
|
C.Reset + "and help Santa save Christmas from",
|
||||||
|
C.Reset + "a deadly enemy...",
|
||||||
|
C.Reset + "",
|
||||||
|
C.Reset + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("CC") + C.Reset + " other players!",
|
||||||
|
}).setHideInfo(true).build(), new SelectFEATButton(this, "Christmas Chaos"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
private void createMinigameCycle()
|
private void createMinigameCycle()
|
||||||
{
|
{
|
||||||
int playerCount = getPlugin().getGroupTagPlayerCount("MIN") + getPlugin().getGroupTagPlayerCount("DR")
|
int playerCount = 0
|
||||||
+ getPlugin().getGroupTagPlayerCount("DE") + getPlugin().getGroupTagPlayerCount("PB")
|
+ getPlugin().getGroupTagPlayerCount("MIN")
|
||||||
+ getPlugin().getGroupTagPlayerCount("TF") + getPlugin().getGroupTagPlayerCount("RUN")
|
+ getPlugin().getGroupTagPlayerCount("DR")
|
||||||
+ getPlugin().getGroupTagPlayerCount("SN") + getPlugin().getGroupTagPlayerCount("DT")
|
+ getPlugin().getGroupTagPlayerCount("DE")
|
||||||
+ getPlugin().getGroupTagPlayerCount("SQ") + getPlugin().getGroupTagPlayerCount("SA")
|
+ getPlugin().getGroupTagPlayerCount("PB")
|
||||||
+ getPlugin().getGroupTagPlayerCount("SS") + getPlugin().getGroupTagPlayerCount("OITQ");
|
+ getPlugin().getGroupTagPlayerCount("TF")
|
||||||
|
+ getPlugin().getGroupTagPlayerCount("RUN")
|
||||||
|
+ getPlugin().getGroupTagPlayerCount("SN")
|
||||||
|
+ getPlugin().getGroupTagPlayerCount("DT")
|
||||||
|
+ getPlugin().getGroupTagPlayerCount("SQ")
|
||||||
|
+ getPlugin().getGroupTagPlayerCount("SA")
|
||||||
|
+ getPlugin().getGroupTagPlayerCount("SS")
|
||||||
|
+ getPlugin().getGroupTagPlayerCount("OITQ")
|
||||||
|
+ getPlugin().getGroupTagPlayerCount("BB")
|
||||||
|
+ getPlugin().getGroupTagPlayerCount("MB")
|
||||||
|
+ getPlugin().getGroupTagPlayerCount("EVO")
|
||||||
|
+ getPlugin().getGroupTagPlayerCount("GLD")
|
||||||
|
+ getPlugin().getGroupTagPlayerCount("BL");
|
||||||
_minigameCycle.add(new ItemBuilder(Material.SMOOTH_BRICK)
|
_minigameCycle.add(new ItemBuilder(Material.SMOOTH_BRICK)
|
||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
||||||
{
|
{
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Play all of these fun minigames:",
|
C.Reset + "Play all of these fun minigames and more!",
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + C.Bold + C.cGreen + "Super Spleef",
|
C.Reset + C.Bold + C.cGreen + "Super Spleef",
|
||||||
C.Reset + "Runner",
|
C.Reset + "Runner",
|
||||||
@ -310,7 +317,7 @@ public class ServerGameMenu extends ShopPageBase<ServerManager, QuickShop>
|
|||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
||||||
{
|
{
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Play all of these fun minigames:",
|
C.Reset + "Play all of these fun minigames and more!",
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Super Spleef",
|
C.Reset + "Super Spleef",
|
||||||
C.Reset + C.Bold + C.cGreen + "Runner",
|
C.Reset + C.Bold + C.cGreen + "Runner",
|
||||||
@ -331,7 +338,7 @@ public class ServerGameMenu extends ShopPageBase<ServerManager, QuickShop>
|
|||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
||||||
{
|
{
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Play all of these fun minigames:",
|
C.Reset + "Play all of these fun minigames and more!",
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Super Spleef",
|
C.Reset + "Super Spleef",
|
||||||
C.Reset + "Runner",
|
C.Reset + "Runner",
|
||||||
@ -352,7 +359,7 @@ public class ServerGameMenu extends ShopPageBase<ServerManager, QuickShop>
|
|||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
||||||
{
|
{
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Play all of these fun minigames:",
|
C.Reset + "Play all of these fun minigames and more!",
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Super Spleef",
|
C.Reset + "Super Spleef",
|
||||||
C.Reset + "Runner",
|
C.Reset + "Runner",
|
||||||
@ -373,7 +380,7 @@ public class ServerGameMenu extends ShopPageBase<ServerManager, QuickShop>
|
|||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
||||||
{
|
{
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Play all of these fun minigames:",
|
C.Reset + "Play all of these fun minigames and more!",
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Super Spleef",
|
C.Reset + "Super Spleef",
|
||||||
C.Reset + "Runner",
|
C.Reset + "Runner",
|
||||||
@ -394,7 +401,7 @@ public class ServerGameMenu extends ShopPageBase<ServerManager, QuickShop>
|
|||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
||||||
{
|
{
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Play all of these fun minigames:",
|
C.Reset + "Play all of these fun minigames and more!",
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Super Spleef",
|
C.Reset + "Super Spleef",
|
||||||
C.Reset + "Runner",
|
C.Reset + "Runner",
|
||||||
@ -415,7 +422,7 @@ public class ServerGameMenu extends ShopPageBase<ServerManager, QuickShop>
|
|||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
||||||
{
|
{
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Play all of these fun minigames:",
|
C.Reset + "Play all of these fun minigames and more!",
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Super Spleef",
|
C.Reset + "Super Spleef",
|
||||||
C.Reset + "Runner",
|
C.Reset + "Runner",
|
||||||
@ -436,7 +443,7 @@ public class ServerGameMenu extends ShopPageBase<ServerManager, QuickShop>
|
|||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
||||||
{
|
{
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Play all of these fun minigames:",
|
C.Reset + "Play all of these fun minigames and more!",
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Super Spleef",
|
C.Reset + "Super Spleef",
|
||||||
C.Reset + "Runner",
|
C.Reset + "Runner",
|
||||||
@ -457,7 +464,7 @@ public class ServerGameMenu extends ShopPageBase<ServerManager, QuickShop>
|
|||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
||||||
{
|
{
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Play all of these fun minigames:",
|
C.Reset + "Play all of these fun minigames and more!",
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Super Spleef",
|
C.Reset + "Super Spleef",
|
||||||
C.Reset + "Runner",
|
C.Reset + "Runner",
|
||||||
@ -478,7 +485,7 @@ public class ServerGameMenu extends ShopPageBase<ServerManager, QuickShop>
|
|||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
||||||
{
|
{
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Play all of these fun minigames:",
|
C.Reset + "Play all of these fun minigames and more!",
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Super Spleef",
|
C.Reset + "Super Spleef",
|
||||||
C.Reset + "Runner",
|
C.Reset + "Runner",
|
||||||
@ -499,7 +506,7 @@ public class ServerGameMenu extends ShopPageBase<ServerManager, QuickShop>
|
|||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
.setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[]
|
||||||
{
|
{
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Play all of these fun minigames:",
|
C.Reset + "Play all of these fun minigames and more!",
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Super Spleef",
|
C.Reset + "Super Spleef",
|
||||||
C.Reset + "Runner",
|
C.Reset + "Runner",
|
||||||
@ -520,26 +527,37 @@ public class ServerGameMenu extends ShopPageBase<ServerManager, QuickShop>
|
|||||||
private void createSuperSmashCycle()
|
private void createSuperSmashCycle()
|
||||||
{
|
{
|
||||||
String[] desc = new String[]
|
String[] desc = new String[]
|
||||||
{
|
{
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Pick from a selection of monsters,",
|
C.Reset + "Pick from a selection of monsters,",
|
||||||
C.Reset + "then battle other players to the ",
|
C.Reset + "then battle other players to the ",
|
||||||
C.Reset + "death with your monsters skills!",
|
C.Reset + "death with your monsters skills!",
|
||||||
C.Reset + "",
|
C.Reset + "",
|
||||||
C.Reset + "Join " + C.cGreen
|
C.Reset + "Join " + C.cGreen + (getPlugin().getGroupTagPlayerCount("SSM") + getPlugin().getGroupTagPlayerCount("SSM2")) + C.Reset + " other players!",
|
||||||
+ (getPlugin().getGroupTagPlayerCount("SSM") + getPlugin().getGroupTagPlayerCount("SSM2")) + C.Reset
|
};
|
||||||
+ " other players!",
|
|
||||||
};
|
|
||||||
|
|
||||||
_superSmashCycle.add(new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 4)
|
_superSmashCycle.add(new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 0).setTitle(C.cYellowB + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch").addLore(desc).setHideInfo(true).build());
|
||||||
.setTitle(C.Reset + C.Bold + C.cYellow + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch").addLore(desc)
|
_superSmashCycle.add(new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 1).setTitle(C.cYellowB + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch").addLore(desc).setHideInfo(true).build());
|
||||||
.setHideInfo(true).build());
|
_superSmashCycle.add(new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 2).setTitle(C.cYellowB + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch").addLore(desc).setHideInfo(true).build());
|
||||||
|
_superSmashCycle.add(new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 3).setPlayerHead("MHF_LavaSlime").setTitle(C.cYellowB + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch").addLore(desc).setHideInfo(true).build());
|
||||||
|
_superSmashCycle.add(new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 3).setPlayerHead("MHF_Golem").setTitle(C.cYellowB + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch").addLore(desc).setHideInfo(true).build());
|
||||||
|
_superSmashCycle.add(new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 3).setPlayerHead("MHF_Enderman").setTitle(C.cYellowB + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch").addLore(desc).setHideInfo(true).build());
|
||||||
|
_superSmashCycle.add(new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 3).setPlayerHead("MHF_Cow").setTitle(C.cYellowB + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch").addLore(desc).setHideInfo(true).build());
|
||||||
|
_superSmashCycle.add(new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 3).setPlayerHead("MHF_Chicken").setTitle(C.cYellowB + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch").addLore(desc).setHideInfo(true).build());
|
||||||
|
_superSmashCycle.add(new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 3).setPlayerHead("MHF_Blaze").setTitle(C.cYellowB + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch").addLore(desc).setHideInfo(true).build());
|
||||||
|
_superSmashCycle.add(new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 3).setPlayerHead("MHF_Squid").setTitle(C.cYellowB + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch").addLore(desc).setHideInfo(true).build());
|
||||||
|
_superSmashCycle.add(new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 3).setPlayerHead("MHF_Spider").setTitle(C.cYellowB + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch").addLore(desc).setHideInfo(true).build());
|
||||||
|
_superSmashCycle.add(new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 3).setPlayerHead("MHF_Slime").setTitle(C.cYellowB + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch").addLore(desc).setHideInfo(true).build());
|
||||||
|
_superSmashCycle.add(new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 3).setPlayerHead("MHF_Sheep").setTitle(C.cYellowB + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch").addLore(desc).setHideInfo(true).build());
|
||||||
|
_superSmashCycle.add(new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 3).setPlayerHead("MHF_Pig").setTitle(C.cYellowB + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch").addLore(desc).setHideInfo(true).build());
|
||||||
|
_superSmashCycle.add(new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 4).setTitle(C.cYellowB + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch").addLore(desc).setHideInfo(true).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Update()
|
public void Update()
|
||||||
{
|
{
|
||||||
_ssmIndex++;
|
_ssmIndex++;
|
||||||
_minigameIndex++;
|
_minigameIndex++;
|
||||||
|
_extraValue = !_extraValue;
|
||||||
|
|
||||||
if (_ssmIndex >= _superSmashCycle.size())
|
if (_ssmIndex >= _superSmashCycle.size())
|
||||||
_ssmIndex = 0;
|
_ssmIndex = 0;
|
||||||
@ -565,6 +583,11 @@ public class ServerGameMenu extends ShopPageBase<ServerManager, QuickShop>
|
|||||||
getPlugin().getDominateShop().attemptShopOpen(player);
|
getPlugin().getDominateShop().attemptShopOpen(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void openCtf(Player player)
|
||||||
|
{
|
||||||
|
getPlugin().getCtfShop().attemptShopOpen(player);
|
||||||
|
}
|
||||||
|
|
||||||
public void openCS(Player player)
|
public void openCS(Player player)
|
||||||
{
|
{
|
||||||
getPlugin().getCastleSiegeShop().attemptShopOpen(player);
|
getPlugin().getCastleSiegeShop().attemptShopOpen(player);
|
||||||
@ -614,6 +637,11 @@ public class ServerGameMenu extends ShopPageBase<ServerManager, QuickShop>
|
|||||||
{
|
{
|
||||||
getPlugin().getBetaShop().attemptShopOpen(player);
|
getPlugin().getBetaShop().attemptShopOpen(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void openFeatured(Player player, String name)
|
||||||
|
{
|
||||||
|
getPlugin().getShop(name).attemptShopOpen(player);
|
||||||
|
}
|
||||||
|
|
||||||
public void openUHC(Player player)
|
public void openUHC(Player player)
|
||||||
{
|
{
|
||||||
@ -629,4 +657,14 @@ public class ServerGameMenu extends ShopPageBase<ServerManager, QuickShop>
|
|||||||
{
|
{
|
||||||
getPlugin().getPlayerGamesShop().attemptShopOpen(player);
|
getPlugin().getPlayerGamesShop().attemptShopOpen(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void openClans(Player player)
|
||||||
|
{
|
||||||
|
getPlugin().getClansShop().attemptShopOpen(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void openTypeWars(Player player)
|
||||||
|
{
|
||||||
|
getPlugin().getTypeWarsShop().attemptShopOpen(player);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
package mineplex.hub.server.ui.button;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
import mineplex.hub.server.ui.ServerGameMenu;
|
||||||
|
|
||||||
|
public class SelectCLANSButton implements IButton
|
||||||
|
{
|
||||||
|
private ServerGameMenu _menu;
|
||||||
|
|
||||||
|
public SelectCLANSButton(ServerGameMenu menu)
|
||||||
|
{
|
||||||
|
_menu = menu;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
_menu.openClans(player);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package mineplex.hub.server.ui.button;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
import mineplex.hub.server.ui.ServerGameMenu;
|
||||||
|
|
||||||
|
public class SelectCTFButton implements IButton
|
||||||
|
{
|
||||||
|
private ServerGameMenu _menu;
|
||||||
|
|
||||||
|
public SelectCTFButton(ServerGameMenu menu)
|
||||||
|
{
|
||||||
|
_menu = menu;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
_menu.openCtf(player);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package mineplex.hub.server.ui.button;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
import mineplex.hub.server.ui.ServerGameMenu;
|
||||||
|
|
||||||
|
public class SelectFEATButton implements IButton
|
||||||
|
{
|
||||||
|
private ServerGameMenu _menu;
|
||||||
|
private String _name;
|
||||||
|
|
||||||
|
public SelectFEATButton(ServerGameMenu menu, String name)
|
||||||
|
{
|
||||||
|
_menu = menu;
|
||||||
|
_name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
_menu.openFeatured(player, _name);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package mineplex.hub.server.ui.button;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
import mineplex.hub.server.ui.ServerGameMenu;
|
||||||
|
|
||||||
|
public class SelectTWButton implements IButton
|
||||||
|
{
|
||||||
|
private ServerGameMenu _menu;
|
||||||
|
|
||||||
|
public SelectTWButton(ServerGameMenu menu)
|
||||||
|
{
|
||||||
|
_menu = menu;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
_menu.openTypeWars(player);
|
||||||
|
}
|
||||||
|
}
|
1
Plugins/Mineplex.Queuer/.gitignore
vendored
1
Plugins/Mineplex.Queuer/.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
/bin
|
/bin
|
||||||
|
/bin
|
||||||
|
@ -24,7 +24,7 @@ public class PasswordRepository extends RepositoryBase
|
|||||||
|
|
||||||
public PasswordRepository(JavaPlugin plugin, String serverName)
|
public PasswordRepository(JavaPlugin plugin, String serverName)
|
||||||
{
|
{
|
||||||
super(plugin, DBPool.ACCOUNT);
|
super(plugin, DBPool.getAccount());
|
||||||
_serverName = serverName;
|
_serverName = serverName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,6 +62,7 @@ import nautilus.game.arcade.game.games.survivalgames.SoloSurvivalGames;
|
|||||||
import nautilus.game.arcade.game.games.survivalgames.TeamSurvivalGames;
|
import nautilus.game.arcade.game.games.survivalgames.TeamSurvivalGames;
|
||||||
import nautilus.game.arcade.game.games.tug.Tug;
|
import nautilus.game.arcade.game.games.tug.Tug;
|
||||||
import nautilus.game.arcade.game.games.turfforts.TurfForts;
|
import nautilus.game.arcade.game.games.turfforts.TurfForts;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.TypeWars;
|
||||||
import nautilus.game.arcade.game.games.uhc.UHC;
|
import nautilus.game.arcade.game.games.uhc.UHC;
|
||||||
import nautilus.game.arcade.game.games.wither.WitherGame;
|
import nautilus.game.arcade.game.games.wither.WitherGame;
|
||||||
import nautilus.game.arcade.game.games.wizards.Wizards;
|
import nautilus.game.arcade.game.games.wizards.Wizards;
|
||||||
@ -104,6 +105,7 @@ public enum GameType
|
|||||||
Runner(Runner.class, GameDisplay.Runner),
|
Runner(Runner.class, GameDisplay.Runner),
|
||||||
SearchAndDestroy(SearchAndDestroy.class, GameDisplay.SearchAndDestroy),
|
SearchAndDestroy(SearchAndDestroy.class, GameDisplay.SearchAndDestroy),
|
||||||
Sheep(SheepGame.class, GameDisplay.Sheep),
|
Sheep(SheepGame.class, GameDisplay.Sheep),
|
||||||
|
TypeWars(TypeWars.class, GameDisplay.TypeWars),
|
||||||
|
|
||||||
Smash(SoloSuperSmash.class, GameDisplay.Smash),
|
Smash(SoloSuperSmash.class, GameDisplay.Smash),
|
||||||
SmashDomination(SuperSmashDominate.class, GameDisplay.SmashDomination),
|
SmashDomination(SuperSmashDominate.class, GameDisplay.SmashDomination),
|
||||||
|
@ -2,17 +2,9 @@ package nautilus.game.arcade.game.games.cards;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.entity.ItemFrame;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
import mineplex.core.common.util.NautHashMap;
|
import mineplex.core.common.util.NautHashMap;
|
||||||
import mineplex.core.common.util.UtilTime;
|
import mineplex.core.common.util.UtilTime;
|
||||||
import mineplex.core.common.util.UtilTextMiddle;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
import nautilus.game.arcade.ArcadeManager;
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
@ -23,6 +15,13 @@ import nautilus.game.arcade.game.games.GameScore;
|
|||||||
import nautilus.game.arcade.game.games.cards.kits.KitPlayer;
|
import nautilus.game.arcade.game.games.cards.kits.KitPlayer;
|
||||||
import nautilus.game.arcade.kit.Kit;
|
import nautilus.game.arcade.kit.Kit;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.ItemFrame;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
public class Cards extends SoloGame
|
public class Cards extends SoloGame
|
||||||
{
|
{
|
||||||
private CardFactory _cardFactory;
|
private CardFactory _cardFactory;
|
||||||
|
@ -0,0 +1,42 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
public class ActivateNukeSpellEvent extends Event
|
||||||
|
{
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList()
|
||||||
|
{
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers()
|
||||||
|
{
|
||||||
|
return getHandlerList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Player _player;
|
||||||
|
private ArrayList<Minion> _minions;
|
||||||
|
|
||||||
|
public ActivateNukeSpellEvent(Player player, ArrayList<Minion> minions)
|
||||||
|
{
|
||||||
|
_player = player;
|
||||||
|
_minions = minions;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player getPlayer()
|
||||||
|
{
|
||||||
|
return _player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<Minion> getMinions()
|
||||||
|
{
|
||||||
|
return _minions;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
public class ActivateSpellEvent extends Event
|
||||||
|
{
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList()
|
||||||
|
{
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers()
|
||||||
|
{
|
||||||
|
return getHandlerList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Player _player;
|
||||||
|
private Spell _spell;
|
||||||
|
|
||||||
|
public ActivateSpellEvent(Player player, Spell spell)
|
||||||
|
{
|
||||||
|
_player = player;
|
||||||
|
_spell = spell;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player getPlayer()
|
||||||
|
{
|
||||||
|
return _player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Spell getSpell()
|
||||||
|
{
|
||||||
|
return _spell;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,632 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.UtilEnt;
|
||||||
|
import mineplex.core.common.util.UtilFirework;
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseBase;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseSlime;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseWither;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseZombie;
|
||||||
|
import mineplex.core.hologram.Hologram;
|
||||||
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
|
import nautilus.game.arcade.game.GameTeam;
|
||||||
|
import nautilus.game.arcade.game.Game.GameState;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.FireworkEffect.Type;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Creeper;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.entity.Zombie;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public class Minion
|
||||||
|
{
|
||||||
|
|
||||||
|
private static String[] NAMES = new String[]{"Fishing", "Cookie", "Sleeping", "Diamond", "Banana", "Tree", "Egg", "Cat",
|
||||||
|
"Quadrilateral", "Rollercoaster", "Hallucinating", "Advertisement", "Entertainment", "Administrator", "Intergalactic", "International", "Understanding", "Investigation",
|
||||||
|
"Veterinarian", "Photographer", "Cheeseburger", "Civilization", "Tranquilizer", "Conversation", "EnderDragon", "Engineering", "Philippines", "Countryside",
|
||||||
|
"Electricity", "Caterpillar", "Keyboarding", "Agriculture", "Mathematics", "Millimeters", "Centimeters", "Screwdriver", "Achievement", "Necromancer",
|
||||||
|
"Grasshopper", "Quadrillion", "Horseradish", "Aboveground", "Belowground", "Mississippi", "Computerize", "Hibernation", "Radioactive", "Unfortunate",
|
||||||
|
"Demonstrate", "Gymnastics", "Toothpaste", "Paraphrase", "Limitless", "Breakfast", "Graveyard", "Philippines", "Countryside",
|
||||||
|
"Competition", "Management", "Peppermint", "Pyromaniac", "Sandstone", "Vengeance", "Passwords", "Chew", "Philippines", "Countryside",
|
||||||
|
"Competitive", "Accounting", "Generation", "Mechanized", "Minecraft", "Sprinting", "Beautiful", "Container", "Mayonaise", "Generator",
|
||||||
|
"Bombardment", "Laboratory", "BlackBerry", "Calculator", "Mushrooms", "Heartbeat", "Authority", "Apartment", "Deception", "Recommend",
|
||||||
|
"Highlighter", "Incomplete", "Javascript", "Compressor", "Dentistry", "Rectangle", "Exhausted", "Slimeball", "Commander", "Associate",
|
||||||
|
"Complicated", "Government", "Ceptillion", "Deflection", "Cosmetics", "Trapezoid", "Hamburger", "Raspberry", "Developer", "Accompany",
|
||||||
|
"Basketball", "Milkshakes", "Antibiotic", "Vocabulary", "Australia", "Dodecagon", "Miniature", "Blueberry", "Historian", "Machinery",
|
||||||
|
"Volleyball", "Earthquake", "Girlfriend", "Definition", "Christmas", "Cardboard", "Dimension", "Overreact", "Character",
|
||||||
|
"Television", "Motorcycle", "Despicable", "Contradict", "Chocolate", "Screaming", "Microsoft", "Barbarian", "Backspace", "Knowledge",
|
||||||
|
"Microphone", "Buccaneers", "Affordable", "Attendance", "Halloween", "Demanding", "Wrestling", "Lightbulb", "Wisconsin", "Secondary",
|
||||||
|
"Rhinoceros", "Applesauce", "Disconnect", "Protection", "Vacations", "Hopscotch", "Moderator", "Invisible", "Tennessee", "Adjective",
|
||||||
|
"Chestpiece", "Headphones", "Watermelon", "Reasonless", "Traveling", "Spectator", "Paintball", "Carnivore", "Awareness", "Direction",
|
||||||
|
"Complicated", "Controller", "Chimpanzee", "Deportment", "Saxophone", "Quadruple", "Champions", "Herbivore", "Unexcused", "Different",
|
||||||
|
"Antarctica", "Paintbrush", "Newsletter", "Appearance", "Hurricane", "Autopilot", "Architect", "Automatic", "Diplomacy", "Construct",
|
||||||
|
"Snowflakes", "Typewriter", "Sunglasses", "Occupation", "Piercings", "Principle", "Sharpness", "Performer", "Valentine", "Alternate",
|
||||||
|
"Strawberry", "Smartwatch", "Horrendous", "Antarctica", "Necklaces", "September", "Trademark", "Miniscule", "Copyright", "Opposable",
|
||||||
|
"Blackholes", "Minestrike", "California", "Wristwatch", "Evolution", "Microwave", "Dangerous", "Humongous", "Practical", "Imaginary",
|
||||||
|
"Rocketship", "Deathmatch", "Transplant", "Confusion", "Spaceship", "Eyeshadow", "Afternoon", "Judgement", "Imperfect", "Bonemeal",
|
||||||
|
"Aquamarine", "Playground", "Inevitable", "Surprised", "Lightning", "Butterfly", "Beekeeper", "Gladiator", "Excessive", "Courages",
|
||||||
|
"Levitation", "Resistance", "Inflatable", "Newspaper", "Sketching", "Centipede", "Parachute", "Treachery", "Crocodile", "Baseball",
|
||||||
|
"Vegetables", "Lighthouse", "Relentless", "Dinosaurs", "Teenagers", "Cartwheel", "Barricade", "Blowtorch", "Alligator", "Presents",
|
||||||
|
"Whispering", "Helicopter", "Mistakable", "Tarantula", "Grassland", "President", "Raincloud", "Incentive", "Balloons",
|
||||||
|
"Announcing", "Mechanical", "Expectance", "Mountains", "Fingertip", "Millenium", "Structure", "Keyboard",
|
||||||
|
"Meditation", "Toothbrush", "Tumbleweed", "Sandstone", "Dumplings", "Scientist", "Pineapple", "Boyfriend", "Spotlight", "Computer",
|
||||||
|
"Clothing", "Elephant", "Reptiles", "Scorpion", "Redstone", "Diamonds", "Porkchop", "Endermen", "Obsidian", "Planting",
|
||||||
|
"Potatoes", "Vampires", "Bracelet", "Coloring", "Thousand", "Hologram", "Lipstick", "Cruising", "Delivery", "Dreaming",
|
||||||
|
"Minecart", "Werewolf", "Highways", "Painting", "Infinity", "Ancestor", "Eyeliner", "Complete", "Packages", "Thinking",
|
||||||
|
"Unicorns", "Pumpkins", "Internet", "Toddlers", "Swimming", "Wreckage", "Siblings", "Branches", "Criminal", "Engineer",
|
||||||
|
"Military", "Costumes", "Earrings", "Children", "Triangle", "Defender", "Baguette", "Politics", "Handsome", "Reindeer",
|
||||||
|
"Portland", "Chipotle", "Dolphins", "Pre-teen", "Pentagon", "Homework", "Princess", "Citizens", "Gorgeous", "Necklace",
|
||||||
|
"Penguins", "Sapphire", "Galaxies", "Campfire", "Heptagon", "February", "Alphabet", "Username", "Panthers", "Mineplex",
|
||||||
|
"Barbecue", "Amethyst", "Cartoons", "Tropical", "Lollipop", "November", "Scissors", "Medicine", "Warriors", "Pallette",
|
||||||
|
"Mermaids", "Clarinet", "Basement", "Broccoli", "Shouting", "December", "Eternity", "Behavior", "Chatting", "Dominate",
|
||||||
|
"Assassin", "Elevator", "Weakness", "Blizzard", "Entrance", "Universe", "Teleport", "Director", "Stuffing", "Eruption",
|
||||||
|
"Godzilla", "Electron", "Strength", "Powerful", "Dynamite", "Backyard", "Gradient", "Producer", "Festival", "Mattress",
|
||||||
|
"Empoleon", "Building", "Dinosaur", "Illusion", "Mustache", "Ceremony", "Shipment", "Cosmetic", "Applause", "Research",
|
||||||
|
"Chimchar", "Aquarium", "Sidewalk", "Calendar", "Treasure", "Airplane", "Envelope", "Kangaroo", "Goldfish", "Starfish",
|
||||||
|
"Nickname", "Slowness", "Official", "Accident", "Cinnamon", "Collapse", "Geometry", "Barnacle", "Football", "Creative",
|
||||||
|
"Hypnotic", "Antidote", "Emulator", "Foothold", "Friction", "Tungsten", "Tablets", "Torches", "Fairies", "Windows",
|
||||||
|
"Conquest", "Province", "Overflow", "Graceful", "Negative", "Doctrine", "Charger", "Carrots", "Spirits", "Robbers",
|
||||||
|
"Karambit", "Solution", "Sandwich", "Catapult", "Positive", "Firework", "Ukulele", "Dragons", "Cobwebs", "Drawing",
|
||||||
|
"Internal", "Japanese", "Atronomy", "Villager", "Tranquil", "Compress", "Glasses", "Nursing", "College", "Magenta",
|
||||||
|
"Trillion", "Standard", "Astrology", "Infringe", "Fortress", "Prisoner", "Daisies", "Soldier", "Courses", "Serpent",
|
||||||
|
"Carnival", "Parasite", "Porridge", "Variable", "Charcoal", "Decision", "Hazards", "Jupiter", "Buttons", "Camping",
|
||||||
|
"Concrete", "Carriage", "Pressure", "Practice", "Commerce", "Windmill", "Cheetah", "Mercury", "Octopus", "Canyons",
|
||||||
|
"Pavement", "Auxilary", "Demolish", "Maintain", "Barbeque", "Parmesan", "Vulture", "America", "Printer", "Seventy",
|
||||||
|
"Joystick", "Marshall", "Franklin", "Umbrella", "Contract", "Warthog", "Turtles", "Ireland", "Titanic", "Hundred",
|
||||||
|
"Speaker", "Suitcase", "Michigan", "Darkness", "Separate", "Puzzled", "Ocelots", "Germany", "Vanilla", "Million",
|
||||||
|
"Figurine", "Mandarin", "Arkansas", "Ethernet", "Eligible", "Shocked", "Creeper", "Chillie", "Tornado", "Billion",
|
||||||
|
"Boundary", "Anteater", "Colorado", "Everyday", "Fraction", "Figures", "Zombies", "Jamaica", "Seaweed", "Twitter",
|
||||||
|
"Birthday", "Sunshine", "Virginia", "Surprise", "Compound", "Pillows", "Leather", "Bermuda", "Craters", "Waiting",
|
||||||
|
"Hogwarts", "Particle", "American", "Together", "Precious", "Erasers", "Chicken", "Bahamas", "Meteors", "Passion",
|
||||||
|
"Walking", "Decagon", "Spatula", "Science", "Bicycle", "Animate", "Cereal", "Graphic", "Message", "Episode",
|
||||||
|
"Running", "Talking", "Cooking", "Biology", "Sweater", "Cabinet", "Pokemon", "Kingdom", "Funeral", "Destroy",
|
||||||
|
"Jogging", "Yelling", "Fashion", "Pajamas", "Lettuce", "Furnace", "Chariot", "Package", "Grinder", "Defrost",
|
||||||
|
"Breathe", "Ladybug", "Brother", "Reflect", "Cheddar", "Bridges", "Spawner", "Exhibit", "Nuclear", "Avocado",
|
||||||
|
"Muscles", "Invader", "Grandpa", "Confirm", "Speaker", "Wizards", "Stacker", "Feather", "Channel", "Thunder",
|
||||||
|
"Marbles", "Contest", "Grandma", "History", "Minigun", "Skywars", "Turtwig", "Morning", "Explode", "Factory",
|
||||||
|
"Polygon", "Teacher", "Royalty", "Balcony", "Android", "Monster", "Emerald", "Primate", "Village", "Company",
|
||||||
|
"Degrees", "Glacier", "Cricket", "Partner", "Medieval", "Gravity", "Surgeon", "Volcano", "Forward", "Console",
|
||||||
|
"Hexagon", "Cyclops", "Kung-fu", "Bonjour", "Painter", "Snowman", "Caramel", "Lullaby", "Sparrow", "Blowgun",
|
||||||
|
"Octagon", "January", "Century", "Bowling", "Plumber", "Explore", "Healing", "Circuit", "Vampire", "Distort",
|
||||||
|
"Nonagon", "October", "Lockers", "Justice", "England", "Pancake", "Whisper", "Voltage", "Ceramic", "Avenger",
|
||||||
|
"Bazooka", "Actress", "Highway", "Fighter", "Notepad", "Knuckle", "YouTube", "Fishing", "Florida", "Capsule",
|
||||||
|
"Missile", "Haircut", "Apricot", "Deathly", "Cracker", "Western", "Colonel", "Balance", "Georgia", "Boolean",
|
||||||
|
"Pyramid", "Stomach", "Dracula", "Fractal", "Network", "Eastern", "Creator", "Monitor", "Glowing", "Integer",
|
||||||
|
"Mailbox", "Phantom", "Harpoon", "Endless", "Ketchup", "English", "Sunrise", "Examine", "Blowing", "Perfect",
|
||||||
|
"Algebra", "Pattern", "Cottage", "Crystal", "Mustard", "Spanish", "Unlucky", "Tragedy", "Deviate", "Builder",
|
||||||
|
"Penguin", "Emperor", "Amplify", "Hamster", "Paprika", "Chinese", "Shackle", "Kitchen", "Liberty", "Cupcake",
|
||||||
|
"Robotic", "Fortune", "Gazelle", "Scratch", "Revenge", "Honesty", "Hideout", "Compass", "Italian", "Demoman",
|
||||||
|
"Machine", "Gymnast", "Balloon", "Country", "Poision", "Brendan", "Connect", "Fireman", "Mexican", "Neptune",
|
||||||
|
"Aquatic", "Hostage", "Program", "Witness", "Villain", "Virtual", "Supreme", "Platter", "Ukraine", "Profile",
|
||||||
|
"Hatchet", "Hangers", "Bayonet", "Gamepad", "Bandage", "Blister", "Archive", "Implode", "Hilbert", "Offline",
|
||||||
|
"Shelter", "Primary", "Organic", "Healthy", "Makeup", "Blazes", "Brazil", "Horror", "Subway", "Babies",
|
||||||
|
"Capture", "Various", "Gradual", "Rapture", "Pollen", "String", "Warren", "Moving", "Shorts", "Elders",
|
||||||
|
"Elegant", "Violate", "Heroic", "Violent", "Leaves", "Soccer", "Europe", "School", "Scarves", "Orange",
|
||||||
|
"Dentist", "Neglect", "Strong", "Solvent", "Monkey", "Closet", "Africa", "Hotels", "Sharks", "Yellow",
|
||||||
|
"Combine", "Fulfill", "Barbie", "Engrave", "Rabbit", "Carpet", "Winter", "Zipper", "Whales", "Purple",
|
||||||
|
"Surface", "Sailing", "Pencil", "Passage", "Kitten", "Saturn", "Spring", "Acorns", "Comets",
|
||||||
|
"Gelatin", "Klarin", "Phones", "Quality", "Ingots", "Uranus", "Summer", "Pariot", "Comedy", "Poison",
|
||||||
|
"Similar", "Flutter", "Shield", "Psychic", "Spider", "Mexico", "Autumn", "Cruise", "Sports", "Forest",
|
||||||
|
"Oxidize", "Disease", "Guitar", "Opossum", "Ghasts", "France", "Ghosts", "Lucius", "Cement", "Desert",
|
||||||
|
"Purpose", "Symptom", "Sticks", "Measure", "Slimes", "Greece", "Spooky", "Coffee", "Aliens", "Cities",
|
||||||
|
"Bikini", "Mortal", "Serena", "Future", "Bottle", "Helmet", "Crunch", "Afraid", "Threat", "Static",
|
||||||
|
"Happy", "Knife", "Scary", "Lapis", "Skirt", "Waves", "Calem", "Clock", "Taste", "Lucas",
|
||||||
|
"Anger", "Spork", "Maike", "Candy", "Shirt", "Tides", "Ocean", "Crawl", "Smell", "React",
|
||||||
|
"Dolls", "Roses", "Trips", "Flute", "Pants", "Brick", "Three", "Ethan", "Uncle", "Lunch",
|
||||||
|
"Legos", "Tulip", "Beach", "Wipes", "Heels", "Straw", "Seven", "Hands", "Queen", "Books",
|
||||||
|
"Couch", "Grass", "Clans", "Frame", "Nails", "Cream", "Eight", "Belly", "Crown", "Polls",
|
||||||
|
"Vases", "Tiger", "Wagon", "Sleet", "Rings", "Attic", "Forty", "Chest", "Staff", "Hello",
|
||||||
|
"Sword", "Panda", "Sleep", "Roads", "Money", "Green", "Fifty", "Brush", "Tools", "Howdy",
|
||||||
|
"Banjo", "Sloth", "X-ray", "Truck", "Coral", "Speed", "Sixty", "Peace", "Music", "Court",
|
||||||
|
"Drums", "Snake", "Socks", "Plane", "Reefs", "Hilda", "Brown", "Heart", "Lucia", "Raven",
|
||||||
|
"Spoon", "Boots", "Pearl", "Train", "Horse", "Woods", "Silly", "Lotta", "Month", "Games",
|
||||||
|
"Love", "Cats", "Lava", "Ship", "Moon", "Five", "Head", "July", "Mask", "Hola",
|
||||||
|
"Rosa", "Wolf", "Soda", "Ruby", "News", "Nine", "Hair", "Feel", "Jazz", "Soft",
|
||||||
|
"Toys", "Duck", "Mars", "Mint", "Ufos", "Grey", "Ears", "Hear", "Hour", "Hard",
|
||||||
|
"Soap", "Ores", "Cuba", "Snow", "Cops", "Derp", "Eyes", "Oven", "Week", "Clay",
|
||||||
|
"Wigs", "Gold", "Asia", "Rain", "Lime", "Time", "Star", "King", "Year", "Gold",
|
||||||
|
"Fork", "Iron", "Elfs", "Suit", "Blue", "Tony", "Salt", "Ants", "Nate", "Mind",
|
||||||
|
"Weed", "Pigs", "Bricks", "Blue", "Pink", "Hide", "Kris", "File", "Yard", "Comb",
|
||||||
|
"Wood", "Lyra", "Frog", "Hats", "Heal", "Feet", "Yoga", "Edit", "Mile", "Paws",
|
||||||
|
"Bird", "Wool", "Fish", "Eels", "Jump", "Arms", "Boom", "View", "Girl", "Tree",
|
||||||
|
"Lion", "Dirt", "Yarn", "Dawn", "Four", "Neck", "June", "Help", "Mail", "Lamp",
|
||||||
|
"Sad", "Sun", "Pan", "Yes", "Dad", "Bat", "Wig", "KFC", "War", "Fan",
|
||||||
|
"Red", "Jam", "Ivy", "Map", "Fur", "Yen", "Hum", "May", "Dog",
|
||||||
|
"One", "Day", "Sky", "Add", "Orb", "Hip", "Sew", "Act", "Ice",
|
||||||
|
"Two", "Gum", "Cow", "Moo", "Bee", "Ape", "Zoo", "Pit", "Hat",
|
||||||
|
"Six", "Gym", "Rat", "Mow", "Pot", "Dot", "Paw", "Hen", "Bed",
|
||||||
|
"Ten", "Art", "Bag", "Mob", "End", "Egg", "Saw", "Law", "Fog",
|
||||||
|
"Fly", "Boy", "Rag", "New", "Jet", "Pet", "Tin", "Pen", "Car",
|
||||||
|
"Old", "Age", "TNT", "Leg", "Axe", "UFO", "Rap", "Wet", "Tie",
|
||||||
|
"May", "Gas", "Hue", "Wax", "Toy", "Lay", "Pop", "Dry", "Sea",
|
||||||
|
"See", "Ash", "Mom", "Box", "Key", "Fat", "Spy"};
|
||||||
|
|
||||||
|
private ArcadeManager _manager;
|
||||||
|
|
||||||
|
private MinionType _type;
|
||||||
|
private Entity _entity;
|
||||||
|
private String _name;
|
||||||
|
private Location _location;
|
||||||
|
private Location _target;
|
||||||
|
private GameTeam _team;
|
||||||
|
private Player _player;
|
||||||
|
private Player _killer;
|
||||||
|
private Location _lastNameChanged;
|
||||||
|
private Hologram _hologram;
|
||||||
|
private int _money;
|
||||||
|
private float _walkSpeed;
|
||||||
|
private boolean _spawned;
|
||||||
|
private double _tagHight;
|
||||||
|
private boolean _moving;
|
||||||
|
|
||||||
|
private int _size;
|
||||||
|
|
||||||
|
private int _spawnID;
|
||||||
|
|
||||||
|
private boolean _die;
|
||||||
|
private boolean _killed;
|
||||||
|
private int _frame;
|
||||||
|
private int _lives;
|
||||||
|
|
||||||
|
public Minion(ArcadeManager manager, Location location, Location target, GameTeam team, int spawnID)
|
||||||
|
{
|
||||||
|
this(manager, location, target, team, null, true, null, spawnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Minion(ArcadeManager manager, Location location, Location target, GameTeam team, Player player, boolean spawn, MinionType type, int spawnID)
|
||||||
|
{
|
||||||
|
_manager = manager;
|
||||||
|
|
||||||
|
_type = type;
|
||||||
|
_moving = true;
|
||||||
|
if(_type == null)
|
||||||
|
_type = randomType();
|
||||||
|
|
||||||
|
_walkSpeed = _type.getWalkSpeed();
|
||||||
|
_tagHight = _type.getTagHight();
|
||||||
|
_die = false;
|
||||||
|
_killed = false;
|
||||||
|
_frame = 0;
|
||||||
|
_entity = null;
|
||||||
|
_team = team;
|
||||||
|
_player = player;
|
||||||
|
_killer = null;
|
||||||
|
_money = _type.getMoney();
|
||||||
|
_spawnID = spawnID;
|
||||||
|
_size = 10;
|
||||||
|
if(_type == MinionType.WITHER)
|
||||||
|
_size = 0;
|
||||||
|
|
||||||
|
changeRandomName(_type.getMinName(), _type.getMaxName(), true);
|
||||||
|
|
||||||
|
_location = location;
|
||||||
|
_target = target;
|
||||||
|
_spawned = false;
|
||||||
|
_lives = _type.getSize().getLives();
|
||||||
|
if(spawn)
|
||||||
|
spawnMinion();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void spawnMinion()
|
||||||
|
{
|
||||||
|
_entity = _location.getWorld().spawn(_location, Zombie.class);
|
||||||
|
Zombie zombie = (Zombie) _entity;
|
||||||
|
zombie.setRemoveWhenFarAway(false);
|
||||||
|
zombie.setMaxHealth(200);
|
||||||
|
zombie.setHealth(200);
|
||||||
|
zombie.getEquipment().setHelmet(new ItemStack(Material.LEATHER_HELMET));
|
||||||
|
disguiseCreeper();
|
||||||
|
path();
|
||||||
|
_spawned = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Material[] _items = new Material[]{Material.DIAMOND_AXE, Material.IRON_SWORD, Material.CARROT, Material.STONE_SPADE, Material.GOLD_PICKAXE, Material.AIR};
|
||||||
|
|
||||||
|
private void disguiseCreeper()
|
||||||
|
{
|
||||||
|
if (_hologram != null)
|
||||||
|
{
|
||||||
|
_hologram.setText(_team.GetColor() + _name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(_manager.GetGame().GetState() == GameState.Live)
|
||||||
|
{
|
||||||
|
_hologram = new Hologram(_manager.getHologramManager(), _entity.getLocation().add(0, 2.3, 0), _team.GetColor() + _name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_hologram = new Hologram(_manager.getHologramManager(), _entity.getLocation().add(0, 2.3, 0), ChatColor.WHITE + _name);
|
||||||
|
}
|
||||||
|
_hologram.setHologramTarget(Hologram.HologramTarget.WHITELIST);
|
||||||
|
//_hologram.setFollowEntity(_entity);
|
||||||
|
|
||||||
|
for (Player player : _manager.GetGame().GetPlayers(false))
|
||||||
|
{
|
||||||
|
if (_manager.GetGame().GetTeam(player) == _team && _manager.GetGame().GetState() != GameState.Prepare)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
_hologram.addPlayer(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
_hologram.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
for(Class clazz : _type.getDisguiseClasses())
|
||||||
|
{
|
||||||
|
Object disguise = null;
|
||||||
|
Entity ent = null;
|
||||||
|
if(i == 0)
|
||||||
|
{
|
||||||
|
disguise = clazz.getConstructors()[0].newInstance(_entity);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ent = _location.getWorld().spawn(_location, Creeper.class);
|
||||||
|
disguise = clazz.getConstructors()[0].newInstance(ent);
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
clazz.getMethod("setHelmet", ItemStack.class).invoke(disguise, new ItemStack(Material.LEATHER_HELMET));
|
||||||
|
clazz.getMethod("setHeldItem", ItemStack.class).invoke(disguise, new ItemStack(_items[UtilMath.r(_items.length)]));
|
||||||
|
}
|
||||||
|
catch (Exception e) {}
|
||||||
|
if(disguise instanceof DisguiseZombie && i > 0)
|
||||||
|
{
|
||||||
|
DisguiseZombie zombie = (DisguiseZombie) disguise;
|
||||||
|
zombie.SetBaby(true);
|
||||||
|
}
|
||||||
|
if(disguise instanceof DisguiseSlime)
|
||||||
|
{
|
||||||
|
DisguiseSlime slime = (DisguiseSlime) disguise;
|
||||||
|
slime.SetSize(_size);
|
||||||
|
}
|
||||||
|
if(disguise instanceof DisguiseWither)
|
||||||
|
{
|
||||||
|
DisguiseWither wither = (DisguiseWither) disguise;
|
||||||
|
wither.setInvulTime(_size);
|
||||||
|
}
|
||||||
|
_entity.setPassenger(ent);
|
||||||
|
_manager.GetDisguise().disguise((DisguiseBase)disguise);
|
||||||
|
_manager.GetDisguise().updateDisguise((DisguiseBase)disguise);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e) {}
|
||||||
|
_hologram.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void path()
|
||||||
|
{
|
||||||
|
UtilEnt.Vegetate(_entity);
|
||||||
|
UtilEnt.silence(_entity, true);
|
||||||
|
UtilEnt.ghost(_entity, true, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private MinionType randomType()
|
||||||
|
{
|
||||||
|
if(System.currentTimeMillis() - _manager.GetGame().GetStateTime() <= 30000)
|
||||||
|
{
|
||||||
|
return MinionSize.EASY.getRandomType();
|
||||||
|
}
|
||||||
|
if(System.currentTimeMillis() - _manager.GetGame().GetStateTime() <= 60000)
|
||||||
|
{
|
||||||
|
int rdm = UtilMath.r(2);
|
||||||
|
if(rdm == 0)
|
||||||
|
return MinionSize.MEDIUM.getRandomType();
|
||||||
|
else
|
||||||
|
return MinionSize.EASY.getRandomType();
|
||||||
|
}
|
||||||
|
int rdm = UtilMath.r(MinionType.values().length);
|
||||||
|
int freak = UtilMath.r(1000);
|
||||||
|
if(freak <= 10)
|
||||||
|
{
|
||||||
|
ArrayList<MinionType> minions = new ArrayList<>();
|
||||||
|
for(MinionType type : MinionType.values())
|
||||||
|
{
|
||||||
|
if(type.getSize() == MinionSize.FREAK)
|
||||||
|
minions.add(type);
|
||||||
|
}
|
||||||
|
return minions.get(UtilMath.r(minions.size()));
|
||||||
|
}
|
||||||
|
for(MinionType type : MinionType.values())
|
||||||
|
{
|
||||||
|
if(type.ordinal() == rdm)
|
||||||
|
{
|
||||||
|
if(type.getSize() != MinionSize.FREAK && type.getSize() != MinionSize.BOSS)
|
||||||
|
{
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return randomType();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasLives()
|
||||||
|
{
|
||||||
|
return _lives > 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void despawn(Player player, boolean killed, boolean clean)
|
||||||
|
{
|
||||||
|
_money = _money + 1;
|
||||||
|
if(_lives > 1)
|
||||||
|
{
|
||||||
|
_lives = _lives - 1;
|
||||||
|
changeRandomName(_name.length()+1, _name.length()+1, false);
|
||||||
|
if(_type == MinionType.WITHER)
|
||||||
|
{
|
||||||
|
_size = _size + 100;
|
||||||
|
_tagHight = _tagHight - 0.15;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_size = _size -1;
|
||||||
|
_tagHight = _tagHight - 0.1;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_killed = killed;
|
||||||
|
_killer = player;
|
||||||
|
_die = true;
|
||||||
|
_hologram.stop();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if(_entity.getPassenger() != null)
|
||||||
|
{
|
||||||
|
if(!clean)
|
||||||
|
((Zombie) _entity.getPassenger()).damage(10000);
|
||||||
|
else
|
||||||
|
_entity.getPassenger().remove();
|
||||||
|
}
|
||||||
|
if(!clean)
|
||||||
|
((Zombie) _entity).damage(10000);
|
||||||
|
else
|
||||||
|
_entity.remove();
|
||||||
|
|
||||||
|
if(!_entity.isDead())
|
||||||
|
_entity.remove();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void despawn(Player player, boolean killed)
|
||||||
|
{
|
||||||
|
despawn(player, killed, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void animation()
|
||||||
|
{
|
||||||
|
if(!_die)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(_killed)
|
||||||
|
{
|
||||||
|
if(_frame <= 30)
|
||||||
|
{
|
||||||
|
if(_team.GetColor() == ChatColor.RED)
|
||||||
|
{
|
||||||
|
double radius = _frame / 20D;
|
||||||
|
int particleAmount = _frame / 2;
|
||||||
|
for (int e = 0; e < particleAmount; e++)
|
||||||
|
{
|
||||||
|
double xDiff = Math.sin(e/(double)particleAmount * 2 * Math.PI) * radius;
|
||||||
|
double zDiff = Math.cos(e/(double)particleAmount * 2 * Math.PI) * radius;
|
||||||
|
|
||||||
|
Location location = _entity.getLocation().clone().add(0.5, 0, 0.5).add(xDiff, particleAmount/10, zDiff);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
UtilParticle.PlayParticle(UtilParticle.ParticleType.RED_DUST, location, 0, 0, 0, 0, 1, ViewDist.NORMAL, _player);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
double radius = _frame / 20D;
|
||||||
|
int particleAmount = _frame / 2;
|
||||||
|
for (int e = 0; e < particleAmount; e++)
|
||||||
|
{
|
||||||
|
double xDiff = Math.sin(e/(double)particleAmount * 2 * Math.PI) * radius;
|
||||||
|
double zDiff = Math.cos(e/(double)particleAmount * 2 * Math.PI) * radius;
|
||||||
|
|
||||||
|
Location location = _entity.getLocation().clone().add(0.5, 0, 0.5).add(xDiff, particleAmount/10, zDiff);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
UtilParticle.PlayParticle(ParticleType.RED_DUST, location, -1, 1, 1, 1, 0,ViewDist.NORMAL, _player);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(_frame <= 1)
|
||||||
|
{
|
||||||
|
UtilFirework.playFirework(_entity.getLocation().add(0.5, 0.5, 0.5), Type.BALL_LARGE, Color.GREEN, true, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(_frame == 31)
|
||||||
|
{
|
||||||
|
_die = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
_frame++;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void changeName(String name)
|
||||||
|
{
|
||||||
|
_name = name;
|
||||||
|
Location loc = _entity.getLocation();
|
||||||
|
_lastNameChanged = loc;
|
||||||
|
disguiseCreeper();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void changeRandomName(int min, int max, boolean spawned)
|
||||||
|
{
|
||||||
|
ArrayList<String> tempList = new ArrayList<>();
|
||||||
|
for(String names : NAMES)
|
||||||
|
tempList.add(names);
|
||||||
|
|
||||||
|
Collections.shuffle(tempList);
|
||||||
|
for(String str : tempList)
|
||||||
|
{
|
||||||
|
if(str.length() >= min && str.length() <= max)
|
||||||
|
{
|
||||||
|
if(!spawned)
|
||||||
|
changeName(str);
|
||||||
|
else
|
||||||
|
_name = str;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isNameChangeable()
|
||||||
|
{
|
||||||
|
if(_lastNameChanged == null)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if(_entity.getLocation().getBlockX() != _lastNameChanged.getBlockX())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if(_entity.getLocation().getBlockZ() != _lastNameChanged.getBlockZ())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWalkSpeed(float speed)
|
||||||
|
{
|
||||||
|
_walkSpeed = speed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void increaseWalkSpeed(float speed)
|
||||||
|
{
|
||||||
|
float oldSpeed = _walkSpeed;
|
||||||
|
_walkSpeed = oldSpeed + speed;
|
||||||
|
if(_walkSpeed <= 0.5)
|
||||||
|
_walkSpeed = 0.6F;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Location getTarget()
|
||||||
|
{
|
||||||
|
return _target;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSpawned()
|
||||||
|
{
|
||||||
|
return _spawned;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Entity getEntity()
|
||||||
|
{
|
||||||
|
return _entity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MinionType getType()
|
||||||
|
{
|
||||||
|
return _type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMoney()
|
||||||
|
{
|
||||||
|
return _money;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player getKiller()
|
||||||
|
{
|
||||||
|
return _killer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player getPlayer()
|
||||||
|
{
|
||||||
|
return _player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GameTeam getTeam()
|
||||||
|
{
|
||||||
|
return _team;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
return _name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getWalkSpeed()
|
||||||
|
{
|
||||||
|
return _walkSpeed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Location getLastNameChanged()
|
||||||
|
{
|
||||||
|
return _lastNameChanged;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Hologram getHologram()
|
||||||
|
{
|
||||||
|
return _hologram;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSpawnID()
|
||||||
|
{
|
||||||
|
return _spawnID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getTagHight()
|
||||||
|
{
|
||||||
|
return _tagHight;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTarget(Location location)
|
||||||
|
{
|
||||||
|
_target = location;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMoving(boolean moving)
|
||||||
|
{
|
||||||
|
_moving = moving;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isMoving()
|
||||||
|
{
|
||||||
|
return _moving;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,66 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars;
|
||||||
|
|
||||||
|
import nautilus.game.arcade.game.games.typewars.TypeWars.KillType;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
public class MinionKillEvent extends Event implements Cancellable
|
||||||
|
{
|
||||||
|
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList()
|
||||||
|
{
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers()
|
||||||
|
{
|
||||||
|
return getHandlerList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Player _player;
|
||||||
|
private Minion _minion;
|
||||||
|
private KillType _type;
|
||||||
|
|
||||||
|
private boolean _canceled;
|
||||||
|
|
||||||
|
public MinionKillEvent(Player player, Minion minion, KillType type)
|
||||||
|
{
|
||||||
|
_player = player;
|
||||||
|
_minion = minion;
|
||||||
|
_type = type;
|
||||||
|
_canceled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player getPlayer()
|
||||||
|
{
|
||||||
|
return _player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Minion getMinion()
|
||||||
|
{
|
||||||
|
return _minion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public KillType getType()
|
||||||
|
{
|
||||||
|
return _type;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean cancel)
|
||||||
|
{
|
||||||
|
_canceled = cancel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isCancelled()
|
||||||
|
{
|
||||||
|
return _canceled;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,73 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.itemstack.ItemStackFactory;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public enum MinionSize
|
||||||
|
{
|
||||||
|
EASY("Easy", 2, ItemStackFactory.Instance.CreateStack(Material.MONSTER_EGG, (byte) 0, 1, (short) 55, "", new String[]{}), 1, 1),
|
||||||
|
MEDIUM("Medium", 4, ItemStackFactory.Instance.CreateStack(Material.MONSTER_EGG, (byte) 0, 1, (short) 61, "", new String[]{}), 1, 2),
|
||||||
|
HARD("Hard", 6, ItemStackFactory.Instance.CreateStack(Material.MONSTER_EGG, (byte) 0, 1, (short) 52, "", new String[]{}), 1, 4),
|
||||||
|
FREAK("Freak", 10000, new ItemStack(Material.MONSTER_EGG), 1, 999999),
|
||||||
|
BOSS("Boss", 10000, new ItemStack(Material.MONSTER_EGG), 7, 999999999);
|
||||||
|
|
||||||
|
private int _cost;
|
||||||
|
private ItemStack _displayItem;
|
||||||
|
private int _lives;
|
||||||
|
private int _gemReward;
|
||||||
|
|
||||||
|
private String _displayName;
|
||||||
|
|
||||||
|
private MinionSize(String name, int cost, ItemStack displayItem, int lives, int gemReward)
|
||||||
|
{
|
||||||
|
_displayName = name;
|
||||||
|
_cost = cost;
|
||||||
|
_displayItem = displayItem;
|
||||||
|
_lives = lives;
|
||||||
|
_gemReward = gemReward;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCost()
|
||||||
|
{
|
||||||
|
return _cost;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack getDisplayItem()
|
||||||
|
{
|
||||||
|
return _displayItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDisplayName()
|
||||||
|
{
|
||||||
|
return _displayName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getGemReward()
|
||||||
|
{
|
||||||
|
return _gemReward;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MinionType getRandomType()
|
||||||
|
{
|
||||||
|
ArrayList<MinionType> minionList = new ArrayList<>();
|
||||||
|
for(MinionType type : MinionType.values())
|
||||||
|
{
|
||||||
|
if(type.getSize() == this)
|
||||||
|
{
|
||||||
|
minionList.add(type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return minionList.get(UtilMath.r(minionList.size()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getLives()
|
||||||
|
{
|
||||||
|
return _lives;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,123 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars;
|
||||||
|
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseBase;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseChicken;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseCow;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseCreeper;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseEnderman;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseHorse;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseIronGolem;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseMagmaCube;
|
||||||
|
import mineplex.core.disguise.disguises.DisguisePig;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseSkeleton;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseSlime;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseSpider;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseWither;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseWolf;
|
||||||
|
import mineplex.core.disguise.disguises.DisguiseZombie;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public enum MinionType
|
||||||
|
{
|
||||||
|
|
||||||
|
CHICKEN(10, MinionSize.EASY, EntityType.CHICKEN, 3, 3, (float) (0.7 + (0.1*7)), 1, -0.5D, Material.EGG, DisguiseChicken.class),
|
||||||
|
PIG(10, MinionSize.EASY, EntityType.PIG, 3, 6, (float) (0.7 + (0.1*7)), 1, -0.5D, Material.PORK, DisguisePig.class),
|
||||||
|
COW(10, MinionSize.EASY, EntityType.COW, 6, 9, (float) (0.7 + (0.1*7)), 1, -0.5D, Material.COOKED_BEEF, DisguiseCow.class),
|
||||||
|
|
||||||
|
ZOMBIE(10, MinionSize.MEDIUM, EntityType.ZOMBIE, 9, 12, (float) (0.7 + (0.1*2)), 2, 0D, Material.ROTTEN_FLESH, DisguiseZombie.class),
|
||||||
|
SPIDER(10, MinionSize.MEDIUM, EntityType.SPIDER, 6, 9, (float) (0.7 + (0.1*5)), 2, 0D, Material.SPIDER_EYE, DisguiseSpider.class),
|
||||||
|
WOLF(10, MinionSize.MEDIUM, EntityType.WOLF, 3, 6, (float) (0.7 + (0.1*8)), 2, -1D, Material.COOKED_BEEF, DisguiseWolf.class),
|
||||||
|
|
||||||
|
IRON_GOLEM(10, MinionSize.HARD, EntityType.IRON_GOLEM, 10, 13,(float) (0.7 + (0.1*3)), 3, 0.5D, Material.IRON_INGOT, DisguiseIronGolem.class),
|
||||||
|
HORSE(10, MinionSize.HARD, EntityType.HORSE, 6, 9, (float) (0.7 + (0.1*10)), 3, 0D, Material.APPLE, DisguiseHorse.class),
|
||||||
|
ENDERMAN(10, MinionSize.HARD, EntityType.ENDERMAN, 9, 12, (float) (0.7 + (0.1*4)), 3, 1D, Material.ENDER_STONE, DisguiseEnderman.class),
|
||||||
|
|
||||||
|
WITHER(1, MinionSize.BOSS, EntityType.WITHER, 5, 5, (float) (0.7 + (0.1*2)), 1, 2D, Material.NETHER_STAR, DisguiseWither.class),
|
||||||
|
SLIME(1, MinionSize.BOSS, EntityType.SLIME, 5, 5, (float) (0.7 + (0.1*2)), 1, 3D, Material.SLIME_BALL, DisguiseSlime.class),
|
||||||
|
|
||||||
|
SPIDER_JOKEY(1, MinionSize.FREAK, EntityType.SPIDER, 10, 13, (float) (0.7 + (0.1*7)), 10, 1D, Material.APPLE, DisguiseSpider.class, DisguiseSkeleton.class),
|
||||||
|
CHICKEN_JOKEY(1, MinionSize.FREAK, EntityType.CHICKEN, 10, 13, (float) (0.7 + (0.1*7)), 10, 1D, Material.APPLE, DisguiseChicken.class, DisguiseZombie.class);
|
||||||
|
|
||||||
|
private Class<? extends DisguiseBase>[] _disguiseClasses;
|
||||||
|
|
||||||
|
private EntityType _type;
|
||||||
|
private int _minName;
|
||||||
|
private int _maxName;
|
||||||
|
private float _walkSpeed;
|
||||||
|
private int _money;
|
||||||
|
|
||||||
|
private MinionSize _size;
|
||||||
|
|
||||||
|
private double _tagHight;
|
||||||
|
private Material _displayItem;
|
||||||
|
|
||||||
|
private int _chance;
|
||||||
|
|
||||||
|
private MinionType(int chance, MinionSize size, EntityType type, int minName, int maxName, float walkSpeed, int money, double tagHight, Material displayItem,Class<? extends DisguiseBase>... disguiseClasses)
|
||||||
|
{
|
||||||
|
_disguiseClasses = disguiseClasses;
|
||||||
|
_type = type;
|
||||||
|
_minName = minName;
|
||||||
|
_maxName = maxName;
|
||||||
|
_walkSpeed = walkSpeed;
|
||||||
|
_money = money;
|
||||||
|
_displayItem = displayItem;
|
||||||
|
_tagHight = tagHight;
|
||||||
|
_chance = chance;
|
||||||
|
_size = size;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityType getType()
|
||||||
|
{
|
||||||
|
return _type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMinName()
|
||||||
|
{
|
||||||
|
return _minName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMaxName()
|
||||||
|
{
|
||||||
|
return _maxName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getWalkSpeed()
|
||||||
|
{
|
||||||
|
return _walkSpeed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMoney()
|
||||||
|
{
|
||||||
|
return _money;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Material getDisplayItem()
|
||||||
|
{
|
||||||
|
return _displayItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Class<? extends DisguiseBase>[] getDisguiseClasses()
|
||||||
|
{
|
||||||
|
return _disguiseClasses;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getTagHight()
|
||||||
|
{
|
||||||
|
return _tagHight;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getChance()
|
||||||
|
{
|
||||||
|
return _chance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MinionSize getSize()
|
||||||
|
{
|
||||||
|
return _size;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,212 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.F;
|
||||||
|
import mineplex.core.common.util.UtilBlock;
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.common.util.UtilTime;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilShapes;
|
||||||
|
import mineplex.core.common.util.UtilTextMiddle;
|
||||||
|
import mineplex.core.recharge.Recharge;
|
||||||
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
|
import nautilus.game.arcade.game.GameTeam;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public abstract class Spell
|
||||||
|
{
|
||||||
|
|
||||||
|
private ArrayList<Player> _playerUses;
|
||||||
|
|
||||||
|
private ArcadeManager _manager;
|
||||||
|
private TypeWars _typeWars;
|
||||||
|
private String _name;
|
||||||
|
private int _cost;
|
||||||
|
private Material _material;
|
||||||
|
private Long _recharge;
|
||||||
|
private boolean _singleUse;
|
||||||
|
private long _updateDelay;
|
||||||
|
|
||||||
|
private HashMap<GameTeam, Long> _lastUsed;
|
||||||
|
private long _useDelay;
|
||||||
|
|
||||||
|
public Spell(ArcadeManager manager, String name, int cost, Material material, Long recharge, int updateDelay, long useDelay, boolean singleUse)
|
||||||
|
{
|
||||||
|
_manager = manager;
|
||||||
|
_name = name;
|
||||||
|
_cost = cost;
|
||||||
|
_material = material;
|
||||||
|
_recharge = recharge;
|
||||||
|
_singleUse = singleUse;
|
||||||
|
_updateDelay = updateDelay;
|
||||||
|
_playerUses = new ArrayList<>();
|
||||||
|
_lastUsed = new HashMap<>();
|
||||||
|
_updateDelay = useDelay;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void prepareExecution(final Player player)
|
||||||
|
{
|
||||||
|
if(isSingleUse())
|
||||||
|
{
|
||||||
|
if(_playerUses.contains(player))
|
||||||
|
{
|
||||||
|
UtilTextMiddle.display("", ChatColor.GRAY + "You can't use this spell anymore.", player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
GameTeam team = getManager().GetGame().GetTeam(player);
|
||||||
|
if(_lastUsed.containsKey(team))
|
||||||
|
{
|
||||||
|
if(!UtilTime.elapsed(_lastUsed.get(team), _useDelay))
|
||||||
|
{
|
||||||
|
UtilTextMiddle.display("", ChatColor.GRAY + "This Spell cant be used at the moment.", player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_lastUsed.put(team, System.currentTimeMillis());
|
||||||
|
|
||||||
|
_typeWars = (TypeWars) _manager.GetGame();
|
||||||
|
if(_typeWars.getMoneyMap().get(player) < getCost())
|
||||||
|
{
|
||||||
|
UtilTextMiddle.display("", ChatColor.GRAY + "You dont have enough Money to use that spell.", player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(!Recharge.Instance.usable(player, getName(), true))
|
||||||
|
return;
|
||||||
|
|
||||||
|
UtilTextMiddle.display(ChatColor.GREEN + "-$" + getCost(), ChatColor.GRAY + "You used " + F.game(getName()), player);
|
||||||
|
final Spell spell = this;
|
||||||
|
|
||||||
|
new Thread(new Runnable()
|
||||||
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
Location loc = player.getLastTwoTargetBlocks(UtilBlock.blockAirFoliageSet, 80).get(0).getLocation().add(0.5, 0.5, 0.5);
|
||||||
|
if(trail() != null)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
for (Location location : UtilShapes.getLinesDistancedPoints(player.getEyeLocation().subtract(0, 0.1, 0), loc, 0.6))
|
||||||
|
{
|
||||||
|
if(getManager().GetGame().GetTeam(player).GetColor() == ChatColor.RED)
|
||||||
|
{
|
||||||
|
UtilParticle.PlayParticle(trail(), location, 0, 0, 0, 0, 1, ViewDist.NORMAL, UtilServer.getPlayers());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UtilParticle.PlayParticle(trail(), location, -1, 1, 1, 1, 0, ViewDist.NORMAL, UtilServer.getPlayers());
|
||||||
|
}
|
||||||
|
trailAnimation(location, i);
|
||||||
|
location.getWorld().playSound(location, sound(), 1, 1);
|
||||||
|
i++;
|
||||||
|
if(i > 30)
|
||||||
|
i = 0;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Thread.sleep(_updateDelay);
|
||||||
|
}
|
||||||
|
catch (InterruptedException e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(hit() != null)
|
||||||
|
UtilParticle.PlayParticle(hit(), loc, 0, 0, 0, 0, 1, ViewDist.NORMAL, UtilServer.getPlayers());
|
||||||
|
|
||||||
|
if(execute(player, loc))
|
||||||
|
{
|
||||||
|
Recharge.Instance.use(player, getName(), getRecharge(), false, true);
|
||||||
|
int money = ((TypeWars) _manager.GetGame()).getMoneyMap().get(player);
|
||||||
|
((TypeWars) _manager.GetGame()).getMoneyMap().put(player, money - getCost());
|
||||||
|
if(!_playerUses.contains(player))
|
||||||
|
_playerUses.add(player);
|
||||||
|
|
||||||
|
Bukkit.getPluginManager().callEvent(new ActivateSpellEvent(player, spell));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UtilPlayer.message(player, F.main("Game", "Error while using spell."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}).start();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public ParticleType trail()
|
||||||
|
{
|
||||||
|
return ParticleType.RED_DUST;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ParticleType hit()
|
||||||
|
{
|
||||||
|
return ParticleType.EXPLODE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Sound sound()
|
||||||
|
{
|
||||||
|
return Sound.CLICK;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasUsed(Player player)
|
||||||
|
{
|
||||||
|
return _playerUses.contains(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void trailAnimation(Location location, int frame) {}
|
||||||
|
|
||||||
|
public abstract boolean execute(Player player, Location location);
|
||||||
|
|
||||||
|
public ArcadeManager getManager()
|
||||||
|
{
|
||||||
|
return _manager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TypeWars getTypeWars()
|
||||||
|
{
|
||||||
|
return _typeWars;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
return _name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCost()
|
||||||
|
{
|
||||||
|
return _cost;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Material getMaterial()
|
||||||
|
{
|
||||||
|
return _material;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getRecharge()
|
||||||
|
{
|
||||||
|
return _recharge;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSingleUse()
|
||||||
|
{
|
||||||
|
return _singleUse;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
public class SummonMinionEvent extends Event
|
||||||
|
{
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList()
|
||||||
|
{
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers()
|
||||||
|
{
|
||||||
|
return getHandlerList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Player _player;
|
||||||
|
private Minion _minion;
|
||||||
|
|
||||||
|
public SummonMinionEvent(Player player, Minion minion)
|
||||||
|
{
|
||||||
|
_player = player;
|
||||||
|
_minion = minion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player getPlayer()
|
||||||
|
{
|
||||||
|
return _player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Minion getMinion()
|
||||||
|
{
|
||||||
|
return _minion;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
public class TypeAttemptEvent extends Event
|
||||||
|
{
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList()
|
||||||
|
{
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers()
|
||||||
|
{
|
||||||
|
return getHandlerList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Player _player;
|
||||||
|
private String _attempt;
|
||||||
|
private boolean _success;
|
||||||
|
|
||||||
|
public TypeAttemptEvent(Player player, String attempt, boolean sucess)
|
||||||
|
{
|
||||||
|
_player = player;
|
||||||
|
_attempt = attempt;
|
||||||
|
_success = sucess;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player getPlayer()
|
||||||
|
{
|
||||||
|
return _player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAttempt()
|
||||||
|
{
|
||||||
|
return _attempt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSuccessful()
|
||||||
|
{
|
||||||
|
return _success;
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,36 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.kits;
|
||||||
|
|
||||||
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Spell;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.spells.SpellGrowthLiner;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.spells.SpellKillEverything;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.spells.SpellMassSlow;
|
||||||
|
import nautilus.game.arcade.kit.KitAvailability;
|
||||||
|
import nautilus.game.arcade.kit.Perk;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public class KitTactician extends KitTypeWarsBase
|
||||||
|
{
|
||||||
|
|
||||||
|
public KitTactician(ArcadeManager manager)
|
||||||
|
{
|
||||||
|
super(manager, "Alpha. Tactician", KitAvailability.Achievement,
|
||||||
|
new String[]
|
||||||
|
{
|
||||||
|
"The ahlpabet Tactician",
|
||||||
|
"is known for using deffensive spells"
|
||||||
|
},
|
||||||
|
new Perk[]
|
||||||
|
{
|
||||||
|
new Perk("Growth Line", new String[]{"Creates a line that grows your minions names"}){},
|
||||||
|
new Perk("Mass Slow", new String[]{"Slows down all enemy Minions"}){},
|
||||||
|
new Perk("Nuke Spell", new String[]{"Kill all enemy minions. One use."}){}
|
||||||
|
},
|
||||||
|
EntityType.SKELETON, new ItemStack(Material.PAPER),
|
||||||
|
new Spell[]{new SpellGrowthLiner(manager), new SpellMassSlow(manager), new SpellKillEverything(manager)});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,97 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.kits;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.itemstack.ItemStackFactory;
|
||||||
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.MinionSize;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Spell;
|
||||||
|
import nautilus.game.arcade.kit.Kit;
|
||||||
|
import nautilus.game.arcade.kit.KitAvailability;
|
||||||
|
import nautilus.game.arcade.kit.Perk;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.block.Action;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public abstract class KitTypeWarsBase extends Kit
|
||||||
|
{
|
||||||
|
|
||||||
|
private Spell[] _spells;
|
||||||
|
|
||||||
|
public KitTypeWarsBase(ArcadeManager manager, String name, KitAvailability kitAvailability, int cost, String[] kitDesc, Perk[] kitPerks, EntityType entityType, ItemStack itemInHand, Spell[] spells)
|
||||||
|
{
|
||||||
|
super(manager, name, kitAvailability, cost, kitDesc, kitPerks, entityType, itemInHand);
|
||||||
|
_spells = spells;
|
||||||
|
}
|
||||||
|
|
||||||
|
public KitTypeWarsBase(ArcadeManager manager, String name, KitAvailability kitAvailability, String[] kitDesc, Perk[] kitPerks, EntityType entityType, ItemStack itemInHand, Spell[] spells)
|
||||||
|
{
|
||||||
|
super(manager, name, kitAvailability, kitDesc, kitPerks, entityType, itemInHand);
|
||||||
|
_spells = spells;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void GiveItems(Player player)
|
||||||
|
{
|
||||||
|
int e = 0;
|
||||||
|
for(Spell spell : getSpells())
|
||||||
|
{
|
||||||
|
player.getInventory().setItem(e, ItemStackFactory.Instance.CreateStack(spell.getMaterial(), (byte) 0, 1, C.cYellow + "Activate " + spell.getName() + " Cost: " + spell.getCost()));
|
||||||
|
e++;
|
||||||
|
}
|
||||||
|
|
||||||
|
int i = 4;
|
||||||
|
for(MinionSize type : MinionSize.values())
|
||||||
|
{
|
||||||
|
if(type != MinionSize.BOSS && type != MinionSize.FREAK)
|
||||||
|
{
|
||||||
|
player.getInventory().setItem(i, ItemStackFactory.Instance.CreateStack(type.getDisplayItem().getType(), (byte) 0, 1, (short) type.getDisplayItem().getDurability(), C.cYellow + "Spawn " + type.getDisplayName() + " Minion Cost: " + type.getCost(), new String[]{}));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Spell[] getSpells()
|
||||||
|
{
|
||||||
|
return _spells;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void activateSpell(PlayerInteractEvent event)
|
||||||
|
{
|
||||||
|
if(!Manager.GetGame().IsLive())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(!Manager.GetGame().IsPlaying(event.getPlayer()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(event.getPlayer().getItemInHand() == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(!Manager.GetGame().GetKit(event.getPlayer()).GetName().equalsIgnoreCase(GetName()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
executeSpell(event.getPlayer(), event.getPlayer().getItemInHand().getType());
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean executeSpell(Player player, Material mat)
|
||||||
|
{
|
||||||
|
for(Spell spell : getSpells())
|
||||||
|
{
|
||||||
|
if(spell.getMaterial() == mat)
|
||||||
|
{
|
||||||
|
spell.prepareExecution(player);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.kits;
|
||||||
|
|
||||||
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Spell;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.spells.SpellFirebomb;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.spells.SpellKillEverything;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.spells.SpellSniper;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.spells.SpellSpeedUp;
|
||||||
|
import nautilus.game.arcade.kit.KitAvailability;
|
||||||
|
import nautilus.game.arcade.kit.Perk;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public class KitTyper extends KitTypeWarsBase
|
||||||
|
{
|
||||||
|
|
||||||
|
public KitTyper(ArcadeManager manager)
|
||||||
|
{
|
||||||
|
super(manager, "Typer", KitAvailability.Free,
|
||||||
|
|
||||||
|
new String[]
|
||||||
|
{
|
||||||
|
"This is the fastest typer ",
|
||||||
|
"in the land of Mineplex"
|
||||||
|
},
|
||||||
|
new Perk[]
|
||||||
|
{
|
||||||
|
new Perk("Fire Bomb", new String[]{"Kills small and medium sized enemies."}){},
|
||||||
|
new Perk("Sniper spell", new String[]{"Shoot a minion and kill it"}){},
|
||||||
|
new Perk("Zombie Smash", new String[]{"Kill all enemy minions. One use."}){}
|
||||||
|
},
|
||||||
|
EntityType.ZOMBIE, new ItemStack(Material.FEATHER),
|
||||||
|
new Spell[]{new SpellFirebomb(manager), new SpellSniper(manager), new SpellKillEverything(manager)});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.kits;
|
||||||
|
|
||||||
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Spell;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.spells.SpellKillEverything;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.spells.SpellShrinkLiner;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.spells.SpellSniper;
|
||||||
|
import nautilus.game.arcade.kit.KitAvailability;
|
||||||
|
import nautilus.game.arcade.kit.Perk;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public class KitWarrior extends KitTypeWarsBase
|
||||||
|
{
|
||||||
|
|
||||||
|
public KitWarrior(ArcadeManager manager)
|
||||||
|
{
|
||||||
|
super(manager, "Letter Warrior", KitAvailability.Gem, 2000,
|
||||||
|
new String[]
|
||||||
|
{
|
||||||
|
"This Legendary Warrior",
|
||||||
|
"has many Offensive spells"
|
||||||
|
},
|
||||||
|
new Perk[]
|
||||||
|
{
|
||||||
|
new Perk("Shrinking Line", new String[]{"Creates a line that shortens enemy names"}){},
|
||||||
|
new Perk("Sniper spell", new String[]{"Shoot a minion and kill it"}){},
|
||||||
|
new Perk("Nuke Spell", new String[]{"Kill all enemy minions. One use."}){}
|
||||||
|
},
|
||||||
|
EntityType.SKELETON, new ItemStack(Material.STONE_SWORD),
|
||||||
|
new Spell[]{new SpellShrinkLiner(manager), new SpellSniper(manager), new SpellKillEverything(manager)});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.spells;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.F;
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Minion;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.MinionSize;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Spell;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class SpellFirebomb extends Spell
|
||||||
|
{
|
||||||
|
|
||||||
|
public SpellFirebomb(ArcadeManager manager)
|
||||||
|
{
|
||||||
|
super(manager, "Firebomb", 4, Material.BLAZE_POWDER, 2000L, 5, 0, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean execute(Player player, Location location)
|
||||||
|
{
|
||||||
|
Iterator<Minion> minionIterator = getTypeWars().getActiveMinions().iterator();
|
||||||
|
while(minionIterator.hasNext())
|
||||||
|
{
|
||||||
|
Minion minion = minionIterator.next();
|
||||||
|
|
||||||
|
if(UtilMath.offset2d(minion.getEntity().getLocation(), location) > 3)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(getTypeWars().GetTeam(player) == minion.getTeam())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(minion.getType().getSize() != MinionSize.EASY)
|
||||||
|
{
|
||||||
|
UtilPlayer.message(player, F.main("Game", F.game(minion.getName()) + " is to strong to be killed with that."));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
minion.despawn(player, true);
|
||||||
|
if(!minion.hasLives())
|
||||||
|
{
|
||||||
|
minionIterator.remove();
|
||||||
|
getTypeWars().getDeadMinions().add(minion);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ParticleType hit()
|
||||||
|
{
|
||||||
|
return ParticleType.HUGE_EXPLOSION;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,135 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.spells;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.UtilBlock;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Spell;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class SpellGrowthLiner extends Spell
|
||||||
|
{
|
||||||
|
|
||||||
|
public SpellGrowthLiner(ArcadeManager manager)
|
||||||
|
{
|
||||||
|
super(manager, "Growth Line", 7, Material.STICK, 2000L, 10, 0, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ParticleType trail()
|
||||||
|
{
|
||||||
|
return ParticleType.FLAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean execute(final Player player, Location location)
|
||||||
|
{
|
||||||
|
final ArrayList<Location> line = getLine(player, location);
|
||||||
|
for(Location loc : line)
|
||||||
|
{
|
||||||
|
getTypeWars().getLineGrowth().get(getManager().GetGame().GetTeam(player)).add(loc);
|
||||||
|
}
|
||||||
|
|
||||||
|
getManager().runSyncLater(new Runnable()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
for(Location loc : line)
|
||||||
|
{
|
||||||
|
getTypeWars().getLineGrowth().get(getManager().GetGame().GetTeam(player)).remove(loc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 180);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ArrayList<Location> getLine(Player player, Location location)
|
||||||
|
{
|
||||||
|
ArrayList<Location> line = new ArrayList<>();
|
||||||
|
ArrayList<Location> spawns = getTypeWars().getMinionSpawns().get(getManager().GetGame().GetTeam(player));
|
||||||
|
for(Location loc : spawns)
|
||||||
|
{
|
||||||
|
if(loc.getBlockX() == location.getBlockX() || loc.getBlockX() == location.getBlockX() - 1 || loc.getBlockX() == location.getBlockX() + 1)
|
||||||
|
{
|
||||||
|
for(Location locs : getTypeWars().getMinionSpawns().get(getManager().GetGame().GetTeam(player)))
|
||||||
|
{
|
||||||
|
Location newLoc = locs.clone();
|
||||||
|
newLoc.setZ(location.getBlockZ());
|
||||||
|
line.add(newLoc);
|
||||||
|
Location pos1 = newLoc.clone().add(1, 0, 0);
|
||||||
|
Location pos2 = newLoc.clone().add(-1, 0, 0);
|
||||||
|
boolean addLoc1 = true;
|
||||||
|
boolean addLoc2 = true;
|
||||||
|
for(Location otherLoc : line)
|
||||||
|
{
|
||||||
|
if(otherLoc.equals(pos1))
|
||||||
|
addLoc1 = false;
|
||||||
|
}
|
||||||
|
for(Location otherLoc : line)
|
||||||
|
{
|
||||||
|
if(otherLoc.equals(pos2))
|
||||||
|
addLoc2 = false;
|
||||||
|
}
|
||||||
|
if(addLoc1)
|
||||||
|
line.add(pos1);
|
||||||
|
|
||||||
|
if(addLoc2)
|
||||||
|
line.add(pos2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(loc.getBlockZ() == location.getBlockZ() || loc.getBlockZ() == location.getBlockZ() - 1 || loc.getBlockZ() == location.getBlockZ() + 1)
|
||||||
|
{
|
||||||
|
for(Location locs : getTypeWars().getMinionSpawns().get(getManager().GetGame().GetTeam(player)))
|
||||||
|
{
|
||||||
|
Location newLoc = locs.clone();
|
||||||
|
newLoc.setX(location.getBlockX());
|
||||||
|
line.add(newLoc);
|
||||||
|
Location pos1 = newLoc.clone().add(0, 0, 1);
|
||||||
|
Location pos2 = newLoc.clone().add(0, 0, -1);
|
||||||
|
boolean addLoc1 = true;
|
||||||
|
boolean addLoc2 = true;
|
||||||
|
for(Location otherLoc : line)
|
||||||
|
{
|
||||||
|
if(otherLoc.equals(pos1))
|
||||||
|
addLoc1 = false;
|
||||||
|
}
|
||||||
|
for(Location otherLoc : line)
|
||||||
|
{
|
||||||
|
if(otherLoc.equals(pos2))
|
||||||
|
addLoc2 = false;
|
||||||
|
}
|
||||||
|
if(addLoc1)
|
||||||
|
line.add(pos1);
|
||||||
|
|
||||||
|
if(addLoc2)
|
||||||
|
line.add(pos2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(Location loc : spawns)
|
||||||
|
{
|
||||||
|
Iterator<Location> locIterator = line.iterator();
|
||||||
|
while(locIterator.hasNext())
|
||||||
|
{
|
||||||
|
Location locs = locIterator.next();
|
||||||
|
if(locs.equals(loc))
|
||||||
|
{
|
||||||
|
locIterator.remove();
|
||||||
|
}
|
||||||
|
if(locs.getBlock().getType() != Material.AIR)
|
||||||
|
locIterator.remove();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,60 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.spells;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilTextMiddle;
|
||||||
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.ActivateNukeSpellEvent;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Minion;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Spell;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class SpellKillEverything extends Spell
|
||||||
|
{
|
||||||
|
|
||||||
|
public SpellKillEverything(ArcadeManager manager)
|
||||||
|
{
|
||||||
|
super(manager, "Zombie Smash", 0, Material.TNT, 1000L, 0, 20000, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ParticleType trail()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ParticleType hit()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean execute(Player player, Location location)
|
||||||
|
{
|
||||||
|
|
||||||
|
UtilTextMiddle.display("", getManager().GetGame().GetTeam(player).GetColor() + player.getName() + " used a Zombie Smash", 0, 40, 0);
|
||||||
|
ArrayList<Minion> minionList = new ArrayList<>();
|
||||||
|
Iterator<Minion> minionIterator = getTypeWars().getActiveMinions().iterator();
|
||||||
|
while(minionIterator.hasNext())
|
||||||
|
{
|
||||||
|
Minion minion = minionIterator.next();
|
||||||
|
|
||||||
|
if(getTypeWars().GetTeam(player) == minion.getTeam())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
minionList.add(minion);
|
||||||
|
}
|
||||||
|
getTypeWars().addNuke(player);
|
||||||
|
Bukkit.getPluginManager().callEvent(new ActivateNukeSpellEvent(player, minionList));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,79 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.spells;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Minion;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Spell;
|
||||||
|
|
||||||
|
public class SpellMassSlow extends Spell
|
||||||
|
{
|
||||||
|
|
||||||
|
public SpellMassSlow(ArcadeManager manager)
|
||||||
|
{
|
||||||
|
super(manager, "Mass Slow spell", 8, Material.ANVIL, 2000L, 0, 0, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ParticleType trail()
|
||||||
|
{
|
||||||
|
return ParticleType.WITCH_MAGIC;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean execute(Player player, Location location)
|
||||||
|
{
|
||||||
|
location.getWorld().playSound(location.clone().add(0.5, 0.5, 0.5), Sound.ENDERDRAGON_DEATH, 10F, 2.0F);
|
||||||
|
|
||||||
|
for(int c = -1; c <= 1; c++)
|
||||||
|
{
|
||||||
|
for(int i = -10; i <= 10; i = i + 2)
|
||||||
|
{
|
||||||
|
for(double x = 0.2; x <= 2; x = x + 0.2)
|
||||||
|
{
|
||||||
|
Location loc = location.clone().add(i + x, 2*(x-1)*(x-1)*(x-1) -2*(x-1), c);
|
||||||
|
loc.add(0, 0.3, 0);
|
||||||
|
UtilParticle.PlayParticle(UtilParticle.ParticleType.HAPPY_VILLAGER, loc, 0, 0, 0, 0, 1, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
|
|
||||||
|
Location otherLocation = location.clone().add(c, 2*(x-1)*(x-1)*(x-1) -2*(x-1), i + x);
|
||||||
|
otherLocation.add(0, 0.3, 0);
|
||||||
|
UtilParticle.PlayParticle(UtilParticle.ParticleType.HAPPY_VILLAGER, otherLocation, 0, 0, 0, 0, 1, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(Minion minion : getTypeWars().getActiveMinions())
|
||||||
|
{
|
||||||
|
if(getTypeWars().GetTeam(player) == minion.getTeam())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
minion.increaseWalkSpeed(-0.3F);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*@Override
|
||||||
|
public void trailAnimation(Location location, int frame)
|
||||||
|
{
|
||||||
|
double radius = 0.6;
|
||||||
|
int particleAmount = frame / 2;
|
||||||
|
for (int i = 0; i < particleAmount; i++)
|
||||||
|
{
|
||||||
|
double xDiff = Math.sin(i/(double)particleAmount * 2 * Math.PI) * radius;
|
||||||
|
double zDiff = Math.cos(i/(double)particleAmount * 2 * Math.PI) * radius;
|
||||||
|
|
||||||
|
Location loc = location.clone().add(xDiff, 0, zDiff);
|
||||||
|
UtilParticle.PlayParticle(UtilParticle.ParticleType.ENCHANTMENT_TABLE, loc, 0, 0, 0, 0, 1,
|
||||||
|
ViewDist.NORMAL, UtilServer.getPlayers());
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,134 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.spells;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Spell;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class SpellShrinkLiner extends Spell
|
||||||
|
{
|
||||||
|
|
||||||
|
public SpellShrinkLiner(ArcadeManager manager)
|
||||||
|
{
|
||||||
|
super(manager, "Shrinking Line", 7, Material.BLAZE_ROD, 2000L, 10, 0, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ParticleType trail()
|
||||||
|
{
|
||||||
|
return ParticleType.FLAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean execute(final Player player, Location location)
|
||||||
|
{
|
||||||
|
final ArrayList<Location> line = getLine(player, location);
|
||||||
|
for(Location loc : line)
|
||||||
|
{
|
||||||
|
getTypeWars().getLineShorten().get(getManager().GetGame().GetTeam(player)).add(loc);
|
||||||
|
}
|
||||||
|
|
||||||
|
getManager().runSyncLater(new Runnable()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
for(Location loc : line)
|
||||||
|
{
|
||||||
|
getTypeWars().getLineShorten().get(getManager().GetGame().GetTeam(player)).remove(loc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 180);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ArrayList<Location> getLine(Player player, Location location)
|
||||||
|
{
|
||||||
|
ArrayList<Location> line = new ArrayList<>();
|
||||||
|
ArrayList<Location> spawns = getTypeWars().getMinionSpawns().get(getManager().GetGame().GetTeam(player));
|
||||||
|
for(Location loc : spawns)
|
||||||
|
{
|
||||||
|
if(loc.getBlockX() == location.getBlockX() || loc.getBlockX() == location.getBlockX() - 1 || loc.getBlockX() == location.getBlockX() + 1)
|
||||||
|
{
|
||||||
|
for(Location locs : getTypeWars().getMinionSpawns().get(getManager().GetGame().GetTeam(player)))
|
||||||
|
{
|
||||||
|
Location newLoc = locs.clone();
|
||||||
|
newLoc.setZ(location.getBlockZ());
|
||||||
|
line.add(newLoc);
|
||||||
|
Location pos1 = newLoc.clone().add(1, 0, 0);
|
||||||
|
Location pos2 = newLoc.clone().add(-1, 0, 0);
|
||||||
|
boolean addLoc1 = true;
|
||||||
|
boolean addLoc2 = true;
|
||||||
|
for(Location otherLoc : line)
|
||||||
|
{
|
||||||
|
if(otherLoc.equals(pos1))
|
||||||
|
addLoc1 = false;
|
||||||
|
}
|
||||||
|
for(Location otherLoc : line)
|
||||||
|
{
|
||||||
|
if(otherLoc.equals(pos2))
|
||||||
|
addLoc2 = false;
|
||||||
|
}
|
||||||
|
if(addLoc1)
|
||||||
|
line.add(pos1);
|
||||||
|
|
||||||
|
if(addLoc2)
|
||||||
|
line.add(pos2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(loc.getBlockZ() == location.getBlockZ() || loc.getBlockZ() == location.getBlockZ() - 1 || loc.getBlockZ() == location.getBlockZ() + 1)
|
||||||
|
{
|
||||||
|
for(Location locs : getTypeWars().getMinionSpawns().get(getManager().GetGame().GetTeam(player)))
|
||||||
|
{
|
||||||
|
Location newLoc = locs.clone();
|
||||||
|
newLoc.setX(location.getBlockX());
|
||||||
|
line.add(newLoc);
|
||||||
|
Location pos1 = newLoc.clone().add(0, 0, 1);
|
||||||
|
Location pos2 = newLoc.clone().add(0, 0, -1);
|
||||||
|
boolean addLoc1 = true;
|
||||||
|
boolean addLoc2 = true;
|
||||||
|
for(Location otherLoc : line)
|
||||||
|
{
|
||||||
|
if(otherLoc.equals(pos1))
|
||||||
|
addLoc1 = false;
|
||||||
|
}
|
||||||
|
for(Location otherLoc : line)
|
||||||
|
{
|
||||||
|
if(otherLoc.equals(pos2))
|
||||||
|
addLoc2 = false;
|
||||||
|
}
|
||||||
|
if(addLoc1)
|
||||||
|
line.add(pos1);
|
||||||
|
|
||||||
|
if(addLoc2)
|
||||||
|
line.add(pos2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(Location loc : spawns)
|
||||||
|
{
|
||||||
|
Iterator<Location> locIterator = line.iterator();
|
||||||
|
while(locIterator.hasNext())
|
||||||
|
{
|
||||||
|
Location locs = locIterator.next();
|
||||||
|
if(locs.equals(loc))
|
||||||
|
{
|
||||||
|
locIterator.remove();
|
||||||
|
}
|
||||||
|
if(locs.getBlock().getType() != Material.AIR)
|
||||||
|
locIterator.remove();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.spells;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilShapes;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Minion;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.MinionSize;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Spell;
|
||||||
|
|
||||||
|
public class SpellSniper extends Spell
|
||||||
|
{
|
||||||
|
|
||||||
|
public SpellSniper(ArcadeManager manager)
|
||||||
|
{
|
||||||
|
super(manager, "Sniper spell", 4, Material.ARROW, 2000L, 0, 0, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ParticleType trail()
|
||||||
|
{
|
||||||
|
return ParticleType.EXPLODE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean execute(Player player, Location location)
|
||||||
|
{
|
||||||
|
Iterator<Minion> minionIterator = getTypeWars().getActiveMinions().iterator();
|
||||||
|
|
||||||
|
ArrayList<Location> locs = UtilShapes.getLinesDistancedPoints(player.getEyeLocation(), location, 0.5);
|
||||||
|
while(minionIterator.hasNext())
|
||||||
|
{
|
||||||
|
Minion minion = minionIterator.next();
|
||||||
|
|
||||||
|
for(Location loc : locs)
|
||||||
|
{
|
||||||
|
if(UtilMath.offset2d(minion.getEntity().getLocation(), loc) > 1)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(getTypeWars().GetTeam(player) == minion.getTeam())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
minion.despawn(player, true);
|
||||||
|
if(!minion.hasLives())
|
||||||
|
{
|
||||||
|
minionIterator.remove();
|
||||||
|
getTypeWars().getDeadMinions().add(minion);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,67 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.spells;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.UtilMath;
|
||||||
|
import mineplex.core.common.util.UtilParticle;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||||
|
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||||
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Minion;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Spell;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class SpellSpeedUp extends Spell
|
||||||
|
{
|
||||||
|
|
||||||
|
public SpellSpeedUp(ArcadeManager manager)
|
||||||
|
{
|
||||||
|
super(manager, "Speed Boost", 6, Material.FEATHER, 5000L, 0, 0, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ParticleType trail()
|
||||||
|
{
|
||||||
|
return ParticleType.HAPPY_VILLAGER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean execute(Player player, Location location)
|
||||||
|
{
|
||||||
|
|
||||||
|
location.getWorld().playSound(location.clone().add(0.5, 0.5, 0.5), Sound.FIREWORK_BLAST, 10F, 2.0F);
|
||||||
|
|
||||||
|
for(int c = -1; c <= 1; c++)
|
||||||
|
{
|
||||||
|
for(int i = -10; i <= 10; i = i + 2)
|
||||||
|
{
|
||||||
|
for(double x = 0.2; x <= 2; x = x + 0.2)
|
||||||
|
{
|
||||||
|
Location loc = location.clone().add(i + x, 2*(x-1)*(x-1)*(x-1) -2*(x-1), c);
|
||||||
|
loc.add(0, 0.3, 0);
|
||||||
|
UtilParticle.PlayParticle(UtilParticle.ParticleType.WITCH_MAGIC, loc, 0, 0, 0, 0, 1, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
|
|
||||||
|
Location otherLocation = location.clone().add(c, 2*(x-1)*(x-1)*(x-1) -2*(x-1), i + x);
|
||||||
|
otherLocation.add(0, 0.3, 0);
|
||||||
|
UtilParticle.PlayParticle(UtilParticle.ParticleType.WITCH_MAGIC, otherLocation, 0, 0, 0, 0, 1, ViewDist.LONG, UtilServer.getPlayers());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(Minion minion : getTypeWars().getActiveMinions())
|
||||||
|
{
|
||||||
|
if(UtilMath.offset2d(minion.getEntity().getLocation(), location) > 3)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(getTypeWars().GetTeam(player) != minion.getTeam())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
minion.increaseWalkSpeed((float) 0.5);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.stats;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import nautilus.game.arcade.game.games.typewars.MinionKillEvent;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.TypeWars;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.TypeWars.KillType;
|
||||||
|
import nautilus.game.arcade.stats.StatTracker;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
|
||||||
|
public class DemonStatsTracker extends StatTracker<TypeWars>
|
||||||
|
{
|
||||||
|
|
||||||
|
private HashMap<Player, Long> _players;
|
||||||
|
private HashMap<Player, Integer> _kills;
|
||||||
|
|
||||||
|
public DemonStatsTracker(TypeWars game)
|
||||||
|
{
|
||||||
|
super(game);
|
||||||
|
_players = new HashMap<>();
|
||||||
|
_kills = new HashMap<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void minonKill(MinionKillEvent event)
|
||||||
|
{
|
||||||
|
if(event.getType() != KillType.TYPED)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(!_players.containsKey(event.getPlayer()))
|
||||||
|
{
|
||||||
|
_players.put(event.getPlayer(), System.currentTimeMillis());
|
||||||
|
_kills.put(event.getPlayer(), 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(_players.get(event.getPlayer()) + 8000 > System.currentTimeMillis())
|
||||||
|
{
|
||||||
|
int kills = _kills.get(event.getPlayer());
|
||||||
|
_kills.put(event.getPlayer(), kills + 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_players.put(event.getPlayer(), System.currentTimeMillis());
|
||||||
|
_kills.put(event.getPlayer(), 1);
|
||||||
|
}
|
||||||
|
if(_kills.get(event.getPlayer()) >= 5)
|
||||||
|
{
|
||||||
|
addStat(event.getPlayer(), "Demon", 1, true, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.stats;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||||
|
import nautilus.game.arcade.game.Game.GameState;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.ActivateSpellEvent;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.TypeWars;
|
||||||
|
import nautilus.game.arcade.stats.StatTracker;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
|
||||||
|
public class DumbledontStatTracker extends StatTracker<TypeWars>
|
||||||
|
{
|
||||||
|
|
||||||
|
private ArrayList<Player> _players;
|
||||||
|
|
||||||
|
public DumbledontStatTracker(TypeWars game)
|
||||||
|
{
|
||||||
|
super(game);
|
||||||
|
_players = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void spell(ActivateSpellEvent event)
|
||||||
|
{
|
||||||
|
_players.remove(event.getPlayer());
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void end(GameStateChangeEvent event)
|
||||||
|
{
|
||||||
|
if(event.GetState() == GameState.Live)
|
||||||
|
{
|
||||||
|
for(Player player : event.GetGame().GetPlayers(true))
|
||||||
|
_players.add(player);
|
||||||
|
}
|
||||||
|
if(event.GetState() == GameState.End)
|
||||||
|
{
|
||||||
|
for(Player player : _players)
|
||||||
|
{
|
||||||
|
if(player.isOnline())
|
||||||
|
{
|
||||||
|
if(event.GetGame().GetTeam(player) == event.GetGame().WinnerTeam)
|
||||||
|
addStat(player, "Dumbledont", 1, true, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.stats;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import nautilus.game.arcade.game.games.typewars.SummonMinionEvent;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.TypeWars;
|
||||||
|
import nautilus.game.arcade.stats.StatTracker;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
|
||||||
|
public class HoarderStatTracker extends StatTracker<TypeWars>
|
||||||
|
{
|
||||||
|
|
||||||
|
private HashMap<Player, Integer> _players;
|
||||||
|
|
||||||
|
public HoarderStatTracker(TypeWars game)
|
||||||
|
{
|
||||||
|
super(game);
|
||||||
|
_players = new HashMap<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void summonMinion(SummonMinionEvent event)
|
||||||
|
{
|
||||||
|
if(!_players.containsKey(event.getPlayer()))
|
||||||
|
{
|
||||||
|
_players.put(event.getPlayer(), 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int summons = _players.get(event.getPlayer());
|
||||||
|
_players.put(event.getPlayer(), summons + 1);
|
||||||
|
if(_players.get(event.getPlayer()) >= 50)
|
||||||
|
addStat(event.getPlayer(), "Hoarder", 1, true, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.stats;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
|
||||||
|
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||||
|
import nautilus.game.arcade.game.Game.GameState;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.TypeWars;
|
||||||
|
import nautilus.game.arcade.stats.StatTracker;
|
||||||
|
|
||||||
|
public class KillsStatTracker extends StatTracker<TypeWars>
|
||||||
|
{
|
||||||
|
|
||||||
|
private TypeWars _typeWars;
|
||||||
|
|
||||||
|
public KillsStatTracker(TypeWars game)
|
||||||
|
{
|
||||||
|
super(game);
|
||||||
|
_typeWars = game;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void end(GameStateChangeEvent event)
|
||||||
|
{
|
||||||
|
if(event.GetState() != GameState.End)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for(Player player : _typeWars.GetPlayers(true))
|
||||||
|
{
|
||||||
|
addStat(player, "MinionKills", _typeWars.getPlayerKills(player), false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,82 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.stats;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||||
|
import nautilus.game.arcade.game.Game.GameState;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.TypeAttemptEvent;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.TypeWars;
|
||||||
|
import nautilus.game.arcade.stats.StatTracker;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
|
||||||
|
public class PerfectionistStatTracker extends StatTracker<TypeWars>
|
||||||
|
{
|
||||||
|
|
||||||
|
private HashMap<String, Long> _wordsRecently;
|
||||||
|
private ArrayList<Player> _players;
|
||||||
|
private HashMap<Player, Integer> _playerWords;
|
||||||
|
|
||||||
|
public PerfectionistStatTracker(TypeWars game)
|
||||||
|
{
|
||||||
|
super(game);
|
||||||
|
_wordsRecently = new HashMap<>();
|
||||||
|
_players = new ArrayList<>();
|
||||||
|
_playerWords = new HashMap<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void attempt(TypeAttemptEvent event)
|
||||||
|
{
|
||||||
|
if(event.isSuccessful())
|
||||||
|
{
|
||||||
|
_wordsRecently.put(event.getAttempt().toUpperCase(), System.currentTimeMillis());
|
||||||
|
|
||||||
|
if(!_playerWords.containsKey(event.getPlayer()))
|
||||||
|
_playerWords.put(event.getPlayer(), 1);
|
||||||
|
|
||||||
|
int words = _playerWords.get(event.getPlayer());
|
||||||
|
_playerWords.put(event.getPlayer(), words + 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(_wordsRecently.containsKey(event.getAttempt().toUpperCase()))
|
||||||
|
{
|
||||||
|
if(_wordsRecently.get(event.getAttempt().toUpperCase()) + 2000 > System.currentTimeMillis())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_players.remove(event.getPlayer());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void gameState(GameStateChangeEvent event)
|
||||||
|
{
|
||||||
|
if(event.GetState() == GameState.Live)
|
||||||
|
{
|
||||||
|
for(Player player : event.GetGame().GetPlayers(true))
|
||||||
|
{
|
||||||
|
_players.add(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(event.GetState() == GameState.End)
|
||||||
|
{
|
||||||
|
for(Player player : _players)
|
||||||
|
{
|
||||||
|
if(player.isOnline())
|
||||||
|
{
|
||||||
|
if(_playerWords.containsKey(player))
|
||||||
|
{
|
||||||
|
if(_playerWords.get(player) >= 5)
|
||||||
|
addStat(player, "Perfectionist", 1, true, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.stats;
|
||||||
|
|
||||||
|
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||||
|
import nautilus.game.arcade.game.Game;
|
||||||
|
import nautilus.game.arcade.game.Game.GameState;
|
||||||
|
import nautilus.game.arcade.stats.StatTracker;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
|
||||||
|
public class TimeInGameTracker extends StatTracker<Game>
|
||||||
|
{
|
||||||
|
|
||||||
|
public TimeInGameTracker(Game game)
|
||||||
|
{
|
||||||
|
super(game);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void end(GameStateChangeEvent event)
|
||||||
|
{
|
||||||
|
if(event.GetState() != GameState.End)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for(Player player : getGame().GetPlayers(true))
|
||||||
|
{
|
||||||
|
addStat(player, "TimeInGame", (int) (((System.currentTimeMillis() - getGame().getGameLiveTime())/1000)/60), false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.stats;
|
||||||
|
|
||||||
|
import nautilus.game.arcade.game.games.typewars.ActivateNukeSpellEvent;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.TypeWars;
|
||||||
|
import nautilus.game.arcade.stats.StatTracker;
|
||||||
|
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
|
||||||
|
public class WaitForItStatTracker extends StatTracker<TypeWars>
|
||||||
|
{
|
||||||
|
|
||||||
|
public WaitForItStatTracker(TypeWars game)
|
||||||
|
{
|
||||||
|
super(game);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void nuke(ActivateNukeSpellEvent event)
|
||||||
|
{
|
||||||
|
if(event.getMinions().size() >= 30)
|
||||||
|
addStat(event.getPlayer(), "Nuke", 1, true, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.tutorial;
|
||||||
|
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Minion;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.TypeWars;
|
||||||
|
import nautilus.game.arcade.gametutorial.TutorialPhase;
|
||||||
|
import nautilus.game.arcade.gametutorial.TutorialText;
|
||||||
|
|
||||||
|
public class TutorialPhaseTypeWars extends TutorialPhase
|
||||||
|
{
|
||||||
|
|
||||||
|
public TutorialPhaseTypeWars()
|
||||||
|
{
|
||||||
|
super(new TutorialText[]
|
||||||
|
{
|
||||||
|
new TutorialText("This is your giant!", 1),
|
||||||
|
new TutorialText("Protect him from evil minions!", 2),
|
||||||
|
new TutorialText("Type the name above their head to kill them", 3),
|
||||||
|
new TutorialText("F_", 7, 4),
|
||||||
|
new TutorialText("Fi_", 7, 5),
|
||||||
|
new TutorialText("Fis_", 7, 6),
|
||||||
|
new TutorialText("Fish_", 7, 7),
|
||||||
|
new TutorialText("Fishi_", 7, 8),
|
||||||
|
new TutorialText("Fishin_", 7, 9),
|
||||||
|
new TutorialText("Fishing_", 30, 10),
|
||||||
|
new TutorialText("Kill your enemy's giant before they kill yours.", 11)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int ID()
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnd()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMessageDisplay(TutorialText text)
|
||||||
|
{
|
||||||
|
if(text.ID() == 10)
|
||||||
|
{
|
||||||
|
for(Minion minion : ((TypeWars) getTutorial().Manager.GetGame()).getActiveMinions())
|
||||||
|
{
|
||||||
|
if(minion.getTeam() == getTutorial().getTeam())
|
||||||
|
{
|
||||||
|
minion.despawn(null, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package nautilus.game.arcade.game.games.typewars.tutorial;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.UtilShapes;
|
||||||
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
|
import nautilus.game.arcade.game.GameTeam;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.Minion;
|
||||||
|
import nautilus.game.arcade.game.games.typewars.TypeWars;
|
||||||
|
import nautilus.game.arcade.gametutorial.GameTutorial;
|
||||||
|
import nautilus.game.arcade.gametutorial.TutorialPhase;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
|
||||||
|
public class TutorialTypeWars extends GameTutorial
|
||||||
|
{
|
||||||
|
|
||||||
|
private ArcadeManager _manager;
|
||||||
|
private TypeWars _typeWars;
|
||||||
|
|
||||||
|
public TutorialTypeWars(ArcadeManager manager)
|
||||||
|
{
|
||||||
|
super(manager, new TutorialPhase[]{new TutorialPhaseTypeWars()});
|
||||||
|
|
||||||
|
TutorialNotification = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart()
|
||||||
|
{
|
||||||
|
_manager = Manager;
|
||||||
|
_typeWars = (TypeWars) Manager.GetGame();
|
||||||
|
for(GameTeam team : Manager.GetGame().GetTeamList())
|
||||||
|
{
|
||||||
|
if(team != getTeam())
|
||||||
|
{
|
||||||
|
ArrayList<Location> locations = UtilShapes.getLinesDistancedPoints(_typeWars.getMinionSpawns().get(getTeam()).get(4), _typeWars.getMinionSpawns().get(team).get(4), 1);
|
||||||
|
_manager.GetCreature().SetForce(true);
|
||||||
|
_manager.GetGame().CreatureAllowOverride = true;
|
||||||
|
Minion minion = new Minion(_manager, locations.get(locations.size() - 35), _typeWars.getMinionSpawns().get(team).get(4), getTeam(), 4);
|
||||||
|
minion.changeName("Fishing");
|
||||||
|
((TypeWars) _manager.GetGame()).getActiveMinions().add(minion);
|
||||||
|
_manager.GetGame().CreatureAllowOverride = false;
|
||||||
|
_manager.GetCreature().SetForce(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -3,7 +3,6 @@ package nautilus.game.arcade.gametutorial;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
import mineplex.core.common.util.UtilServer;
|
import mineplex.core.common.util.UtilServer;
|
||||||
import mineplex.core.visibility.VisibilityManager;
|
|
||||||
import nautilus.game.arcade.ArcadeManager;
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
import nautilus.game.arcade.game.GameTeam;
|
import nautilus.game.arcade.game.GameTeam;
|
||||||
import nautilus.game.arcade.gametutorial.events.GameTutorialEndEvent;
|
import nautilus.game.arcade.gametutorial.events.GameTutorialEndEvent;
|
||||||
@ -36,9 +35,12 @@ public abstract class GameTutorial
|
|||||||
public boolean RunTasksSync = true;
|
public boolean RunTasksSync = true;
|
||||||
public boolean PlayTutorialSounds = false;
|
public boolean PlayTutorialSounds = false;
|
||||||
public boolean ShowPrepareTimer = false;
|
public boolean ShowPrepareTimer = false;
|
||||||
|
public boolean CustomEnding = false;
|
||||||
|
public boolean TutorialNotification = false;
|
||||||
|
|
||||||
public long TimeBetweenPhase = 0;
|
public long TimeBetweenPhase = 0;
|
||||||
public long StartAfterTutorial = 5000;
|
public long StartAfterTutorial = 5000;
|
||||||
|
public long CustomEndingTime = 5000;
|
||||||
|
|
||||||
public GameTutorial(ArcadeManager manager, TutorialPhase[] phases)
|
public GameTutorial(ArcadeManager manager, TutorialPhase[] phases)
|
||||||
{
|
{
|
||||||
@ -47,6 +49,9 @@ public abstract class GameTutorial
|
|||||||
_players = new HashMap<>();
|
_players = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* start the Tutorial (never use this)
|
||||||
|
*/
|
||||||
final public void start()
|
final public void start()
|
||||||
{
|
{
|
||||||
_hasStarted = true;
|
_hasStarted = true;
|
||||||
@ -54,7 +59,30 @@ public abstract class GameTutorial
|
|||||||
for(TutorialPhase phase : _phases)
|
for(TutorialPhase phase : _phases)
|
||||||
phase.setTutorial(this);
|
phase.setTutorial(this);
|
||||||
|
|
||||||
//Manager.GetGame().PrepareTime = 60000;
|
if(TutorialNotification)
|
||||||
|
{
|
||||||
|
TutorialPhase phase = getPhase(1);
|
||||||
|
for(TutorialText text : phase.getText())
|
||||||
|
{
|
||||||
|
int index = text.ID();
|
||||||
|
text.setID(index + 1);
|
||||||
|
}
|
||||||
|
TutorialText[] newText = new TutorialText[phase.getText().length + 1];
|
||||||
|
for(int i = 0; i < newText.length; i++)
|
||||||
|
{
|
||||||
|
if(i == 0)
|
||||||
|
{
|
||||||
|
newText[i] = new TutorialText("Please notice that this is a Tutorial", 20, 1);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newText[i] = phase.getText()[i - 1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
phase.setText(newText);
|
||||||
|
}
|
||||||
|
|
||||||
Manager.GetChat().Silence(60000, false);
|
Manager.GetChat().Silence(60000, false);
|
||||||
_started = System.currentTimeMillis();
|
_started = System.currentTimeMillis();
|
||||||
Manager.getPluginManager().callEvent(new GameTutorialStartEvent(this));
|
Manager.getPluginManager().callEvent(new GameTutorialStartEvent(this));
|
||||||
@ -72,6 +100,9 @@ public abstract class GameTutorial
|
|||||||
_currentPhase.teleport();
|
_currentPhase.teleport();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stting next Phase/ending Tutorial
|
||||||
|
*/
|
||||||
protected void nextPhase(boolean phaseOne)
|
protected void nextPhase(boolean phaseOne)
|
||||||
{
|
{
|
||||||
TutorialPhase from = _currentPhase;
|
TutorialPhase from = _currentPhase;
|
||||||
@ -80,25 +111,33 @@ public abstract class GameTutorial
|
|||||||
|
|
||||||
if(_currentPhase == null)
|
if(_currentPhase == null)
|
||||||
{
|
{
|
||||||
onEnd();
|
// has ended
|
||||||
_hasEnded = true;
|
if(!CustomEnding)
|
||||||
endTutorial();
|
|
||||||
final GameTutorial tutorial = this;
|
|
||||||
Manager.runSyncLater(new Runnable()
|
|
||||||
{
|
{
|
||||||
@Override
|
onEnd();
|
||||||
public void run()
|
_hasEnded = true;
|
||||||
|
endTutorial();
|
||||||
|
final GameTutorial tutorial = this;
|
||||||
|
Manager.runSyncLater(new Runnable()
|
||||||
{
|
{
|
||||||
Manager.getPluginManager().callEvent(new GameTutorialEndEvent(tutorial));
|
@Override
|
||||||
}
|
public void run()
|
||||||
}, 5);
|
{
|
||||||
|
Manager.getPluginManager().callEvent(new GameTutorialEndEvent(tutorial));
|
||||||
|
}
|
||||||
|
}, 5);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Manager.GetChat().Silence(70000, false);
|
// setting another Phase, if Tutorial hasn't stopped yet
|
||||||
onPhaseChange(_currentPhase);
|
if(!_hasEnded)
|
||||||
Manager.getPluginManager().callEvent(new GameTutorialPhaseEvent(this, from, _currentPhase));
|
{
|
||||||
_currentPhase.start(phaseOne);
|
Manager.GetChat().Silence(70000, false);
|
||||||
|
onPhaseChange(_currentPhase);
|
||||||
|
Manager.getPluginManager().callEvent(new GameTutorialPhaseEvent(this, from, _currentPhase));
|
||||||
|
_currentPhase.start(phaseOne);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,19 +150,19 @@ public abstract class GameTutorial
|
|||||||
{
|
{
|
||||||
for(final Player player : _players.keySet())
|
for(final Player player : _players.keySet())
|
||||||
{
|
{
|
||||||
//VisibilityManager.Instance.setVisibility(player, true, UtilServer.getPlayers());
|
|
||||||
Manager.runSyncLater(new Runnable()
|
Manager.runSyncLater(new Runnable()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
for(Player player : Manager.GetGame().GetPlayers(true))
|
// Player visibility/fly mode
|
||||||
|
for(Player other : Manager.GetGame().GetPlayers(false))
|
||||||
{
|
{
|
||||||
for(Player other : Manager.GetGame().GetPlayers(true))
|
if(player == other)
|
||||||
{
|
continue;
|
||||||
player.showPlayer(other);
|
|
||||||
}
|
other.showPlayer(player);
|
||||||
}
|
}
|
||||||
player.setAllowFlight(false);
|
player.setAllowFlight(false);
|
||||||
player.setFlying(false);
|
player.setFlying(false);
|
||||||
}
|
}
|
||||||
@ -135,17 +174,20 @@ public abstract class GameTutorial
|
|||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
|
// Spawn teleporting
|
||||||
_team.SpawnTeleport();
|
_team.SpawnTeleport();
|
||||||
}
|
}
|
||||||
}, 5);
|
}, 5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// setting the right prepare Time after the Tutorial ends
|
||||||
Manager.GetChat().Silence(StartAfterTutorial, false);
|
Manager.GetChat().Silence(StartAfterTutorial, false);
|
||||||
Manager.GetGame().PrepareTime = (System.currentTimeMillis() - Manager.GetGame().GetStateTime()) + StartAfterTutorial;
|
Manager.GetGame().PrepareTime = (System.currentTimeMillis() - Manager.GetGame().GetStateTime()) + StartAfterTutorial;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected TutorialPhase getNextPhase()
|
protected TutorialPhase getNextPhase()
|
||||||
{
|
{
|
||||||
|
// getting next TutorialPhase
|
||||||
for(TutorialPhase phase : _phases)
|
for(TutorialPhase phase : _phases)
|
||||||
{
|
{
|
||||||
if(_currentPhase == null && phase.ID() == 1)
|
if(_currentPhase == null && phase.ID() == 1)
|
||||||
@ -164,13 +206,13 @@ public abstract class GameTutorial
|
|||||||
{
|
{
|
||||||
for(Player player : UtilServer.getPlayers())
|
for(Player player : UtilServer.getPlayers())
|
||||||
{
|
{
|
||||||
|
// setting Players into fly mode and save their Locations
|
||||||
int i = 0;
|
int i = 0;
|
||||||
if(Manager.GetGame().GetTeam(player) == _team)
|
if(Manager.GetGame().GetTeam(player) == _team)
|
||||||
{
|
{
|
||||||
_players.put(player, Manager.GetGame().GetTeam(player).GetSpawns().get(i));
|
_players.put(player, Manager.GetGame().GetTeam(player).GetSpawns().get(i));
|
||||||
player.setAllowFlight(true);
|
player.setAllowFlight(true);
|
||||||
player.setFlying(true);
|
player.setFlying(true);
|
||||||
// VisibilityManager.Instance.setVisibility(player, false, UtilServer.getPlayers());
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -206,16 +248,42 @@ public abstract class GameTutorial
|
|||||||
return _team;
|
return _team;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onTick(int tick){}
|
/**
|
||||||
|
* only available if CustomEnding is enabled
|
||||||
public void onStart(){}
|
* You can end the tutorial with this method
|
||||||
|
* if you set CutomEnding to true, you have to run this method!
|
||||||
public void onPhaseChange(TutorialPhase phase){}
|
*/
|
||||||
|
public void end()
|
||||||
public void onEnd(){}
|
{
|
||||||
|
if(CustomEnding)
|
||||||
|
{
|
||||||
|
// Ending
|
||||||
|
onEnd();
|
||||||
|
_hasEnded = true;
|
||||||
|
Thread thread = _currentPhase.getThread();
|
||||||
|
if(thread.isAlive())
|
||||||
|
thread.destroy();
|
||||||
|
|
||||||
|
endTutorial();
|
||||||
|
final GameTutorial tutorial = this;
|
||||||
|
Manager.runSyncLater(new Runnable()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
Manager.getPluginManager().callEvent(new GameTutorialEndEvent(tutorial));
|
||||||
|
}
|
||||||
|
}, 5);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
System.out.println("Only allowed while Custom Ending is enabled");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public int tick()
|
public int tick()
|
||||||
{
|
{
|
||||||
|
// Fix for Visibility Manager not really working
|
||||||
if(!_hasEnded && hasStarted())
|
if(!_hasEnded && hasStarted())
|
||||||
{
|
{
|
||||||
for(Player player : UtilServer.getPlayers())
|
for(Player player : UtilServer.getPlayers())
|
||||||
@ -249,4 +317,17 @@ public abstract class GameTutorial
|
|||||||
{
|
{
|
||||||
return _currentPhase.getPhaseTime();
|
return _currentPhase.getPhaseTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* some overrideable methods that can be used to synchronize the tutorial events
|
||||||
|
*/
|
||||||
|
|
||||||
|
public void onTick(int tick){}
|
||||||
|
|
||||||
|
public void onStart(){}
|
||||||
|
|
||||||
|
public void onPhaseChange(TutorialPhase phase){}
|
||||||
|
|
||||||
|
public void onEnd(){}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,8 @@ public abstract class TutorialPhase
|
|||||||
private Location _target;
|
private Location _target;
|
||||||
private boolean _hasEnded;
|
private boolean _hasEnded;
|
||||||
|
|
||||||
|
private Thread _thread;
|
||||||
|
|
||||||
private long _started;
|
private long _started;
|
||||||
|
|
||||||
private TutorialText _currentText;
|
private TutorialText _currentText;
|
||||||
@ -27,6 +29,9 @@ public abstract class TutorialPhase
|
|||||||
_text = text;
|
_text = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* start the Phase (never use this as well)
|
||||||
|
*/
|
||||||
final public void start(boolean phaseOne)
|
final public void start(boolean phaseOne)
|
||||||
{
|
{
|
||||||
_hasEnded = false;
|
_hasEnded = false;
|
||||||
@ -39,6 +44,9 @@ public abstract class TutorialPhase
|
|||||||
displayText();
|
displayText();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Teleporting Players and keeping them if SetTutorialPositions == true
|
||||||
|
*/
|
||||||
final public void teleport()
|
final public void teleport()
|
||||||
{
|
{
|
||||||
if(!getTutorial().SetTutorialPositions)
|
if(!getTutorial().SetTutorialPositions)
|
||||||
@ -51,6 +59,9 @@ public abstract class TutorialPhase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* preparing Pitch/Yaw of the location
|
||||||
|
*/
|
||||||
private void prepareLocations()
|
private void prepareLocations()
|
||||||
{
|
{
|
||||||
Vector vector = new Vector(_target.getBlockX() - _location.getBlockX(), _target.getBlockY() - _location.getBlockY(), _target.getBlockZ() - _location.getBlockZ());
|
Vector vector = new Vector(_target.getBlockX() - _location.getBlockX(), _target.getBlockY() - _location.getBlockY(), _target.getBlockZ() - _location.getBlockZ());
|
||||||
@ -60,6 +71,9 @@ public abstract class TutorialPhase
|
|||||||
_location.setYaw(yaw);
|
_location.setYaw(yaw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* teleporting players until Phase ends
|
||||||
|
*/
|
||||||
private void updatePlayers()
|
private void updatePlayers()
|
||||||
{
|
{
|
||||||
new Thread(new Runnable()
|
new Thread(new Runnable()
|
||||||
@ -74,6 +88,7 @@ public abstract class TutorialPhase
|
|||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
|
// teleport Players Sync
|
||||||
if(!_hasEnded && !getTutorial().hasEnded())
|
if(!_hasEnded && !getTutorial().hasEnded())
|
||||||
{
|
{
|
||||||
for(Player player : _tutorial.getPlayers().keySet())
|
for(Player player : _tutorial.getPlayers().keySet())
|
||||||
@ -87,6 +102,7 @@ public abstract class TutorialPhase
|
|||||||
});
|
});
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
// sleep for 1 tick
|
||||||
Thread.sleep(50);
|
Thread.sleep(50);
|
||||||
} catch (InterruptedException e)
|
} catch (InterruptedException e)
|
||||||
{
|
{
|
||||||
@ -97,9 +113,13 @@ public abstract class TutorialPhase
|
|||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* displays all messages set in the constructor
|
||||||
|
* will end Phase if no more messages are available or Tutorial has already ended
|
||||||
|
*/
|
||||||
public void displayText()
|
public void displayText()
|
||||||
{
|
{
|
||||||
new Thread(new Runnable()
|
_thread = new Thread(new Runnable()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
@ -109,6 +129,7 @@ public abstract class TutorialPhase
|
|||||||
TutorialText text = getNextMessage();
|
TutorialText text = getNextMessage();
|
||||||
if(text == null)
|
if(text == null)
|
||||||
{
|
{
|
||||||
|
// ending Phase
|
||||||
_tutorial.Manager.runSyncLater(new Runnable()
|
_tutorial.Manager.runSyncLater(new Runnable()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
@ -123,6 +144,7 @@ public abstract class TutorialPhase
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// displaying next message
|
||||||
Player[] players = new Player[_tutorial.getPlayers().keySet().size()];
|
Player[] players = new Player[_tutorial.getPlayers().keySet().size()];
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for(Player player : _tutorial.getPlayers().keySet())
|
for(Player player : _tutorial.getPlayers().keySet())
|
||||||
@ -137,7 +159,7 @@ public abstract class TutorialPhase
|
|||||||
}
|
}
|
||||||
displayMessage(text);
|
displayMessage(text);
|
||||||
UtilTextMiddle.display("", text.getText(), 0, text.getStayTime(), 0, players);
|
UtilTextMiddle.display("", text.getText(), 0, text.getStayTime(), 0, players);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Thread.sleep(text.getStayTime() * 50);
|
Thread.sleep(text.getStayTime() * 50);
|
||||||
} catch (InterruptedException e)
|
} catch (InterruptedException e)
|
||||||
@ -148,14 +170,18 @@ public abstract class TutorialPhase
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}).start();
|
});
|
||||||
|
_thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* firing abstract method Sync/Async depending on the RunTasksSync Flag
|
||||||
|
*/
|
||||||
private void displayMessage(final TutorialText text)
|
private void displayMessage(final TutorialText text)
|
||||||
{
|
{
|
||||||
if(_tutorial.RunTasksSync)
|
if(_tutorial.RunTasksSync)
|
||||||
{
|
{
|
||||||
_tutorial.Manager.runSync(new Runnable()
|
_tutorial.Manager.runSync(new Runnable()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
@ -170,6 +196,9 @@ public abstract class TutorialPhase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* getting next message
|
||||||
|
*/
|
||||||
protected TutorialText getNextMessage()
|
protected TutorialText getNextMessage()
|
||||||
{
|
{
|
||||||
for(TutorialText text : _text)
|
for(TutorialText text : _text)
|
||||||
@ -193,6 +222,11 @@ public abstract class TutorialPhase
|
|||||||
return _text;
|
return _text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setText(TutorialText[] text)
|
||||||
|
{
|
||||||
|
_text = text;
|
||||||
|
}
|
||||||
|
|
||||||
public Location getLocation()
|
public Location getLocation()
|
||||||
{
|
{
|
||||||
return _location;
|
return _location;
|
||||||
@ -228,6 +262,15 @@ public abstract class TutorialPhase
|
|||||||
return _started;
|
return _started;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Thread getThread()
|
||||||
|
{
|
||||||
|
return _thread;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* some overrideable methods that can be used to synchronize the tutorial events
|
||||||
|
*/
|
||||||
|
|
||||||
public void onStart(){}
|
public void onStart(){}
|
||||||
|
|
||||||
public void onMessageDisplay(TutorialText text){}
|
public void onMessageDisplay(TutorialText text){}
|
||||||
|
@ -59,4 +59,9 @@ public class TutorialText
|
|||||||
_text = text;
|
_text = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setID(int id)
|
||||||
|
{
|
||||||
|
_id = id;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -19,34 +19,31 @@ import mineplex.core.disguise.disguises.DisguiseWither;
|
|||||||
import mineplex.core.gadget.gadgets.morph.MorphWither;
|
import mineplex.core.gadget.gadgets.morph.MorphWither;
|
||||||
import mineplex.core.gadget.types.Gadget;
|
import mineplex.core.gadget.types.Gadget;
|
||||||
import mineplex.core.gadget.types.GadgetType;
|
import mineplex.core.gadget.types.GadgetType;
|
||||||
import mineplex.minecraft.game.core.condition.Condition.ConditionType;
|
|
||||||
import mineplex.core.mount.Mount;
|
import mineplex.core.mount.Mount;
|
||||||
import mineplex.core.mount.types.MountDragon;
|
import mineplex.core.mount.types.MountDragon;
|
||||||
import mineplex.core.updater.UpdateType;
|
import mineplex.core.updater.UpdateType;
|
||||||
import mineplex.core.updater.event.RestartServerEvent;
|
import mineplex.core.updater.event.RestartServerEvent;
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
import mineplex.minecraft.game.core.condition.Condition.ConditionType;
|
||||||
import nautilus.game.arcade.ArcadeManager;
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
import nautilus.game.arcade.events.GamePrepareCountdownCommence;
|
import nautilus.game.arcade.events.GamePrepareCountdownCommence;
|
||||||
import nautilus.game.arcade.events.GameStateChangeEvent;
|
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||||
import nautilus.game.arcade.events.PlayerPrepareTeleportEvent;
|
import nautilus.game.arcade.events.PlayerPrepareTeleportEvent;
|
||||||
import nautilus.game.arcade.events.PlayerStateChangeEvent;
|
import nautilus.game.arcade.events.PlayerStateChangeEvent;
|
||||||
import nautilus.game.arcade.game.Game;
|
import nautilus.game.arcade.game.Game;
|
||||||
import nautilus.game.arcade.game.GameTeam;
|
|
||||||
import nautilus.game.arcade.game.Game.GameState;
|
import nautilus.game.arcade.game.Game.GameState;
|
||||||
|
import nautilus.game.arcade.game.GameTeam;
|
||||||
import nautilus.game.arcade.game.games.uhc.UHC;
|
import nautilus.game.arcade.game.games.uhc.UHC;
|
||||||
import nautilus.game.arcade.gametutorial.GameTutorial;
|
|
||||||
import nautilus.game.arcade.gametutorial.TutorialPhase;
|
import nautilus.game.arcade.gametutorial.TutorialPhase;
|
||||||
import nautilus.game.arcade.gametutorial.TutorialText;
|
import nautilus.game.arcade.gametutorial.TutorialText;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.FireworkEffect.Type;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.FireworkEffect.Type;
|
|
||||||
import org.bukkit.entity.Creature;
|
import org.bukkit.entity.Creature;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Wither;
|
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
@ -220,9 +217,12 @@ public class GameManager implements Listener
|
|||||||
if(!team.getTutorial().hasStarted())
|
if(!team.getTutorial().hasStarted())
|
||||||
{
|
{
|
||||||
team.getTutorial().setTeam(team);
|
team.getTutorial().setTeam(team);
|
||||||
team.getTutorial().start();
|
team.getTutorial().start();
|
||||||
timeUsage = team.getTutorial().StartAfterTutorial;
|
timeUsage = team.getTutorial().StartAfterTutorial;
|
||||||
timeUsage = timeUsage + (team.getTutorial().TimeBetweenPhase * team.getTutorial().getPhases().length);
|
timeUsage = timeUsage + (team.getTutorial().TimeBetweenPhase * team.getTutorial().getPhases().length);
|
||||||
|
if(team.getTutorial().CustomEnding)
|
||||||
|
timeUsage = timeUsage + team.getTutorial().CustomEndingTime;
|
||||||
|
|
||||||
for(TutorialPhase phase : team.getTutorial().getPhases())
|
for(TutorialPhase phase : team.getTutorial().getPhases())
|
||||||
{
|
{
|
||||||
for(TutorialText text : phase.getText())
|
for(TutorialText text : phase.getText())
|
||||||
@ -237,9 +237,9 @@ public class GameManager implements Listener
|
|||||||
if(checkForTimer)
|
if(checkForTimer)
|
||||||
{
|
{
|
||||||
if(team.getTutorial().ShowPrepareTimer)
|
if(team.getTutorial().ShowPrepareTimer)
|
||||||
finished = false;
|
|
||||||
else
|
|
||||||
finished = true;
|
finished = true;
|
||||||
|
else
|
||||||
|
finished = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -251,7 +251,7 @@ public class GameManager implements Listener
|
|||||||
|
|
||||||
if(!finished)
|
if(!finished)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -290,6 +290,7 @@ public class GameManager implements Listener
|
|||||||
if(game.GetState() != GameState.Prepare)
|
if(game.GetState() != GameState.Prepare)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
if(game.EnableTutorials)
|
if(game.EnableTutorials)
|
||||||
{
|
{
|
||||||
for(GameTeam team : game.GetTeamList())
|
for(GameTeam team : game.GetTeamList())
|
||||||
|
@ -544,6 +544,11 @@ public class WorldData
|
|||||||
{
|
{
|
||||||
return CustomLocs;
|
return CustomLocs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public HashMap<String, ArrayList<Location>> GetAllDataLocs()
|
||||||
|
{
|
||||||
|
return DataLocs;
|
||||||
|
}
|
||||||
|
|
||||||
public Location GetRandomXZ()
|
public Location GetRandomXZ()
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user