Rename Castle Siege 2.0 to Castle Assault and re-implement the old game

This commit is contained in:
AlexTheCoder 2017-05-08 17:05:30 -04:00
parent 452eaeeba9
commit d13610251f
40 changed files with 2783 additions and 2746 deletions

View File

@ -375,77 +375,93 @@ public enum Achievement
AchievementCategory.MASTER_BUILDERS),
//Castle Siege
CASTLE_SIEGE_KILL_STREAK("Kill Streak", 0,
new String[]{"Castle Siege.KillStreak", "Castle Siege TDM.KillStreak"},
CASTLE_SIEGE_WINS("FOR THE KING!", 600,
new String[]{"Castle Siege.ForTheKing"},
new String[]{"Win as Defenders 50 times"},
new int[]{50},
AchievementCategory.CASTLE_SIEGE),
CASTLE_SIEGE_KINGSLAYER("Kingslayer", 800,
new String[]{"Castle Siege.KingSlayer"},
new String[]{"Get the killing blow on the King"},
new int[]{1},
AchievementCategory.CASTLE_SIEGE),
CASTLE_SIEGE_BLOOD_THIRSTY("Blood Thirsty", 1200,
new String[]{"Castle Siege.BloodThirsty"},
new String[]{"Kill 50 Undead in a single game"},
new int[]{1},
AchievementCategory.CASTLE_SIEGE),
CASTLE_SIEGE_ASSASSIN("Assassin", 1000,
new String[]{"Castle Siege.Assassin"},
new String[]{"Do 50% or more of the damage to the king"},
new int[]{1},
AchievementCategory.CASTLE_SIEGE),
//Castle Assault
CASTLE_ASSAULT_KILL_STREAK("Kill Streak", 0,
new String[]{"Castle Assault.KillStreak", "Castle Assault TDM.KillStreak"},
new String[]{"Earn Kill Streak Rewards"},
new int[][]{new int[]{0, 50, 500}, new int[]{0, 100, 750}, new int[]{0, 150, 1000}, new int[]{0, 200, 1500}, new int[]{0, 400, 2000}, new int[]{0, 500, 2500}, new int[]{0, 1000, 3000}, new int[]{0, 1500, 3500}, new int[]{0, 2000, 4000}, new int[]{0, 5000, 100000}},
new int[]{10, 20, 50, 100, 200, 250, 500, 750, 1000, 2000},
"Novice I",
new String[]{"Novice II", "Novice III", "Novice IV", "Novice V", "Master I", "Master II", "Master III", "Master IV", "GRANDMASTER"},
AchievementCategory.CASTLE_SIEGE),
AchievementCategory.CASTLE_ASSAULT),
CASTLE_SIEGE_FIRST_BLOOD("First Blood", 0,
new String[]{"Castle Siege.FirstBlood", "Castle Siege TDM.FirstBlood"},
CASTLE_ASSAULT_FIRST_BLOOD("First Blood", 0,
new String[]{"Castle Assault.FirstBlood", "Castle Assault TDM.FirstBlood"},
new String[]{"Obtain the first kill in a Match"},
new int[][]{new int[]{0, 100, 100}, new int[]{0, 150, 200}, new int[]{0, 200, 300}, new int[]{0, 250, 400}, new int[]{0, 500, 500}},
new int[]{2, 5, 10, 25, 50},
"Novice I",
new String[]{"Novice II", "Novice III", "Novice IV", "Novice V"},
AchievementCategory.CASTLE_SIEGE),
AchievementCategory.CASTLE_ASSAULT),
CASTLE_SIEGE_FIGHTER_KIT("Fighter", 0,
new String[]{"Castle Siege.FighterKitKills", "Castle Siege TDM.FighterKitKills"},
CASTLE_ASSAULT_FIGHTER_KIT("Fighter", 0,
new String[]{"Castle Assault.FighterKitKills", "Castle Assault TDM.FighterKitKills"},
new String[]{"Kill opponents while wearing the Fighter Kit"},
new int[][]{new int[]{0, 100, 500}, new int[]{0, 150, 750}, new int[]{0, 250, 1000}, new int[]{0, 500, 1500}, new int[]{0, 1000, 2500}, new int[]{0, 1500, 3500}, new int[]{0, 2000, 4500}, new int[]{0, 3000, 6000}, new int[]{0, 5000, 10000}, new int[]{0, 10000, 100000}},
new int[]{50, 100, 250, 500, 1000, 1500, 3000, 5000, 10000, 20000},
"Novice I",
new String[]{"Novice II", "Novice III", "Novice IV", "Novice V", "Master I", "Master II", "Master III", "Master IV", "GRANDMASTER"},
AchievementCategory.CASTLE_SIEGE),
AchievementCategory.CASTLE_ASSAULT),
CASTLE_SIEGE_TANK_KIT("Tank", 0,
new String[]{"Castle Siege.TankKitKills", "Castle Siege TDM.TankKitKills"},
CASTLE_ASSAULT_TANK_KIT("Tank", 0,
new String[]{"Castle Assault.TankKitKills", "Castle Assault TDM.TankKitKills"},
new String[]{"Kill opponents while wearing the Tank Kit"},
new int[][]{new int[]{0, 100, 500}, new int[]{0, 150, 750}, new int[]{0, 250, 1000}, new int[]{0, 500, 1500}, new int[]{0, 1000, 2500}, new int[]{0, 1500, 3500}, new int[]{0, 2000, 4500}, new int[]{0, 3000, 6000}, new int[]{0, 5000, 10000}, new int[]{0, 10000, 100000}},
new int[]{50, 100, 250, 500, 1000, 1500, 3000, 5000, 10000, 20000},
"Novice I",
new String[]{"Novice II", "Novice III", "Novice IV", "Novice V", "Master I", "Master II", "Master III", "Master IV", "GRANDMASTER"},
AchievementCategory.CASTLE_SIEGE),
AchievementCategory.CASTLE_ASSAULT),
CASTLE_SIEGE_ARCHER_KIT("Archer", 0,
new String[]{"Castle Siege.ArcherKitKills", "Castle Siege TDM.ArcherKitKills"},
CASTLE_ASSAULT_ARCHER_KIT("Archer", 0,
new String[]{"Castle Assault.ArcherKitKills", "Castle Assault TDM.ArcherKitKills"},
new String[]{"Kill opponents while wearing the Archer Kit"},
new int[][]{new int[]{0, 100, 500}, new int[]{0, 150, 750}, new int[]{0, 250, 1000}, new int[]{0, 500, 1500}, new int[]{0, 1000, 2500}, new int[]{0, 1500, 3500}, new int[]{0, 2000, 4500}, new int[]{0, 3000, 6000}, new int[]{0, 5000, 10000}, new int[]{0, 10000, 100000}},
new int[]{50, 100, 250, 500, 1000, 1500, 3000, 5000, 10000, 20000},
"Novice I",
new String[]{"Novice II", "Novice III", "Novice IV", "Novice V", "Master I", "Master II", "Master III", "Master IV", "GRANDMASTER"},
AchievementCategory.CASTLE_SIEGE),
AchievementCategory.CASTLE_ASSAULT),
CASTLE_SIEGE_DEMOLITIONIST_KIT("Demolitionist", 0,
new String[]{"Castle Siege.DemolitionistKitKills", "Castle Siege TDM.DemolitionistKitKills"},
CASTLE_ASSAULT_DEMOLITIONIST_KIT("Demolitionist", 0,
new String[]{"Castle Assault.DemolitionistKitKills", "Castle Assault TDM.DemolitionistKitKills"},
new String[]{"Kill opponents while wearing the Demolitionist Kit"},
new int[][]{new int[]{0, 100, 500}, new int[]{0, 150, 750}, new int[]{0, 250, 1000}, new int[]{0, 500, 1500}, new int[]{0, 1000, 2500}, new int[]{0, 1500, 3500}, new int[]{0, 2000, 4500}, new int[]{0, 3000, 6000}, new int[]{0, 5000, 10000}, new int[]{0, 10000, 100000}},
new int[]{50, 100, 250, 500, 1000, 1500, 3000, 5000, 10000, 20000},
"Novice I",
new String[]{"Novice II", "Novice III", "Novice IV", "Novice V", "Master I", "Master II", "Master III", "Master IV", "GRANDMASTER"},
AchievementCategory.CASTLE_SIEGE),
AchievementCategory.CASTLE_ASSAULT),
CASTLE_SIEGE_WINNER("Siege", 0,
new String[]{"Castle Siege.Wins", "Castle Siege TDM.Wins"},
new String[]{"Win games of Castle Siege"},
CASTLE_ASSAULT_WINNER("Assault", 0,
new String[]{"Castle Assault.Wins", "Castle Assault TDM.Wins"},
new String[]{"Win games of Castle Assault"},
new int[][]{new int[]{0, 100, 500}, new int[]{0, 150, 750}, new int[]{0, 250, 1000}, new int[]{0, 500, 1500}, new int[]{0, 1000, 2500}, new int[]{0, 1500, 3500}, new int[]{0, 2000, 4500}, new int[]{0, 3000, 6000}, new int[]{0, 5000, 10000}, new int[]{0, 10000, 100000}},
new int[]{2, 5, 25, 50, 100, 150, 250, 500, 1000, 2000},
"Novice I",
new String[]{"Novice II", "Novice III", "Novice IV", "Novice V", "Master I", "Master II", "Master III", "Master IV", "GRANDMASTER"},
AchievementCategory.CASTLE_SIEGE),
CASTLE_SIEGE_MEDALIST("Medalist", 0,
new String[]{"Castle Siege.MedalsEarned", "Castle Siege TDM.MedalsEarned"},
new String[]{"Earn Bronze, Silver, or Gold Medals in Castle Siege Matches"},
new int[][]{new int[]{0, 100, 500}, new int[]{0, 150, 750}, new int[]{0, 250, 1000}, new int[]{0, 500, 1500}, new int[]{0, 1000, 2500}, new int[]{0, 1500, 3500}, new int[]{0, 2000, 4500}, new int[]{0, 3000, 6000}, new int[]{0, 5000, 10000}, new int[]{0, 10000, 100000}},
new int[]{2, 50, 150, 250, 500, 1000, 1500, 2500, 5000, 10000},
"Novice I",
new String[]{"Novice II", "Novice III", "Novice IV", "Novice V", "Master I", "Master II", "Master III", "Master IV", "GRANDMASTER"},
AchievementCategory.CASTLE_SIEGE),
AchievementCategory.CASTLE_ASSAULT),
//Champions
CHAMPIONS_WINS("Champion", 600,

View File

@ -85,9 +85,14 @@ public enum AchievementCategory
new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED },
Material.BLAZE_ROD, 0, GameCategory.SURVIVAL, "Witch Doctor Kit", false, GameDisplay.Wizards.getGameId()),
CASTLE_SIEGE("Castle Siege", new String[] {"Castle Siege", "Castle Siege TDM"},
CASTLE_ASSAULT("Castle Assault", new String[] {"Castle Assault", "Castle Assault TDM"},
new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.CROWNS_EARNED },
Material.DIAMOND_CHESTPLATE, 0, GameCategory.CLASSICS, null, false, GameDisplay.CastleSiege.getGameId(), GameDisplay.CastleSiegeTDM.getGameId()),
Material.DIAMOND_CHESTPLATE, 0, GameCategory.CLASSICS, null, false, GameDisplay.CastleAssault.getGameId(), GameDisplay.CastleAssaultTDM.getGameId()),
CASTLE_SIEGE("Castle Siege", null,
new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, new StatDisplay("Kills as Defenders"), new StatDisplay("Deaths as Defenders"),
new StatDisplay("Kills as Undead"), new StatDisplay("Deaths as Undead"), StatDisplay.GEMS_EARNED },
Material.DIAMOND_CHESTPLATE, 0, GameCategory.CLASSICS, null, false, GameDisplay.CastleSiege.getGameId()),
BAWK_BAWK_BATTLES("Bawk Bawk Battles", null,
new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.GEMS_EARNED },

View File

@ -14,8 +14,9 @@ public enum GameDisplay
Barbarians("A Barbarians Life", Material.WOOD_AXE, (byte)0, GameCategory.EXTRA, 2, false),
BossBattles("Boss Battles", Material.SKULL_ITEM, (byte) 0, GameCategory.EVENT, 55, false),
Bridge("The Bridges", Material.IRON_PICKAXE, (byte)0, GameCategory.SURVIVAL, 3, true),
CastleSiege("Castle Siege", Material.DIAMOND_CHESTPLATE, (byte)0, GameCategory.CLASSICS, 67, true),
CastleSiegeTDM("Castle Siege TDM", Material.DIAMOND_CHESTPLATE, (byte)0, GameCategory.CLASSICS, 68, false),
CastleAssault("Castle Assault", Material.DIAMOND_CHESTPLATE, (byte)0, GameCategory.CLASSICS, 67, true),
CastleAssaultTDM("Castle Assault TDM", Material.DIAMOND_CHESTPLATE, (byte)0, GameCategory.CLASSICS, 68, false),
CastleSiege("Castle Siege", Material.DIAMOND_CHESTPLATE, (byte)0, GameCategory.CLASSICS, 4, true),
ChampionsDominate("Champions Domination", "Champions", Material.BEACON, (byte)0, GameCategory.CHAMPIONS, 6, true),
ChampionsTDM("Champions TDM", "Champions", Material.GOLD_SWORD, (byte)0, GameCategory.CHAMPIONS, 5, true),
Christmas("Christmas Chaos", Material.SNOW_BALL, (byte)0, GameCategory.CLASSICS, 8, false),

View File

@ -8,23 +8,25 @@ import java.util.Map.Entry;
import org.bukkit.Location;
import mineplex.core.Managers;
import mineplex.core.common.Pair;
import mineplex.core.common.util.C;
import mineplex.core.hologram.Hologram;
import mineplex.core.leaderboard.LeaderboardRepository.LeaderboardSQLType;
public class Leaderboard
{
private String _display, _statDisplay;
private String _display;
private Pair<String, String> _statDisplay;
private String[] _statIds;
private int _size;
private LeaderboardSQLType _type;
private Location _loc;
private Hologram _holo;
public Leaderboard(String display, String statDisplayName, String[] statIds, LeaderboardSQLType type, Location displayLoc, int size)
public Leaderboard(String display, Pair<String, String> statDisplayNames, String[] statIds, LeaderboardSQLType type, Location displayLoc, int size)
{
_display = display;
_statDisplay = statDisplayName;
_statDisplay = statDisplayNames;
_statIds = statIds;
_type = type;
_size = size;
@ -57,7 +59,14 @@ public class Leaderboard
int place = 1;
for (Entry<String, Integer> entry : names.entrySet())
{
display.add(C.cGreen + "#" + place + " " + entry.getKey() + C.cRed + " " + entry.getValue() + " " + _statDisplay);
if (entry.getValue() == 1)
{
display.add(C.cGreen + "#" + place + " " + entry.getKey() + C.cRed + " " + entry.getValue() + " " + _statDisplay.getLeft());
}
else
{
display.add(C.cGreen + "#" + place + " " + entry.getKey() + C.cRed + " " + entry.getValue() + " " + _statDisplay.getRight());
}
place++;
}
_holo = new Hologram(Managers.get(LeaderboardManager.class).getHologramManager(), _loc, display.toArray(new String[display.size()])).start();

View File

@ -30,7 +30,7 @@ public class PreferenceMainMenu extends Menu<PreferencesManager>
protected Button[] setUp(Player player)
{
Rank rank = getPlugin().getClientManager().Get(player).GetRank();
boolean exclusive = rank.has(Rank.HELPER) || rank == Rank.YOUTUBE_SMALL || rank == Rank.YOUTUBE || rank == Rank.TWITCH;
boolean exclusive = rank.has(Rank.MAPDEV) || rank == Rank.YOUTUBE_SMALL || rank == Rank.YOUTUBE || rank == Rank.TWITCH;
Button[] buttons = new Button[exclusive ? INV_SIZE_MAX : INV_SIZE_MIN];

View File

@ -24,7 +24,8 @@ import nautilus.game.arcade.game.games.build.modes.DukesOfDecoration;
import nautilus.game.arcade.game.games.build.modes.TeamBuild;
import nautilus.game.arcade.game.games.buildmavericks.BuildMavericks;
import nautilus.game.arcade.game.games.cards.Cards;
import nautilus.game.arcade.game.games.castlesiege.CastleSiegeTDM;
import nautilus.game.arcade.game.games.castleassault.CastleAssault;
import nautilus.game.arcade.game.games.castleassault.CastleAssaultTDM;
import nautilus.game.arcade.game.games.castlesiege.CastleSiege;
import nautilus.game.arcade.game.games.champions.ChampionsCTF;
import nautilus.game.arcade.game.games.champions.ChampionsDominate;
@ -130,8 +131,9 @@ public enum GameType
Basketball(Basketball.class, GameDisplay.Basketball),
BossBattles(BossBattles.class, GameDisplay.BossBattles),
Bridge(Bridge.class, GameDisplay.Bridge),
CastleAssault(CastleAssault.class, GameDisplay.CastleAssault),
CastleAssaultTDM(CastleAssaultTDM.class, GameDisplay.CastleAssaultTDM),
CastleSiege(CastleSiege.class, GameDisplay.CastleSiege),
CastleSiegeTDM(CastleSiegeTDM.class, GameDisplay.CastleSiegeTDM),
ChampionsCTF(ChampionsCTF.class, GameDisplay.ChampionsCTF),
ChampionsDominate(ChampionsDominate.class, GameDisplay.ChampionsDominate),
ChampionsTDM(ChampionsTDM.class, GameDisplay.ChampionsTDM),

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege;
package nautilus.game.arcade.game.games.castleassault;
import java.util.ArrayList;
import java.util.HashMap;
@ -72,19 +72,19 @@ import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.GemData;
import nautilus.game.arcade.game.TeamGame;
import nautilus.game.arcade.game.games.castlesiege.data.KillStreakData;
import nautilus.game.arcade.game.games.castlesiege.data.medals.MedalData;
import nautilus.game.arcade.game.games.castlesiege.data.medals.MedalData.MedalLevel;
import nautilus.game.arcade.game.games.castlesiege.kits.KitArcher;
import nautilus.game.arcade.game.games.castlesiege.kits.KitDemolitionist;
import nautilus.game.arcade.game.games.castlesiege.kits.KitFighter;
import nautilus.game.arcade.game.games.castlesiege.kits.KitPlayer;
import nautilus.game.arcade.game.games.castlesiege.kits.KitTank;
import nautilus.game.arcade.game.games.castlesiege.data.medals.MedalType;
import nautilus.game.arcade.game.games.castleassault.data.KillStreakData;
import nautilus.game.arcade.game.games.castleassault.data.medals.MedalData;
import nautilus.game.arcade.game.games.castleassault.data.medals.MedalData.MedalLevel;
import nautilus.game.arcade.game.games.castleassault.data.medals.MedalType;
import nautilus.game.arcade.game.games.castleassault.kits.KitArcher;
import nautilus.game.arcade.game.games.castleassault.kits.KitDemolitionist;
import nautilus.game.arcade.game.games.castleassault.kits.KitFighter;
import nautilus.game.arcade.game.games.castleassault.kits.KitPlayer;
import nautilus.game.arcade.game.games.castleassault.kits.KitTank;
import nautilus.game.arcade.game.modules.compass.CompassModule;
import nautilus.game.arcade.kit.Kit;
public class CastleSiegeTDM extends TeamGame
public class CastleAssaultTDM extends TeamGame
{
private static final int MAX_FLINT_AND_STEEL_USES = 4;
private static final int ITEMS_PER_CHEST = 5;
@ -116,9 +116,9 @@ public class CastleSiegeTDM extends TeamGame
private boolean _writeScoreboard = true;
@SuppressWarnings("deprecation")
public CastleSiegeTDM(ArcadeManager manager)
public CastleAssaultTDM(ArcadeManager manager)
{
super(manager, GameType.CastleSiegeTDM,
super(manager, GameType.CastleAssaultTDM,
new Kit[]
{
//new KitAlchemist(manager),

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.data;
package nautilus.game.arcade.game.games.castleassault.data;
import org.bukkit.Location;
import org.bukkit.entity.Player;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.data;
package nautilus.game.arcade.game.games.castleassault.data;
public class KillStreakData
{

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.data;
package nautilus.game.arcade.game.games.castleassault.data;
import java.util.List;
@ -43,12 +43,15 @@ public class ObjectiveTNTSpawner
public boolean canPlaceFireAt(Block block)
{
if (!isSpawned())
for (Location loc : _locs)
{
return false;
if (UtilMath.offsetSquared(loc, block.getLocation()) <= 9)
{
return false;
}
}
return UtilMath.offsetSquared(_lastSpawnLoc, block.getLocation()) <= 9;
return true;
}
public long getNextTNT()

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.data;
package nautilus.game.arcade.game.games.castleassault.data;
import org.bukkit.Location;
import org.bukkit.Material;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.data;
package nautilus.game.arcade.game.games.castleassault.data;
import org.bukkit.Location;
import org.bukkit.Material;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.data.medals;
package nautilus.game.arcade.game.games.castleassault.data.medals;
import java.util.HashMap;
import java.util.Map;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.data.medals;
package nautilus.game.arcade.game.games.castleassault.data.medals;
public enum MedalType
{

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.kits;
package nautilus.game.arcade.game.games.castleassault.kits;
import org.bukkit.Material;
import org.bukkit.entity.Player;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.kits;
package nautilus.game.arcade.game.games.castleassault.kits;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
@ -120,8 +120,8 @@ public class KitArcher extends KitPlayer
}
else if (streak == 4)
{
player.sendMessage(C.cRedB + "You have received a Power I book as a Kill Streak Reward!");
player.getInventory().addItem(new EnchantedBookBuilder(1).setLevel(Enchantment.ARROW_DAMAGE, 1).build());
player.sendMessage(C.cRedB + "You have received 12 Arrows as a Kill Streak Reward!");
player.getInventory().addItem(new ItemBuilder(Material.ARROW).setAmount(12).setTitle(F.item("Fletched Arrow")).build());
}
else if (streak == 6)
{
@ -130,8 +130,8 @@ public class KitArcher extends KitPlayer
}
else if (streak == 8)
{
player.sendMessage(C.cRedB + "You have received a Power I book as a Kill Streak Reward!");
player.getInventory().addItem(new EnchantedBookBuilder(1).setLevel(Enchantment.ARROW_DAMAGE, 1).build());
player.sendMessage(C.cRedB + "You have received 32 Arrows as a Kill Streak Reward!");
player.getInventory().addItem(new ItemBuilder(Material.ARROW).setAmount(32).setTitle(F.item("Fletched Arrow")).build());
}
}
}

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.kits;
package nautilus.game.arcade.game.games.castleassault.kits;
import org.bukkit.Material;
import org.bukkit.entity.Player;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.kits;
package nautilus.game.arcade.game.games.castleassault.kits;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.kits;
package nautilus.game.arcade.game.games.castleassault.kits;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.kits;
package nautilus.game.arcade.game.games.castleassault.kits;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.kits;
package nautilus.game.arcade.game.games.castleassault.kits;
import org.bukkit.Material;
import org.bukkit.entity.Player;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.kits;
package nautilus.game.arcade.game.games.castleassault.kits;
import org.bukkit.Material;
import org.bukkit.entity.Player;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.kits;
package nautilus.game.arcade.game.games.castleassault.kits;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
@ -9,7 +9,7 @@ import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.game.games.castlesiege.CastleSiege;
import nautilus.game.arcade.game.games.castleassault.CastleAssault;
import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.ProgressingKit;
@ -32,9 +32,9 @@ public abstract class KitPlayer extends ProgressingKit
public abstract void awardKillStreak(Player player, int streak);
protected CastleSiege getGame()
protected CastleAssault getGame()
{
return (CastleSiege) Manager.GetGame();
return (CastleAssault) Manager.GetGame();
}
protected void giveRegeneration(Player player)

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.kits;
package nautilus.game.arcade.game.games.castleassault.kits;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.kits;
package nautilus.game.arcade.game.games.castleassault.kits;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.kits;
package nautilus.game.arcade.game.games.castleassault.kits;
import java.util.Map;
import java.util.WeakHashMap;

View File

@ -1,973 +0,0 @@
package nautilus.game.arcade.game.games.castlesiege;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.Effect;
import org.bukkit.EntityEffect;
import org.bukkit.FireworkEffect.Type;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.entity.Creature;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.FallingBlock;
import org.bukkit.entity.Horse;
import org.bukkit.entity.Horse.Style;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.HandlerList;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityTargetEvent;
import org.bukkit.event.entity.ExplosionPrimeEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.player.PlayerEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilEvent.ActionType;
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.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTime;
import mineplex.core.recharge.Recharge;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.events.PlayerGameRespawnEvent;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.TeamGame;
import nautilus.game.arcade.game.games.castlesiege.classickits.KitHumanKnight;
import nautilus.game.arcade.game.games.castlesiege.classickits.KitHumanMarksman;
import nautilus.game.arcade.game.games.castlesiege.classickits.KitHumanPeasant;
import nautilus.game.arcade.game.games.castlesiege.classickits.KitUndeadArcher;
import nautilus.game.arcade.game.games.castlesiege.classickits.KitUndeadGhoul;
import nautilus.game.arcade.game.games.castlesiege.classickits.KitUndeadZombie;
import nautilus.game.arcade.game.modules.compass.CompassModule;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.NullKit;
import nautilus.game.arcade.stats.BloodThirstyStatTracker;
import nautilus.game.arcade.stats.KingDamageStatTracker;
import nautilus.game.arcade.stats.KingSlayerStatTracker;
import nautilus.game.arcade.stats.TeamDeathsStatTracker;
import nautilus.game.arcade.stats.TeamKillsStatTracker;
import nautilus.game.arcade.stats.WinAsTeamStatTracker;
public class CastleSiegeClassic extends TeamGame
{
public static class KingDamageEvent extends PlayerEvent
{
private static final HandlerList handlers = new HandlerList();
public static HandlerList getHandlerList()
{
return handlers;
}
@Override
public HandlerList getHandlers()
{
return getHandlerList();
}
private final double _damage;
public KingDamageEvent(Player who, double damage)
{
super(who);
_damage = damage;
}
public double getDamage()
{
return _damage;
}
}
public static class KingSlaughterEvent extends PlayerEvent
{
private static final HandlerList handlers = new HandlerList();
public static HandlerList getHandlerList()
{
return handlers;
}
@Override
public HandlerList getHandlers()
{
return getHandlerList();
}
public KingSlaughterEvent(Player who)
{
super(who);
}
}
private ArrayList<String> _lastScoreboard = new ArrayList<String>();
private long _tntSpawn = 0;
private ArrayList<Location> _tntSpawns = new ArrayList<Location>();
private ArrayList<Location> _tntWeakness = new ArrayList<Location>();
private HashMap<Player, FallingBlock> _tntCarry = new HashMap<Player, FallingBlock>();
private HashSet<Player> _tntCarryEnd = new HashSet<Player>();
private ArrayList<Location> _kingLocs;
private Creature _king;
private Location _kingLoc;
private String _kingName;
private Player _kingDamager = null;
private int _kingHealth = 40;
private ArrayList<Location> _peasantSpawns;
private ArrayList<Location> _horseSpawns;
public CastleSiegeClassic(ArcadeManager manager)
{
super(manager, GameType.CastleSiege,
new Kit[]
{
new KitHumanMarksman(manager),
new KitHumanKnight(manager),
//new KitHumanBrawler(manager),
//new KitHumanAssassin(manager),
new NullKit(manager),
new KitHumanPeasant(manager),
new NullKit(manager),
new KitUndeadGhoul(manager),
new KitUndeadArcher(manager),
new KitUndeadZombie(manager),
},
new String[]
{
F.elem(C.cAqua + "Defenders") + C.cWhite + " must defend the King.",
F.elem(C.cAqua + "Defenders") + C.cWhite + " win when the sun rises.",
F.elem(C.cAqua + "Defenders") + C.cWhite + " respawn as wolves.",
"",
F.elem(C.cRed + "Undead") + C.cWhite + " must kill the King.",
F.elem(C.cRed + "Undead") + C.cWhite + " lose when the sun rises.",
});
_help = new String[]
{
"Marksmen are extremely important to defence!",
"It's recommended 50%+ of defence are Marksmen.",
"Use Barricades to block the Undeads path.",
"Use TNT to destroy weak points in walls.",
"Weak points are marked by cracked stone brick.",
"Undead can break fences with their axes.",
"Undead Archers must pick up arrows from the ground.",
};
this.StrictAntiHack = true;
this.HungerSet = 20;
this.DeathOut = false;
this.WorldTimeSet = 14000; //14000
this.BlockPlaceAllow.add(85);
_kingName = C.cYellow + C.Bold + "King Sparklez";
GameTeam notRedTeam = null;
for (GameTeam team : GetTeamList())
{
if (team.GetColor() != ChatColor.RED)
{
notRedTeam = team;
break;
}
}
registerStatTrackers(
new KingSlayerStatTracker(this),
new BloodThirstyStatTracker(this),
new KingDamageStatTracker(this),
new TeamDeathsStatTracker(this),
new TeamKillsStatTracker(this)
);
registerChatStats(
Kills,
Deaths,
KDRatio,
BlankLine,
Assists,
DamageDealt,
DamageTaken
);
registerChatStats();
new CompassModule()
.setGiveCompass(true)
.setGiveCompassToSpecs(true)
.setGiveCompassToAlive(false)
.register(this);
}
@Override
public void ParseData()
{
_tntSpawns = WorldData.GetDataLocs("RED");
_tntWeakness = WorldData.GetDataLocs("BLACK");
_kingLocs = WorldData.GetDataLocs("YELLOW");
_peasantSpawns = WorldData.GetDataLocs("GREEN");
_horseSpawns = WorldData.GetDataLocs("BROWN");
}
@Override
public void RestrictKits()
{
for (Kit kit : GetKits())
{
for (GameTeam team : GetTeamList())
{
if (team.GetColor() == ChatColor.RED)
{
if (kit.GetName().contains("Castle"))
team.GetRestrictedKits().add(kit);
team.SetName("Undead");
}
else
{
if (kit.GetName().contains("Undead"))
team.GetRestrictedKits().add(kit);
team.SetRespawnTime(8);
team.SetName("Defenders");
}
}
}
}
@EventHandler(priority = EventPriority.HIGH)
public void registerTeamTracker(GameStateChangeEvent event)
{
if (event.GetState() == GameState.Recruit)
{
GameTeam notRed = null;
for (GameTeam team : GetTeamList())
{
if (team.GetColor() == ChatColor.RED)
continue;
notRed = team;
break;
}
if (notRed != null)
{
registerStatTrackers(new WinAsTeamStatTracker(this, notRed, "ForTheKing"));
System.out.println("Successfully registered For the King StatTrak");
}
}
}
@EventHandler
public void MoveKits(GameStateChangeEvent event)
{
if (event.GetState() != GameState.Prepare)
return;
for (int i = 0; i < WorldData.GetDataLocs("PINK").size() && i < 3; i++)
{
if (GetKits().length <= 5 + i)
continue;
this.CreatureAllowOverride = true;
Entity ent = GetKits()[5 + i].SpawnEntity(WorldData.GetDataLocs("PINK").get(i));
this.CreatureAllowOverride = false;
Manager.GetLobby().addKitLocation(ent, GetKits()[5 + i], WorldData.GetDataLocs("PINK").get(i));
}
}
@EventHandler
public void HorseSpawn(GameStateChangeEvent event)
{
if (event.GetState() != GameState.Prepare)
return;
for (Location loc : _horseSpawns)
{
this.CreatureAllowOverride = true;
Horse horse = loc.getWorld().spawn(loc, Horse.class);
this.CreatureAllowOverride = false;
horse.setAdult();
horse.setAgeLock(true);
horse.setColor(org.bukkit.entity.Horse.Color.BLACK);
horse.setStyle(Style.BLACK_DOTS);
horse.setMaxDomestication(1);
horse.getInventory().setSaddle(new ItemStack(Material.SADDLE));
horse.getInventory().setArmor(new ItemStack(Material.IRON_BARDING));
horse.setMaxHealth(60);
horse.setHealth(horse.getMaxHealth());
horse.setCustomName("War Horse");
}
}
@EventHandler
public void HorseInteract(PlayerInteractEntityEvent event)
{
if (!(event.getRightClicked() instanceof Horse))
return;
Player player = event.getPlayer();
GameTeam team = GetTeam(player);
if (team == null || team.GetColor() == ChatColor.RED || !IsAlive(player))
{
event.setCancelled(true);
}
}
@EventHandler
public void HorseDamageCancel(CustomDamageEvent event)
{
if (!(event.GetDamageeEntity() instanceof Horse))
return;
Player player = event.GetDamagerPlayer(true);
if (player == null)
return;
if (!IsAlive(player))
return;
if (GetTeam(player) == null)
return;
if (GetTeam(player).GetColor() == ChatColor.RED)
return;
event.SetCancelled("Horse Team Damage");
}
@EventHandler(priority = EventPriority.HIGH)
public void GameStateChange(GameStateChangeEvent event)
{
if (event.GetState() != GameState.Prepare)
return;
//Spawn King
this.CreatureAllowOverride = true;
_kingLoc = _kingLocs.get(UtilMath.r(_kingLocs.size()));
_king = (Creature) _kingLoc.getWorld().spawnEntity(_kingLoc, EntityType.ZOMBIE);
_king.getEquipment().setHelmet(new ItemStack(Material.DIAMOND_HELMET));
_king.getEquipment().setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE));
_king.getEquipment().setLeggings(new ItemStack(Material.DIAMOND_LEGGINGS));
_king.getEquipment().setBoots(new ItemStack(Material.DIAMOND_BOOTS));
_king.getEquipment().setItemInHand(new ItemStack(Material.DIAMOND_SWORD));
_king.setCustomName(_kingName);
_king.setCustomNameVisible(true);
_king.setRemoveWhenFarAway(false);
this.CreatureAllowOverride = false;
}
@EventHandler(priority = EventPriority.HIGH)
public void SetDefenderRespawn(GameStateChangeEvent event)
{
if (event.GetState() != GameState.Live)
return;
//Change to Peasant Spawns
this.GetTeam(ChatColor.AQUA).SetSpawns(_peasantSpawns);
}
@EventHandler
public void KingTarget(EntityTargetEvent event)
{
event.setCancelled(true);
}
@EventHandler
public void KingDamage(CustomDamageEvent event)
{
if (_king == null || !_king.isValid())
return;
if (!event.GetDamageeEntity().equals(_king))
return;
event.SetCancelled("King Damage");
Player damager = event.GetDamagerPlayer(true);
if (damager == null) return;
GameTeam team = GetTeam(damager);
if (team != null && team.GetColor() == ChatColor.RED)
{
if (!Recharge.Instance.use(damager, "Damage King", 400, false, false))
return;
if (!IsAlive(damager))
{
return;
}
_king.playEffect(EntityEffect.HURT);
_kingDamager = damager;
_kingHealth--;
Bukkit.getPluginManager().callEvent(new KingDamageEvent(damager, 1));
if (_kingHealth < 0)
_kingHealth = 0;
WriteScoreboard();
if (_kingHealth <= 0)
_king.damage(500);
EndCheck();
}
}
@EventHandler
public void KingUpdate(UpdateEvent event)
{
if (GetState() != GameState.Live)
return;
if (event.getType() != UpdateType.SEC)
return;
if (_king == null)
return;
if (UtilMath.offset(_king.getLocation(), _kingLoc) > 6)
{
_king.teleport(_kingLoc);
}
else
{
UtilEnt.CreatureMove(_king, _kingLoc, 1f);
}
}
@EventHandler
public void PlayerDeath(PlayerGameRespawnEvent event)
{
if (GetTeam(ChatColor.AQUA).HasPlayer(event.GetPlayer()))
SetKit(event.GetPlayer(), GetKits()[3], true);
}
@Override
@EventHandler
public void ScoreboardUpdate(UpdateEvent event)
{
if (event.getType() != UpdateType.FAST)
return;
WriteScoreboard();
}
public void WriteScoreboard()
{
//Get Values
HashMap<String, Integer> _scoreGroup = new HashMap<String, Integer>();
_scoreGroup.put(C.cAqua + "Defenders", 0);
_scoreGroup.put(C.cDAqua + "Wolves", 0);
_scoreGroup.put(C.cRed + "Undead", 0);
for (Player player : UtilServer.getPlayers())
{
if (!IsAlive(player))
continue;
Kit kit = GetKit(player);
if (kit == null) continue;
if (kit.GetName().contains("Castle"))
{
if (kit.GetName().contains("Wolf"))
{
_scoreGroup.put(C.cDAqua + "Wolves", 1 + _scoreGroup.get(C.cDAqua + "Wolves"));
}
else
{
_scoreGroup.put(C.cAqua + "Defenders", 1 + _scoreGroup.get(C.cAqua + "Defenders"));
}
}
else if (kit.GetName().contains("Undead"))
{
_scoreGroup.put(C.cRed + "Undead", 1 + _scoreGroup.get(C.cRed + "Undead"));
}
}
//Wipe Last
Scoreboard.reset();
//Teams
for (String group : _scoreGroup.keySet())
{
Scoreboard.writeNewLine();
Scoreboard.write(group);
Scoreboard.write(ChatColor.getLastColors(group) + _scoreGroup.get(group) + " Players");
}
//King
if (_king != null && _king.isValid())
{
Scoreboard.writeNewLine();
Scoreboard.write(C.cYellow + C.Bold + "King");
Scoreboard.write(_kingHealth + " Health");
}
long timeLeft = 24000 - WorldTimeSet;
timeLeft = timeLeft / 20 * 1000;
if (timeLeft > 0)
{
Scoreboard.writeNewLine();
Scoreboard.write(C.cYellow + C.Bold + "Sun Rise");
Scoreboard.write(UtilTime.MakeStr(timeLeft, 0));
}
else
{
Scoreboard.writeNewLine();
Scoreboard.write(C.cYellow + C.Bold + "Sun Rise");
Scoreboard.write("Undead Burning!");
for (Player player : GetTeam(ChatColor.RED).GetPlayers(true))
Manager.GetCondition().Factory().Ignite("Sun Damage", player, player, 5, false, false);
}
Scoreboard.draw();
}
@Override
public void EndCheck()
{
if (!IsLive())
return;
if (this.WorldTimeSet > 24100 || GetTeam(ChatColor.RED).GetSize() == 0)
{
SetCustomWinLine(_kingName + ChatColor.RESET + " has survived the siege!");
AnnounceEnd(GetTeam(ChatColor.AQUA));
for (GameTeam team : GetTeamList())
{
if (WinnerTeam != null && team.equals(WinnerTeam))
{
for (Player player : team.GetPlayers(false))
{
AddGems(player, 10, "Winning Team", false, false);
}
}
for (Player player : team.GetPlayers(false))
if (player.isOnline())
AddGems(player, 10, "Participation", false, false);
}
SetState(GameState.End);
}
if (!_king.isValid() || GetTeam(ChatColor.AQUA).GetSize() == 0)
{
if (_kingDamager != null)
{
SetCustomWinLine(C.cRed + _kingDamager.getName() + C.cWhite + " slaughtered " + _kingName + ChatColor.RESET + "!");
AddGems(_kingDamager, 20, "King Slayer", false, false);
Bukkit.getPluginManager().callEvent(new KingSlaughterEvent(_kingDamager));
}
else
SetCustomWinLine(_kingName + ChatColor.RESET + " has died!");
AnnounceEnd(GetTeam(ChatColor.RED));
for (GameTeam team : GetTeamList())
{
if (WinnerTeam != null && team.equals(WinnerTeam))
{
for (Player player : team.GetPlayers(false))
{
AddGems(player, 10, "Winning Team", false, false);
}
}
for (Player player : team.GetPlayers(false))
if (player.isOnline())
AddGems(player, 10, "Participation", false, false);
}
SetState(GameState.End);
}
}
@EventHandler
public void TNTSpawn(UpdateEvent event)
{
if (GetState() != GameState.Live)
return;
if (event.getType() != UpdateType.SEC)
return;
if (!UtilTime.elapsed(this.GetStateTime(), 20000))
return;
if (!UtilTime.elapsed(_tntSpawn, 25000))
return;
if (_tntSpawns.isEmpty())
return;
Location loc = _tntSpawns.get(UtilMath.r(_tntSpawns.size()));
if (loc.getBlock().getTypeId() == 46)
return;
loc.getBlock().setTypeId(46);
_tntSpawn = System.currentTimeMillis();
}
@EventHandler(priority = EventPriority.LOW)
public void TNTPickup(PlayerInteractEvent event)
{
if (event.getAction() != Action.RIGHT_CLICK_BLOCK && event.getAction() != Action.LEFT_CLICK_BLOCK)
return;
if (event.getClickedBlock().getTypeId() != 46)
return;
event.setCancelled(true);
Player player = event.getPlayer();
if (!IsAlive(player))
return;
if (!GetTeam(ChatColor.RED).HasPlayer(player))
return;
if (_tntCarry.containsKey(player))
return;
event.getClickedBlock().setTypeId(0);
FallingBlock tnt = player.getWorld().spawnFallingBlock(player.getEyeLocation(), 46, (byte) 0);
player.eject();
player.setPassenger(tnt);
_tntCarry.put(player, tnt);
UtilPlayer.message(player, F.main("Game", "You picked up " + F.skill("TNT") + "."));
UtilPlayer.message(player, F.main("Game", F.elem("Right-Click") + " to detonate yourself."));
}
@EventHandler(priority = EventPriority.NORMAL)
public void TNTUse(PlayerInteractEvent event)
{
if (event.isCancelled())
return;
if (event.getAction() != Action.RIGHT_CLICK_BLOCK && event.getAction() != Action.RIGHT_CLICK_AIR)
return;
Player player = event.getPlayer();
if (!_tntCarry.containsKey(player))
return;
event.setCancelled(true);
for (Location loc : _tntSpawns)
{
if (UtilMath.offset(player.getLocation(), loc) < 16)
{
UtilPlayer.message(player, F.main("Game", "You cannot " + F.skill("Detonate") + " so far from the Castle."));
return;
}
}
_tntCarry.remove(player).remove();
TNTPrimed tnt = player.getWorld().spawn(player.getEyeLocation(), TNTPrimed.class);
tnt.setFuseTicks(0);
UtilPlayer.message(player, F.main("Game", "You used " + F.skill("Detonate") + "."));
}
@EventHandler(priority = EventPriority.LOWEST)
public void TNTDeath(PlayerDeathEvent event)
{
Player player = event.getEntity();
if (!_tntCarry.containsKey(player))
return;
//Remove the TNT
_tntCarry.get(player).remove();
//Flag for Removal
_tntCarryEnd.add(player);
TNTPrimed tnt = player.getWorld().spawn(player.getEyeLocation(), TNTPrimed.class);
tnt.setFuseTicks(0);
UtilPlayer.message(player, F.main("Game", "You used " + F.skill("Detonate") + "."));
}
@EventHandler(priority = EventPriority.LOWEST)
public void TNTDamageDivert(ProjectileHitEvent event)
{
Iterator<Player> playerIterator = _tntCarry.keySet().iterator();
while (playerIterator.hasNext())
{
Player player = playerIterator.next();
if (player.getPassenger() == null)
continue;
double dist = UtilMath.offset(player.getPassenger().getLocation(), event.getEntity().getLocation().add(event.getEntity().getVelocity()));
if (dist < 2)
{
int damage = (int) (5 * (event.getEntity().getVelocity().length() / 3d));
//Damage Event
Manager.GetDamage().NewDamageEvent(player, (LivingEntity)event.getEntity().getShooter(), event.getEntity(),
DamageCause.CUSTOM, damage, true, false, false,
null, GetName());
event.getEntity().remove();
}
if (_tntCarryEnd.contains(player))
{
playerIterator.remove();
}
}
_tntCarryEnd.clear();
}
@EventHandler
public void TNTExpire(UpdateEvent event)
{
if (event.getType() != UpdateType.FASTER)
return;
Iterator<Player> tntIterator = _tntCarry.keySet().iterator();
while (tntIterator.hasNext())
{
Player player = tntIterator.next();
FallingBlock block = _tntCarry.get(player);
if (player.isDead() || !block.isValid() || block.getTicksLived() > 1500)
{
player.eject();
block.remove();
TNTPrimed tnt = player.getWorld().spawn(player.getEyeLocation(), TNTPrimed.class);
tnt.setFuseTicks(0);
tntIterator.remove();
continue;
}
//Firework
UtilFirework.playFirework(player.getEyeLocation(), Type.BURST, Color.RED, false, false);
}
}
@EventHandler
public void TNTWeakness(ExplosionPrimeEvent event)
{
Location weakness = null;
for (Location loc : _tntWeakness)
{
if (UtilMath.offset(loc, event.getEntity().getLocation()) < 4)
{
weakness = loc;
break;
}
}
if (weakness == null)
return;
_tntWeakness.remove(weakness);
final Location extra = weakness;
for (int i = 0; i < 10; i++)
{
Manager.getPlugin().getServer().getScheduler().scheduleSyncDelayedTask(Manager.getPlugin(), new Runnable()
{
public void run()
{
TNTPrimed tnt = extra.getWorld().spawn(extra.clone().add(3 - UtilMath.r(6), 5 + UtilMath.r(2), 3 - UtilMath.r(6)), TNTPrimed.class);
tnt.setFuseTicks(0);
tnt.setIsIncendiary(true);
}
}, i * 3);
}
weakness.getWorld().playSound(weakness, Sound.EXPLODE, 16f, 0.8f);
}
@EventHandler(priority = EventPriority.HIGH)
public void AttackerBlockBreak(org.bukkit.event.block.BlockBreakEvent event)
{
GameTeam team = GetTeam(event.getPlayer());
if (team == null)
return;
if (team.GetColor() != ChatColor.RED)
return;
if (event.getBlock().getTypeId() == 85)
event.setCancelled(false);
}
@EventHandler
public void DefenderBlockPlace(org.bukkit.event.block.BlockPlaceEvent event)
{
GameTeam team = GetTeam(event.getPlayer());
if (team == null)
return;
if (team.GetColor() != ChatColor.AQUA)
return;
if (event.getBlock().getTypeId() != 85)
return;
for (Block block : UtilBlock.getSurrounding(event.getBlock(), false))
{
if (block.isLiquid())
{
event.setCancelled(true);
UtilPlayer.message(event.getPlayer(), F.main("Game", "You cannot place " + F.elem("Barricade") + " in water."));
}
}
if (event.getBlockAgainst().getTypeId() == 85)
{
event.setCancelled(true);
UtilPlayer.message(event.getPlayer(), F.main("Game", "You cannot place " + F.elem("Barricade") + " on each other."));
}
if (_king != null && UtilMath.offset(_king.getLocation(), event.getBlock().getLocation().add(0.5, 0.5, 0.5)) < 4)
{
event.setCancelled(true);
UtilPlayer.message(event.getPlayer(), F.main("Game", "You cannot place " + F.elem("Barricade") + " near " + F.elem(C.cAqua + _kingName) + "."));
}
}
@EventHandler
public void DefenderBlockInteract(PlayerInteractEvent event)
{
if (!UtilEvent.isAction(event, ActionType.R_BLOCK))
return;
GameTeam team = GetTeam(event.getPlayer());
if (team == null)
return;
if (team.GetColor() != ChatColor.AQUA)
return;
if (event.getClickedBlock() == null || event.getClickedBlock().getTypeId() != 85)
return;
UtilParticle.PlayParticle(ParticleType.FIREWORKS_SPARK, event.getClickedBlock().getLocation().add(0.5, 0.5, 0.5), 0, 0, 0, 0, 1,
ViewDist.LONG, UtilServer.getPlayers());
event.getClickedBlock().getWorld().playSound(event.getClickedBlock().getLocation(), Sound.NOTE_STICKS, 2f, 1f);
Manager.GetBlockRestore().add(event.getClickedBlock(), 0, (byte) 0, 1000);
}
@EventHandler
public void DayTimer(UpdateEvent event)
{
if (GetState() != GameState.Live)
return;
if (event.getType() != UpdateType.TICK)
return;
WorldTimeSet = (WorldTimeSet + 1);
}
@EventHandler
public void SnowDamage(UpdateEvent event)
{
if (GetState() != GameState.Live)
return;
if (event.getType() != UpdateType.FAST)
return;
for (Player player : GetPlayers(true))
if (player.getLocation().getBlock().getTypeId() == 78)
{
//Damage Event
Manager.GetDamage().NewDamageEvent(player, null, null,
DamageCause.DROWNING, 2, false, true, false,
"Snow", "Snow Damage");
player.getWorld().playEffect(player.getLocation(), Effect.STEP_SOUND, 80);
}
}
}

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.classickits;
package nautilus.game.arcade.game.games.castlesiege.kits;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.KitAvailability;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.classickits;
package nautilus.game.arcade.game.games.castlesiege.kits;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.classickits;
package nautilus.game.arcade.game.games.castlesiege.kits;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.classickits;
package nautilus.game.arcade.game.games.castlesiege.kits;
import mineplex.core.disguise.disguises.DisguiseWolf;
import mineplex.core.itemstack.ItemStackFactory;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.classickits;
package nautilus.game.arcade.game.games.castlesiege.kits;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.KitAvailability;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.classickits;
package nautilus.game.arcade.game.games.castlesiege.kits;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilInv;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.classickits;
package nautilus.game.arcade.game.games.castlesiege.kits;
import mineplex.core.common.util.C;
import mineplex.core.disguise.disguises.DisguisePigZombie;

View File

@ -1,4 +1,4 @@
package nautilus.game.arcade.game.games.castlesiege.classickits;
package nautilus.game.arcade.game.games.castlesiege.kits;
import mineplex.core.common.util.C;
import mineplex.core.disguise.disguises.DisguiseZombie;

View File

@ -11,7 +11,7 @@ import org.bukkit.event.EventPriority;
import mineplex.core.common.util.UtilPlayer;
import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.games.castlesiege.classickits.KitUndead;
import nautilus.game.arcade.game.games.castlesiege.kits.KitUndead;
import nautilus.game.arcade.game.games.hideseek.kits.KitSeeker;
public class BloodThirstyStatTracker extends StatTracker<Game>

View File

@ -10,20 +10,20 @@ import org.bukkit.event.EventPriority;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.games.castlesiege.CastleSiegeClassic;
import nautilus.game.arcade.game.games.castlesiege.CastleSiege;
public class KingDamageStatTracker extends StatTracker<CastleSiegeClassic>
public class KingDamageStatTracker extends StatTracker<CastleSiege>
{
private final Map<UUID, Double> _kingDamage = new HashMap<>();
private double _totalKingDamage = 0;
public KingDamageStatTracker(CastleSiegeClassic game)
public KingDamageStatTracker(CastleSiege game)
{
super(game);
}
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
public void onKingDamage(CastleSiegeClassic.KingDamageEvent event)
public void onKingDamage(CastleSiege.KingDamageEvent event)
{
if (getGame().GetState() != Game.GameState.Live)
return;

View File

@ -3,7 +3,7 @@ package nautilus.game.arcade.stats;
import org.bukkit.event.EventHandler;
import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.games.castlesiege.CastleSiegeClassic;
import nautilus.game.arcade.game.games.castlesiege.CastleSiege;
public class KingSlayerStatTracker extends StatTracker<Game>
{
@ -13,7 +13,7 @@ public class KingSlayerStatTracker extends StatTracker<Game>
}
@EventHandler
public void onKingSlaughtered(CastleSiegeClassic.KingSlaughterEvent event)
public void onKingSlaughtered(CastleSiege.KingSlaughterEvent event)
{
if (getGame().GetState() != Game.GameState.Live)
return;