Reorganise of code
This commit is contained in:
parent
4148af9214
commit
833ebd310e
@ -1,18 +1,10 @@
|
||||
package nautilus.game.arcade.game.games.moba;
|
||||
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.common.entity.ClientArmorStand;
|
||||
import mineplex.core.common.util.*;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.minecraft.game.core.combat.DeathMessageType;
|
||||
import mineplex.minecraft.game.core.condition.Condition;
|
||||
import mineplex.minecraft.game.core.condition.Condition.ConditionType;
|
||||
import mineplex.minecraft.game.core.condition.events.ConditionApplyEvent;
|
||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.GameType;
|
||||
import nautilus.game.arcade.events.GamePrepareCountdownCommence;
|
||||
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||
import nautilus.game.arcade.game.DebugCommand;
|
||||
import nautilus.game.arcade.game.GameTeam;
|
||||
@ -20,22 +12,26 @@ import nautilus.game.arcade.game.TeamGame;
|
||||
import nautilus.game.arcade.game.games.moba.boss.BossManager;
|
||||
import nautilus.game.arcade.game.games.moba.boss.wither.WitherBoss;
|
||||
import nautilus.game.arcade.game.games.moba.fountain.MobaFountain;
|
||||
import nautilus.game.arcade.game.games.moba.general.TeamDamageManager;
|
||||
import nautilus.game.arcade.game.games.moba.gold.GoldManager;
|
||||
import nautilus.game.arcade.game.games.moba.kit.*;
|
||||
import nautilus.game.arcade.game.games.moba.kit.HeroKit;
|
||||
import nautilus.game.arcade.game.games.moba.kit.KitPlayer;
|
||||
import nautilus.game.arcade.game.games.moba.kit.anath.HeroAnath;
|
||||
import nautilus.game.arcade.game.games.moba.kit.bob.HeroBob;
|
||||
import nautilus.game.arcade.game.games.moba.kit.dana.HeroDana;
|
||||
import nautilus.game.arcade.game.games.moba.kit.devon.HeroDevon;
|
||||
import nautilus.game.arcade.game.games.moba.kit.hattori.HeroHattori;
|
||||
import nautilus.game.arcade.game.games.moba.kit.hp.HPManager;
|
||||
import nautilus.game.arcade.game.games.moba.minion.MinionManager;
|
||||
import nautilus.game.arcade.game.games.moba.prepare.PrepareManager;
|
||||
import nautilus.game.arcade.game.games.moba.prepare.PrepareSelection;
|
||||
import nautilus.game.arcade.game.games.moba.recall.Recall;
|
||||
import nautilus.game.arcade.game.games.moba.shop.MobaShop;
|
||||
import nautilus.game.arcade.game.games.moba.structure.point.CapturePoint;
|
||||
import nautilus.game.arcade.game.games.moba.structure.tower.Tower;
|
||||
import nautilus.game.arcade.game.games.moba.structure.point.CapturePointManager;
|
||||
import nautilus.game.arcade.game.games.moba.structure.tower.TowerManager;
|
||||
import nautilus.game.arcade.game.modules.CustomScoreboardModule;
|
||||
import nautilus.game.arcade.game.modules.compass.CompassModule;
|
||||
import nautilus.game.arcade.kit.Kit;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.scoreboard.GameScoreboard;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
@ -45,11 +41,8 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityRegainHealthEvent;
|
||||
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
|
||||
import org.bukkit.event.entity.ProjectileHitEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@ -61,13 +54,9 @@ public class Moba extends TeamGame
|
||||
"..."
|
||||
};
|
||||
private static final long PREPARE_TIME = TimeUnit.MINUTES.toMillis(1);
|
||||
// Health per 5 seconds.
|
||||
private static final double HP5 = 0.33;
|
||||
|
||||
private final HeroKit[] _kits;
|
||||
|
||||
private final List<CapturePoint> _capturePoints = new ArrayList<>(3);
|
||||
|
||||
private final Set<MobaPlayer> _playerData = new HashSet<>();
|
||||
|
||||
private final Set<Listener> _listeners = new HashSet<>();
|
||||
@ -76,6 +65,7 @@ public class Moba extends TeamGame
|
||||
private final GoldManager _goldManager;
|
||||
private final BossManager _boss;
|
||||
private final TowerManager _tower;
|
||||
private final CapturePointManager _capturePoint;
|
||||
|
||||
public Moba(ArcadeManager manager)
|
||||
{
|
||||
@ -98,30 +88,29 @@ public class Moba extends TeamGame
|
||||
HungerSet = 20;
|
||||
DamageFall = false;
|
||||
|
||||
Listener preGameSelection = new PregameSelection(this);
|
||||
_listeners.add(preGameSelection);
|
||||
// Instantiate managers
|
||||
|
||||
Listener recall = new Recall(this);
|
||||
_listeners.add(recall);
|
||||
// Global managers
|
||||
_shop = registerManager(new MobaShop(this));
|
||||
_goldManager = registerManager(new GoldManager(this));
|
||||
registerManager(new HPManager(this));
|
||||
registerManager(new TeamDamageManager(this));
|
||||
registerManager(new MobaFountain(this));
|
||||
registerManager(new Recall(this));
|
||||
|
||||
MobaShop shop = new MobaShop(this);
|
||||
_shop = shop;
|
||||
_listeners.add(shop);
|
||||
// Pregame managers
|
||||
registerManager(new PrepareManager(this));
|
||||
registerManager(new PrepareSelection(this));
|
||||
|
||||
GoldManager goldManager = new GoldManager(this);
|
||||
_goldManager = goldManager;
|
||||
_listeners.add(goldManager);
|
||||
// Bosses
|
||||
_boss = registerManager(new BossManager(this));
|
||||
|
||||
MobaFountain fountain = new MobaFountain(this);
|
||||
_listeners.add(fountain);
|
||||
// Structures
|
||||
_tower = registerManager(new TowerManager(this));
|
||||
_capturePoint = registerManager(new CapturePointManager(this));
|
||||
|
||||
BossManager boss = new BossManager(this);
|
||||
_boss = boss;
|
||||
_listeners.add(boss);
|
||||
|
||||
TowerManager tower = new TowerManager(this);
|
||||
_tower = tower;
|
||||
_listeners.add(tower);
|
||||
// Minions
|
||||
//registerManager(new MinionManager(this));
|
||||
|
||||
new CompassModule()
|
||||
.setGiveCompass(true)
|
||||
@ -169,20 +158,20 @@ public class Moba extends TeamGame
|
||||
GameState state = GetState();
|
||||
GameTeam perspectiveTeam = GetTeam(perspective);
|
||||
GameTeam subjectTeam = GetTeam(subject);
|
||||
MobaPlayer mobaPlayer = getData(subject);
|
||||
MobaPlayer mobaPlayer = getMobaData(subject);
|
||||
String suffix;
|
||||
|
||||
if (state == GameState.Prepare && !perspectiveTeam.equals(subjectTeam))
|
||||
{
|
||||
suffix = "Unknown";
|
||||
}
|
||||
else if (mobaPlayer.Kit == null)
|
||||
else if (mobaPlayer.getKit() == null)
|
||||
{
|
||||
suffix = "Selecting";
|
||||
}
|
||||
else
|
||||
{
|
||||
suffix = mobaPlayer.Kit.GetName();
|
||||
suffix = mobaPlayer.getKit().GetName();
|
||||
}
|
||||
|
||||
return C.cYellow + " " + suffix + C.Reset;
|
||||
@ -217,22 +206,22 @@ public class Moba extends TeamGame
|
||||
});
|
||||
}
|
||||
|
||||
private <T extends Listener> T registerManager(T listener)
|
||||
{
|
||||
_listeners.add(listener);
|
||||
return listener;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ParseData()
|
||||
{
|
||||
Collection<Location> capturePoints = getLocationStartsWith("POINT").values();
|
||||
|
||||
for (Location location : capturePoints)
|
||||
{
|
||||
_capturePoints.add(new CapturePoint(this, location));
|
||||
}
|
||||
|
||||
// Register all "Managers"
|
||||
_listeners.forEach(UtilServer::RegisterEvents);
|
||||
}
|
||||
|
||||
private void writePrepare(Player player, GameScoreboard scoreboard)
|
||||
{
|
||||
MobaPlayer mobaPlayer = getData(player);
|
||||
MobaPlayer mobaPlayer = getMobaData(player);
|
||||
|
||||
scoreboard.writeNewLine();
|
||||
|
||||
@ -242,7 +231,7 @@ public class Moba extends TeamGame
|
||||
scoreboard.writeNewLine();
|
||||
|
||||
scoreboard.write(C.cYellowB + "Hero");
|
||||
scoreboard.write(mobaPlayer.Kit == null ? "Unselected " : mobaPlayer.Kit.GetName() + " (" + mobaPlayer.Role.getName() + ")");
|
||||
scoreboard.write(mobaPlayer.getKit() == null ? "Unselected " : mobaPlayer.getKit().GetName() + " (" + mobaPlayer.getRole().getName() + ")");
|
||||
|
||||
scoreboard.writeNewLine();
|
||||
|
||||
@ -251,7 +240,7 @@ public class Moba extends TeamGame
|
||||
|
||||
for (MobaPlayer otherMobaPlayer : _playerData)
|
||||
{
|
||||
if (otherMobaPlayer.Kit != null)
|
||||
if (otherMobaPlayer.getKit() != null)
|
||||
{
|
||||
kits++;
|
||||
}
|
||||
@ -319,48 +308,6 @@ public class Moba extends TeamGame
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void live(GameStateChangeEvent event)
|
||||
{
|
||||
if (event.GetState() != GameState.Live)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
UtilTextBottom.display(C.cRedB + "!!! Battle !!!", UtilServer.getPlayers());
|
||||
|
||||
for (MobaPlayer mobaPlayer : _playerData)
|
||||
{
|
||||
Player player = mobaPlayer.Player;
|
||||
HeroKit kit = mobaPlayer.Kit;
|
||||
Perk perk = kit.GetPerks()[kit.GetPerks().length - 1];
|
||||
|
||||
// Put Ultimates on cooldown
|
||||
if (perk instanceof HeroSkill)
|
||||
{
|
||||
((HeroSkill) perk).useSkill(mobaPlayer.Player);
|
||||
}
|
||||
|
||||
// Teleport players to their respective spawns
|
||||
GameTeam team = GetTeam(player);
|
||||
MobaLane lane = mobaPlayer.Role.getLane();
|
||||
Location toTeleport = WorldData.GetCustomLocs("SPAWN " + team.GetName().toUpperCase() + " " + lane.toString()).get(0);
|
||||
|
||||
// Face the location toward the first tower of that lane
|
||||
Tower tower = _tower.getFirsrtTower(lane);
|
||||
if (tower != null)
|
||||
{
|
||||
toTeleport.setYaw(UtilAlg.GetYaw(UtilAlg.getTrajectory(player.getLocation(), tower.getLocation())));
|
||||
}
|
||||
else
|
||||
{
|
||||
toTeleport.setYaw(UtilAlg.GetYaw(UtilAlg.getTrajectory(player.getLocation(), GetSpectatorLocation())));
|
||||
}
|
||||
|
||||
player.teleport(toTeleport);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void EndCheck()
|
||||
{
|
||||
@ -428,95 +375,6 @@ public class Moba extends TeamGame
|
||||
_listeners.clear();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void update(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.SEC)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (CapturePoint point : _capturePoints)
|
||||
{
|
||||
point.update();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void updatePrepare(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.SEC || GetState() != GameState.Prepare)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!UtilTime.elapsed(GetStateTime(), PREPARE_TIME))
|
||||
{
|
||||
for (Player player : GetPlayers(true))
|
||||
{
|
||||
Kit kit = GetKit(player);
|
||||
|
||||
if (!(kit instanceof HeroKit))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AnnounceGame();
|
||||
StartPrepareCountdown();
|
||||
|
||||
//Event
|
||||
GamePrepareCountdownCommence countdownEvent = new GamePrepareCountdownCommence(this);
|
||||
UtilServer.CallEvent(countdownEvent);
|
||||
|
||||
// If players took too long, just give them a random free role and kit.
|
||||
for (Player player : GetPlayers(true))
|
||||
{
|
||||
Kit kit = GetKit(player);
|
||||
|
||||
if (kit instanceof HeroKit)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
HeroKit heroKit = getFirstKit(player);
|
||||
MobaPlayer mobaPlayer = getData(player);
|
||||
|
||||
mobaPlayer.Role = heroKit.getRole();
|
||||
mobaPlayer.Kit = heroKit;
|
||||
|
||||
SetKit(player, heroKit, true);
|
||||
}
|
||||
|
||||
PrepareTime = 0;
|
||||
Manager.GetChat().Silence(0, false);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void roleSelect(RoleSelectEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
MobaRole role = event.getRole();
|
||||
ClientArmorStand stand = event.getStand();
|
||||
|
||||
if (stand.hasMetadata("owned"))
|
||||
{
|
||||
player.sendMessage(F.main("Game", "Another player has already chosen this role."));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
// Store inside the stand that it is claimed by a player
|
||||
stand.setMetadata("owned", new FixedMetadataValue(Manager.getPlugin(), true));
|
||||
|
||||
// Show that the kit is claimed.
|
||||
stand.setCustomName(C.cGreenB + role.getName() + C.cGray + " - " + player.getName());
|
||||
|
||||
// Store the role of the player
|
||||
getData(player).Role = role;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void SetKit(Player player, Kit kit, boolean announce)
|
||||
{
|
||||
@ -524,7 +382,7 @@ public class Moba extends TeamGame
|
||||
|
||||
if (kit instanceof HeroKit)
|
||||
{
|
||||
getData(player).Kit = (HeroKit) kit;
|
||||
getMobaData(player).setKit((HeroKit) kit);
|
||||
}
|
||||
}
|
||||
|
||||
@ -534,68 +392,16 @@ public class Moba extends TeamGame
|
||||
return DeathMessageType.Detailed;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void preventTeamDamage(CustomDamageEvent event)
|
||||
{
|
||||
Player damagee = event.GetDamageePlayer();
|
||||
Player damager = event.GetDamagerPlayer(true);
|
||||
|
||||
if (damagee == null || damager == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
GameTeam damageeTeam = GetTeam(damagee);
|
||||
GameTeam damagerTeam = GetTeam(damager);
|
||||
|
||||
if (damageeTeam == null || damagerTeam == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (damageeTeam.equals(damagerTeam))
|
||||
{
|
||||
event.SetCancelled("Team Damage");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void preventTeamFire(ConditionApplyEvent event)
|
||||
{
|
||||
Condition condition = event.GetCondition();
|
||||
|
||||
if (condition.GetType() != ConditionType.BURNING)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (condition.GetEnt() == null || condition.GetSource() == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(condition.GetEnt() instanceof Player && condition.GetSource() instanceof Player))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!GetTeam((Player) condition.GetEnt()).equals(GetTeam((Player) condition.GetSource())))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
// Clear up memory
|
||||
@EventHandler
|
||||
public void playerQuit(PlayerQuitEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
|
||||
_playerData.removeIf(mobaPlayer -> mobaPlayer.Player.equals(player));
|
||||
_playerData.removeIf(mobaPlayer -> mobaPlayer.getPlayer().equals(player));
|
||||
}
|
||||
|
||||
// Clean up arrows
|
||||
@EventHandler
|
||||
public void projectileHit(ProjectileHitEvent event)
|
||||
{
|
||||
@ -605,41 +411,6 @@ public class Moba extends TeamGame
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
HP Regeneration
|
||||
*/
|
||||
@EventHandler
|
||||
public void regeneration(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.SEC_05)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (Player player : GetPlayers(true))
|
||||
{
|
||||
if (UtilPlayer.isSpectator(player))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
MobaHPRegenEvent regenEvent = new MobaHPRegenEvent(player, HP5);
|
||||
UtilServer.CallEvent(regenEvent);
|
||||
|
||||
player.setHealth(Math.min(player.getMaxHealth(), player.getHealth() + regenEvent.getHealth()));
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void preventHungerRegeneration(EntityRegainHealthEvent event)
|
||||
{
|
||||
if (event.getRegainReason() == RegainReason.SATIATED)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public Map<String, Location> getLocationStartsWith(String s)
|
||||
{
|
||||
Map<String, Location> map = new HashMap<>();
|
||||
@ -688,11 +459,16 @@ public class Moba extends TeamGame
|
||||
return kits;
|
||||
}
|
||||
|
||||
public MobaPlayer getData(Player player)
|
||||
public Set<MobaPlayer> getMobaData()
|
||||
{
|
||||
return _playerData;
|
||||
}
|
||||
|
||||
public MobaPlayer getMobaData(Player player)
|
||||
{
|
||||
for (MobaPlayer mobaPlayer : _playerData)
|
||||
{
|
||||
if (mobaPlayer.Player.equals(player))
|
||||
if (mobaPlayer.getPlayer().equals(player))
|
||||
{
|
||||
return mobaPlayer;
|
||||
}
|
||||
@ -701,19 +477,19 @@ public class Moba extends TeamGame
|
||||
return null;
|
||||
}
|
||||
|
||||
private HeroKit getFirstKit(Player player)
|
||||
public HeroKit getFirstKit(Player player)
|
||||
{
|
||||
MobaPlayer mobaPlayer = getData(player);
|
||||
MobaPlayer mobaPlayer = getMobaData(player);
|
||||
|
||||
if (mobaPlayer.Role == null)
|
||||
if (mobaPlayer.getRole() == null)
|
||||
{
|
||||
MobaRole role = getRandomRole(player);
|
||||
|
||||
return getFirstKit(role);
|
||||
}
|
||||
else if (mobaPlayer.Kit == null)
|
||||
else if (mobaPlayer.getKit() == null)
|
||||
{
|
||||
return getFirstKit(mobaPlayer.Role);
|
||||
return getFirstKit(mobaPlayer.getRole());
|
||||
}
|
||||
|
||||
return null;
|
||||
@ -738,7 +514,7 @@ public class Moba extends TeamGame
|
||||
|
||||
for (MobaPlayer mobaPlayer : getTeamData(GetTeam(player)))
|
||||
{
|
||||
MobaRole role = mobaPlayer.Role;
|
||||
MobaRole role = mobaPlayer.getRole();
|
||||
|
||||
if (role != null)
|
||||
{
|
||||
@ -749,13 +525,13 @@ public class Moba extends TeamGame
|
||||
return UtilAlg.Random(Arrays.asList(MobaRole.values()), roles);
|
||||
}
|
||||
|
||||
public List<MobaPlayer> getTeamData(GameTeam team)
|
||||
private List<MobaPlayer> getTeamData(GameTeam team)
|
||||
{
|
||||
List<MobaPlayer> players = new ArrayList<>();
|
||||
|
||||
for (MobaPlayer mobaPlayer : _playerData)
|
||||
{
|
||||
GameTeam otherTeam = GetTeam(mobaPlayer.Player);
|
||||
GameTeam otherTeam = GetTeam(mobaPlayer.getPlayer());
|
||||
|
||||
if (team.equals(otherTeam))
|
||||
{
|
||||
@ -766,11 +542,6 @@ public class Moba extends TeamGame
|
||||
return players;
|
||||
}
|
||||
|
||||
public List<CapturePoint> getCapturePoints()
|
||||
{
|
||||
return _capturePoints;
|
||||
}
|
||||
|
||||
public MobaShop getShop()
|
||||
{
|
||||
return _shop;
|
||||
@ -780,4 +551,14 @@ public class Moba extends TeamGame
|
||||
{
|
||||
return _goldManager;
|
||||
}
|
||||
|
||||
public TowerManager getTowerManager()
|
||||
{
|
||||
return _tower;
|
||||
}
|
||||
|
||||
public CapturePointManager getCapturePointManager()
|
||||
{
|
||||
return _capturePoint;
|
||||
}
|
||||
}
|
@ -6,12 +6,48 @@ import org.bukkit.entity.Player;
|
||||
public class MobaPlayer
|
||||
{
|
||||
|
||||
public final Player Player;
|
||||
public MobaRole Role;
|
||||
public HeroKit Kit;
|
||||
private final Player _player;
|
||||
private MobaRole _role;
|
||||
private HeroKit _kit;
|
||||
private int _gold;
|
||||
|
||||
public MobaPlayer(Player player)
|
||||
{
|
||||
Player = player;
|
||||
_player = player;
|
||||
}
|
||||
|
||||
public Player getPlayer()
|
||||
{
|
||||
return _player;
|
||||
}
|
||||
|
||||
public void setRole(MobaRole role)
|
||||
{
|
||||
_role = role;
|
||||
}
|
||||
|
||||
public MobaRole getRole()
|
||||
{
|
||||
return _role;
|
||||
}
|
||||
|
||||
public void setKit(HeroKit kit)
|
||||
{
|
||||
_kit = kit;
|
||||
}
|
||||
|
||||
public HeroKit getKit()
|
||||
{
|
||||
return _kit;
|
||||
}
|
||||
|
||||
public void setGold(int gold)
|
||||
{
|
||||
_gold = gold;
|
||||
}
|
||||
|
||||
public int getGold()
|
||||
{
|
||||
return _gold;
|
||||
}
|
||||
}
|
||||
|
@ -1,25 +1,51 @@
|
||||
package nautilus.game.arcade.game.games.moba;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Color;
|
||||
|
||||
public enum MobaRole
|
||||
{
|
||||
|
||||
ASSASSIN("Assassin", MobaLane.D, Color.BLUE, ChatColor.AQUA),
|
||||
HUNTER("Hunter", MobaLane.A, Color.LIME, ChatColor.GREEN),
|
||||
MAGE("Mage", MobaLane.B, Color.RED, ChatColor.RED),
|
||||
WARRIOR("Warrior", MobaLane.C, Color.YELLOW, ChatColor.GOLD),
|
||||
ASSASSIN("Assassin", new String[]
|
||||
{
|
||||
|
||||
"You are playing",
|
||||
"the " + C.cAqua + "Assassin" + C.cWhite + " role this game",
|
||||
|
||||
}, MobaLane.D, Color.BLUE, ChatColor.AQUA),
|
||||
HUNTER("Hunter", new String[]
|
||||
{
|
||||
"You are playing",
|
||||
"the " + C.cGreen + "Hunter" + C.cWhite + " role this game",
|
||||
|
||||
}, MobaLane.A, Color.LIME, ChatColor.GREEN),
|
||||
MAGE("Mage", new String[]
|
||||
{
|
||||
|
||||
"You are playing",
|
||||
"the " + C.cRed + "Mage" + C.cWhite + " role this game",
|
||||
|
||||
}, MobaLane.B, Color.RED, ChatColor.RED),
|
||||
WARRIOR("Warrior", new String[]
|
||||
{
|
||||
|
||||
"You are playing",
|
||||
"the " + C.cGold + "Warrior" + C.cWhite + " role this game",
|
||||
|
||||
}, MobaLane.C, Color.YELLOW, ChatColor.GOLD),
|
||||
;
|
||||
|
||||
private final String _name;
|
||||
private final String[] _description;
|
||||
private final MobaLane _lane;
|
||||
private final Color _color;
|
||||
private final ChatColor _chatColor;
|
||||
|
||||
MobaRole(String name, MobaLane lane, Color color, ChatColor chatColor)
|
||||
MobaRole(String name, String[] description, MobaLane lane, Color color, ChatColor chatColor)
|
||||
{
|
||||
_name = name;
|
||||
_description = description;
|
||||
_lane = lane;
|
||||
_color = color;
|
||||
_chatColor = chatColor;
|
||||
@ -30,6 +56,11 @@ public enum MobaRole
|
||||
return _name;
|
||||
}
|
||||
|
||||
public String[] getDescription()
|
||||
{
|
||||
return _description;
|
||||
}
|
||||
|
||||
public MobaLane getLane()
|
||||
{
|
||||
return _lane;
|
||||
|
@ -147,6 +147,8 @@ public class WitherBoss extends MobaBoss
|
||||
{
|
||||
_entity.setHealth(_entity.getHealth() - SECOND_TOWER_HEALTH_REDUCTION);
|
||||
}
|
||||
|
||||
updateDisplay();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
@ -36,7 +36,7 @@ public class WitherSkullProjectile implements IThrown
|
||||
WitherSkull skull = shooter.launchProjectile(WitherSkull.class);
|
||||
|
||||
skull.setYield(0);
|
||||
skull.setVelocity(skull.getVelocity().add(UtilAlg.getTrajectory(shooter, target)).normalize().multiply(2));
|
||||
skull.setVelocity(skull.getVelocity().add(UtilAlg.getTrajectory(shooter, target)));
|
||||
|
||||
_manager.GetProjectile().AddThrow(skull, shooter, this, 2000, true, true, true, false, 0.5F);
|
||||
}
|
||||
|
@ -0,0 +1,76 @@
|
||||
package nautilus.game.arcade.game.games.moba.general;
|
||||
|
||||
import mineplex.minecraft.game.core.condition.Condition;
|
||||
import mineplex.minecraft.game.core.condition.Condition.ConditionType;
|
||||
import mineplex.minecraft.game.core.condition.events.ConditionApplyEvent;
|
||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||
import nautilus.game.arcade.game.GameTeam;
|
||||
import nautilus.game.arcade.game.games.moba.Moba;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
public class TeamDamageManager implements Listener
|
||||
{
|
||||
|
||||
private final Moba _host;
|
||||
|
||||
public TeamDamageManager(Moba host)
|
||||
{
|
||||
_host = host;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void preventTeamDamage(CustomDamageEvent event)
|
||||
{
|
||||
Player damagee = event.GetDamageePlayer();
|
||||
Player damager = event.GetDamagerPlayer(true);
|
||||
|
||||
if (damagee == null || damager == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
GameTeam damageeTeam = _host.GetTeam(damagee);
|
||||
GameTeam damagerTeam = _host.GetTeam(damager);
|
||||
|
||||
if (damageeTeam == null || damagerTeam == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (damageeTeam.equals(damagerTeam))
|
||||
{
|
||||
event.SetCancelled("Team Damage");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void preventTeamFire(ConditionApplyEvent event)
|
||||
{
|
||||
Condition condition = event.GetCondition();
|
||||
|
||||
if (condition.GetType() != ConditionType.BURNING)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (condition.GetEnt() == null || condition.GetSource() == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(condition.GetEnt() instanceof Player && condition.GetSource() instanceof Player))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_host.GetTeam((Player) condition.GetEnt()).equals(_host.GetTeam((Player) condition.GetSource())))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
}
|
@ -96,7 +96,7 @@ public class GoldManager implements Listener
|
||||
}
|
||||
|
||||
// Capture points
|
||||
for (CapturePoint point : _host.getCapturePoints())
|
||||
for (CapturePoint point : _host.getCapturePointManager().getCapturePoints())
|
||||
{
|
||||
GameTeam owner = point.getOwner();
|
||||
|
||||
|
@ -62,7 +62,7 @@ public class SkillMeteor extends HeroSkill implements IThrown
|
||||
FallingBlock block = player.getWorld().spawnFallingBlock(player.getEyeLocation().add(player.getLocation().getDirection()), Material.NETHERRACK, (byte) 0);
|
||||
block.setVelocity(player.getLocation().getDirection());
|
||||
|
||||
Manager.GetProjectile().AddThrow(block, player, this, 1000, true, true, true, false, 0.5F);
|
||||
Manager.GetProjectile().AddThrow(block, player, this, 2000, true, true, true, false, 0.5F);
|
||||
|
||||
useActiveSkill(player, 7000);
|
||||
}
|
||||
@ -138,7 +138,7 @@ public class SkillMeteor extends HeroSkill implements IThrown
|
||||
@Override
|
||||
public void Idle(ProjectileUser data)
|
||||
{
|
||||
|
||||
Expire(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -0,0 +1,57 @@
|
||||
package nautilus.game.arcade.game.games.moba.kit.hp;
|
||||
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import nautilus.game.arcade.game.games.moba.Moba;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityRegainHealthEvent;
|
||||
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
|
||||
|
||||
public class HPManager implements Listener
|
||||
{
|
||||
|
||||
// Health per 5 seconds.
|
||||
private static final double HP5 = 0.33;
|
||||
|
||||
private final Moba _host;
|
||||
|
||||
public HPManager(Moba host)
|
||||
{
|
||||
_host = host;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void regeneration(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.SEC_05 || !_host.IsLive())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (Player player : _host.GetPlayers(true))
|
||||
{
|
||||
if (UtilPlayer.isSpectator(player))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
MobaHPRegenEvent regenEvent = new MobaHPRegenEvent(player, HP5);
|
||||
UtilServer.CallEvent(regenEvent);
|
||||
|
||||
player.setHealth(Math.min(player.getMaxHealth(), player.getHealth() + regenEvent.getHealth()));
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void preventHungerRegeneration(EntityRegainHealthEvent event)
|
||||
{
|
||||
if (event.getRegainReason() == RegainReason.SATIATED)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package nautilus.game.arcade.game.games.moba;
|
||||
package nautilus.game.arcade.game.games.moba.kit.hp;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
@ -0,0 +1,6 @@
|
||||
package nautilus.game.arcade.game.games.moba.minion;
|
||||
|
||||
public class Minion
|
||||
{
|
||||
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package nautilus.game.arcade.game.games.moba.minion;
|
||||
|
||||
import nautilus.game.arcade.game.games.moba.Moba;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
public class MinionManager implements Listener
|
||||
{
|
||||
|
||||
private final Moba _host;
|
||||
|
||||
public MinionManager(Moba host)
|
||||
{
|
||||
_host = host;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,114 @@
|
||||
package nautilus.game.arcade.game.games.moba.prepare;
|
||||
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.common.util.UtilTextMiddle;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||
import nautilus.game.arcade.game.Game.GameState;
|
||||
import nautilus.game.arcade.game.games.moba.Moba;
|
||||
import nautilus.game.arcade.game.games.moba.MobaPlayer;
|
||||
import nautilus.game.arcade.game.games.moba.MobaRole;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class PrepareInformation implements Listener
|
||||
{
|
||||
|
||||
private static final long MESSAGE_TIME = TimeUnit.SECONDS.toMillis(5);
|
||||
private static final int MESSAGE_TIME_TICKS = (int) (MESSAGE_TIME / 50D + 5);
|
||||
|
||||
private final Moba _host;
|
||||
|
||||
private long _lastMessage;
|
||||
private int _messageIndex;
|
||||
|
||||
public PrepareInformation(Moba host)
|
||||
{
|
||||
_host = host;
|
||||
|
||||
// How long should the prepare time be.
|
||||
int longestDescription = 0;
|
||||
for (MobaRole role : MobaRole.values())
|
||||
{
|
||||
int length = role.getDescription().length;
|
||||
|
||||
if (length > longestDescription)
|
||||
{
|
||||
longestDescription = length;
|
||||
}
|
||||
}
|
||||
|
||||
// Modify the prepare time
|
||||
_host.PrepareTime = longestDescription * 1000 + 1000;
|
||||
|
||||
UtilServer.RegisterEvents(this);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void updateMessages(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.FAST || !UtilTime.elapsed(_lastMessage, MESSAGE_TIME))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Bukkit.broadcastMessage("updateMessages");
|
||||
|
||||
for (MobaPlayer mobaPlayer : _host.getMobaData())
|
||||
{
|
||||
Bukkit.broadcastMessage(mobaPlayer.getPlayer().getName());
|
||||
String[] description = mobaPlayer.getRole().getDescription();
|
||||
|
||||
// Description is too short
|
||||
if (description.length > _messageIndex + 2)
|
||||
{
|
||||
Bukkit.broadcastMessage("Too short");
|
||||
continue;
|
||||
}
|
||||
|
||||
UtilTextMiddle.display(description[_messageIndex], description[_messageIndex + 1], 0, MESSAGE_TIME_TICKS, 0, mobaPlayer.getPlayer());
|
||||
}
|
||||
|
||||
_messageIndex++;
|
||||
_lastMessage = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void playerMove(PlayerMoveEvent event)
|
||||
{
|
||||
if (UtilPlayer.isSpectator(event.getPlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Location to = event.getTo();
|
||||
Location from = event.getFrom();
|
||||
|
||||
// Player hasn't moved along the X or Z axis
|
||||
if (to.getX() == from.getX() && to.getZ() == from.getZ())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void live(GameStateChangeEvent event)
|
||||
{
|
||||
if (event.GetState() != GameState.Live)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
UtilServer.Unregister(this);
|
||||
}
|
||||
}
|
@ -0,0 +1,168 @@
|
||||
package nautilus.game.arcade.game.games.moba.prepare;
|
||||
|
||||
import mineplex.core.common.entity.ClientArmorStand;
|
||||
import mineplex.core.common.util.*;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import nautilus.game.arcade.events.GamePrepareCountdownCommence;
|
||||
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||
import nautilus.game.arcade.game.Game.GameState;
|
||||
import nautilus.game.arcade.game.GameTeam;
|
||||
import nautilus.game.arcade.game.games.moba.Moba;
|
||||
import nautilus.game.arcade.game.games.moba.MobaLane;
|
||||
import nautilus.game.arcade.game.games.moba.MobaPlayer;
|
||||
import nautilus.game.arcade.game.games.moba.MobaRole;
|
||||
import nautilus.game.arcade.game.games.moba.kit.HeroKit;
|
||||
import nautilus.game.arcade.game.games.moba.kit.HeroSkill;
|
||||
import nautilus.game.arcade.game.games.moba.kit.RoleSelectEvent;
|
||||
import nautilus.game.arcade.game.games.moba.structure.tower.Tower;
|
||||
import nautilus.game.arcade.kit.Kit;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class PrepareManager implements Listener
|
||||
{
|
||||
|
||||
private static final long PREPARE_TIME = TimeUnit.MINUTES.toMillis(1);
|
||||
private static final String OWNED_METADATA = "owned";
|
||||
|
||||
private final Moba _host;
|
||||
|
||||
private boolean _informationStage;
|
||||
|
||||
public PrepareManager(Moba host)
|
||||
{
|
||||
_host = host;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
public void updatePrepare(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.SEC || _host.GetState() != GameState.Prepare || _informationStage)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!UtilTime.elapsed(_host.GetStateTime(), PREPARE_TIME))
|
||||
{
|
||||
for (Player player : _host.GetPlayers(true))
|
||||
{
|
||||
Kit kit = _host.GetKit(player);
|
||||
|
||||
if (!(kit instanceof HeroKit))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_informationStage = true;
|
||||
|
||||
_host.AnnounceGame();
|
||||
_host.StartPrepareCountdown();
|
||||
|
||||
//Event
|
||||
GamePrepareCountdownCommence countdownEvent = new GamePrepareCountdownCommence(_host);
|
||||
UtilServer.CallEvent(countdownEvent);
|
||||
|
||||
// If players took too long, just give them a random free role and kit.
|
||||
for (Player player : _host.GetPlayers(true))
|
||||
{
|
||||
Kit kit = _host.GetKit(player);
|
||||
|
||||
if (kit instanceof HeroKit)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
HeroKit heroKit = _host.getFirstKit(player);
|
||||
MobaPlayer mobaPlayer = _host.getMobaData(player);
|
||||
|
||||
mobaPlayer.setRole(heroKit.getRole());
|
||||
|
||||
_host.SetKit(player, heroKit, true);
|
||||
}
|
||||
|
||||
for (MobaPlayer mobaPlayer : _host.getMobaData())
|
||||
{
|
||||
// Teleport players to their respective spawns
|
||||
Player player = mobaPlayer.getPlayer();
|
||||
GameTeam team = _host.GetTeam(player);
|
||||
MobaLane lane = mobaPlayer.getRole().getLane();
|
||||
Location toTeleport = _host.WorldData.GetCustomLocs("SPAWN " + team.GetName().toUpperCase() + " " + lane.toString()).get(0);
|
||||
|
||||
// Face the location toward the first tower of that lane
|
||||
Tower tower = _host.getTowerManager().getFirsrtTower(lane);
|
||||
if (tower != null)
|
||||
{
|
||||
toTeleport.setYaw(UtilAlg.GetYaw(UtilAlg.getTrajectory(player.getLocation(), tower.getLocation())));
|
||||
}
|
||||
else
|
||||
{
|
||||
toTeleport.setYaw(UtilAlg.GetYaw(UtilAlg.getTrajectory(player.getLocation(), _host.GetSpectatorLocation())));
|
||||
}
|
||||
|
||||
player.teleport(toTeleport);
|
||||
}
|
||||
|
||||
_host.SetStateTime(System.currentTimeMillis());
|
||||
_host.getArcadeManager().GetChat().Silence(-1, false);
|
||||
|
||||
// Start the pregame role information
|
||||
new PrepareInformation(_host);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void roleSelect(RoleSelectEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
MobaRole role = event.getRole();
|
||||
ClientArmorStand stand = event.getStand();
|
||||
|
||||
if (stand.hasMetadata(OWNED_METADATA))
|
||||
{
|
||||
player.sendMessage(F.main("Game", "Another player has already chosen this role."));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
// Store inside the stand that it is claimed by a player
|
||||
stand.setMetadata(OWNED_METADATA, new FixedMetadataValue(_host.getArcadeManager().getPlugin(), true));
|
||||
|
||||
// Show that the kit is claimed.
|
||||
stand.setCustomName(C.cGreenB + role.getName() + C.cGray + " - " + player.getName());
|
||||
|
||||
// Store the role of the player
|
||||
_host.getMobaData(player).setRole(role);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void live(GameStateChangeEvent event)
|
||||
{
|
||||
if (event.GetState() != GameState.Live)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (MobaPlayer mobaPlayer : _host.getMobaData())
|
||||
{
|
||||
HeroKit kit = mobaPlayer.getKit();
|
||||
Perk perk = kit.GetPerks()[kit.GetPerks().length - 1];
|
||||
|
||||
// Put Ultimates on cooldown
|
||||
if (perk instanceof HeroSkill)
|
||||
{
|
||||
((HeroSkill) perk).useSkill(mobaPlayer.getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
_host.getArcadeManager().GetChat().Silence(0, true);
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package nautilus.game.arcade.game.games.moba.kit;
|
||||
package nautilus.game.arcade.game.games.moba.prepare;
|
||||
|
||||
import mineplex.core.common.entity.ClientArmorStand;
|
||||
import mineplex.core.common.util.*;
|
||||
@ -9,16 +9,15 @@ import mineplex.core.packethandler.IPacketHandler;
|
||||
import mineplex.core.packethandler.PacketHandler.ListenerPriority;
|
||||
import mineplex.core.packethandler.PacketInfo;
|
||||
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||
import nautilus.game.arcade.events.PlayerKitApplyEvent;
|
||||
import nautilus.game.arcade.game.Game.GameState;
|
||||
import nautilus.game.arcade.game.GameTeam;
|
||||
import nautilus.game.arcade.game.games.moba.Moba;
|
||||
import nautilus.game.arcade.game.games.moba.MobaPlayer;
|
||||
import nautilus.game.arcade.game.games.moba.MobaRole;
|
||||
import nautilus.game.arcade.kit.Kit;
|
||||
import nautilus.game.arcade.game.games.moba.kit.HeroKit;
|
||||
import nautilus.game.arcade.game.games.moba.kit.RoleSelectEvent;
|
||||
import net.minecraft.server.v1_8_R3.PacketPlayInUseEntity;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.FireworkEffect.Type;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@ -31,14 +30,14 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
public class PregameSelection implements Listener, IPacketHandler
|
||||
public class PrepareSelection implements Listener, IPacketHandler
|
||||
{
|
||||
|
||||
private final Moba _host;
|
||||
private final Map<ClientArmorStand, MobaRole> _roleStands = new HashMap<>();
|
||||
private final Map<ClientArmorStand, HeroKit> _kitStands = new HashMap<>();
|
||||
|
||||
public PregameSelection(Moba host)
|
||||
public PrepareSelection(Moba host)
|
||||
{
|
||||
_host = host;
|
||||
|
||||
@ -111,9 +110,9 @@ public class PregameSelection implements Listener, IPacketHandler
|
||||
List<Location> spawns = _host.WorldData.GetDataLocs(dataKey);
|
||||
Location average = UtilAlg.getAverageLocation(team.GetSpawns());
|
||||
|
||||
MobaPlayer mobaPlayer = _host.getData(player);
|
||||
MobaPlayer mobaPlayer = _host.getMobaData(player);
|
||||
|
||||
List<HeroKit> heroKits = _host.getKits(mobaPlayer.Role);
|
||||
List<HeroKit> heroKits = _host.getKits(mobaPlayer.getRole());
|
||||
|
||||
ItemStack head = new ItemBuilder(Material.SKULL_ITEM, (byte) 2).build();
|
||||
|
@ -4,7 +4,7 @@ import mineplex.minecraft.game.core.condition.Condition.ConditionType;
|
||||
import mineplex.minecraft.game.core.condition.events.ConditionApplyEvent;
|
||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||
import nautilus.game.arcade.events.PlayerGameRespawnEvent;
|
||||
import nautilus.game.arcade.game.games.moba.MobaHPRegenEvent;
|
||||
import nautilus.game.arcade.game.games.moba.kit.hp.MobaHPRegenEvent;
|
||||
import nautilus.game.arcade.game.games.moba.kit.AmmoGiveEvent;
|
||||
import nautilus.game.arcade.game.games.moba.kit.CooldownCalculateEvent;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -11,11 +11,11 @@ import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||
import nautilus.game.arcade.events.PlayerGameRespawnEvent;
|
||||
import nautilus.game.arcade.game.Game.GameState;
|
||||
import nautilus.game.arcade.game.games.moba.Moba;
|
||||
import nautilus.game.arcade.game.games.moba.MobaHPRegenEvent;
|
||||
import nautilus.game.arcade.game.games.moba.MobaPlayer;
|
||||
import nautilus.game.arcade.game.games.moba.MobaRole;
|
||||
import nautilus.game.arcade.game.games.moba.kit.AmmoGiveEvent;
|
||||
import nautilus.game.arcade.game.games.moba.kit.CooldownCalculateEvent;
|
||||
import nautilus.game.arcade.game.games.moba.kit.hp.MobaHPRegenEvent;
|
||||
import nautilus.game.arcade.game.games.moba.shop.assassin.MobaAssassinShop;
|
||||
import nautilus.game.arcade.game.games.moba.shop.hunter.MobaHunterShop;
|
||||
import nautilus.game.arcade.game.games.moba.shop.mage.MobaMageShop;
|
||||
@ -91,20 +91,20 @@ public class MobaShop implements Listener
|
||||
|
||||
public void openShop(MobaPlayer player)
|
||||
{
|
||||
if (UtilPlayer.isSpectator(player.Player) || _host.GetState() != GameState.Live)
|
||||
if (UtilPlayer.isSpectator(player.getPlayer()) || _host.GetState() != GameState.Live)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
MobaShopMenu menu = _roleMenus.get(player.Role);
|
||||
MobaShopMenu menu = _roleMenus.get(player.getRole());
|
||||
|
||||
if (menu == null)
|
||||
{
|
||||
player.Player.sendMessage(F.main("Game", "There isn't an upgrade shop for that kit yet."));
|
||||
player.getPlayer().sendMessage(F.main("Game", "There isn't an upgrade shop for that kit yet."));
|
||||
return;
|
||||
}
|
||||
|
||||
menu.open(player.Player);
|
||||
menu.open(player.getPlayer());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@ -163,7 +163,7 @@ public class MobaShop implements Listener
|
||||
{
|
||||
if (clicked.equals(shop))
|
||||
{
|
||||
MobaPlayer data = _host.getData(player);
|
||||
MobaPlayer data = _host.getMobaData(player);
|
||||
|
||||
if (data == null)
|
||||
{
|
||||
|
@ -125,7 +125,7 @@ public class MobaShopCategoryMenu extends Menu<ArcadeManager>
|
||||
@Override
|
||||
public void onClick(Player player, ClickType clickType)
|
||||
{
|
||||
_shop.openShop(_host.getData(player));
|
||||
_shop.openShop(_host.getMobaData(player));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
package nautilus.game.arcade.game.games.moba.shop.effects;
|
||||
|
||||
import mineplex.core.common.util.F;
|
||||
import nautilus.game.arcade.game.games.moba.MobaHPRegenEvent;
|
||||
import nautilus.game.arcade.game.games.moba.kit.hp.MobaHPRegenEvent;
|
||||
import nautilus.game.arcade.game.games.moba.shop.MobaItemEffect;
|
||||
|
||||
public class MobaHPRegenEffect extends MobaItemEffect
|
||||
|
@ -23,7 +23,7 @@ public class MobaHitArrowAmmoEffect extends MobaItemEffect
|
||||
Player damager = event.GetDamagerPlayer(true);
|
||||
|
||||
Moba host = (Moba) Managers.get(ArcadeManager.class).GetGame();
|
||||
HeroKit kit = host.getData(damager).Kit;
|
||||
HeroKit kit = host.getMobaData(damager).getKit();
|
||||
|
||||
kit.giveAmmo(damager, 1);
|
||||
}
|
||||
|
@ -2,9 +2,6 @@ package nautilus.game.arcade.game.games.moba.shop.effects;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.F;
|
||||
import nautilus.game.arcade.events.PlayerGameRespawnEvent;
|
||||
import nautilus.game.arcade.game.games.moba.MobaHPRegenEvent;
|
||||
import nautilus.game.arcade.game.games.moba.kit.CooldownCalculateEvent;
|
||||
import nautilus.game.arcade.game.games.moba.shop.MobaItemEffect;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
|
@ -2,8 +2,6 @@ package nautilus.game.arcade.game.games.moba.shop.effects;
|
||||
|
||||
import mineplex.core.common.util.F;
|
||||
import nautilus.game.arcade.events.PlayerGameRespawnEvent;
|
||||
import nautilus.game.arcade.game.games.moba.MobaHPRegenEvent;
|
||||
import nautilus.game.arcade.game.games.moba.kit.CooldownCalculateEvent;
|
||||
import nautilus.game.arcade.game.games.moba.shop.MobaItemEffect;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
|
@ -0,0 +1,64 @@
|
||||
package nautilus.game.arcade.game.games.moba.structure.point;
|
||||
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||
import nautilus.game.arcade.game.Game.GameState;
|
||||
import nautilus.game.arcade.game.games.moba.Moba;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public class CapturePointManager implements Listener
|
||||
{
|
||||
|
||||
private final Moba _host;
|
||||
|
||||
private final List<CapturePoint> _capturePoints;
|
||||
|
||||
public CapturePointManager(Moba host)
|
||||
{
|
||||
_host = host;
|
||||
|
||||
_capturePoints = new ArrayList<>(3);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void prepare(GameStateChangeEvent event)
|
||||
{
|
||||
if (event.GetState() != GameState.Prepare)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Collection<Location> capturePoints = _host.getLocationStartsWith("POINT").values();
|
||||
|
||||
for (Location location : capturePoints)
|
||||
{
|
||||
_capturePoints.add(new CapturePoint(_host, location));
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void update(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.SEC)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (CapturePoint point : _capturePoints)
|
||||
{
|
||||
point.update();
|
||||
}
|
||||
}
|
||||
|
||||
public List<CapturePoint> getCapturePoints()
|
||||
{
|
||||
return _capturePoints;
|
||||
}
|
||||
}
|
@ -139,12 +139,16 @@ public class Tower
|
||||
if (_health <= 0)
|
||||
{
|
||||
UtilServer.CallEvent(new TowerDestroyEvent(this));
|
||||
|
||||
// Boom!
|
||||
explode();
|
||||
|
||||
// Nullify everything and remove all entities
|
||||
_target = null;
|
||||
setLaserTarget(null);
|
||||
_dead = true;
|
||||
_stand.remove();
|
||||
_crystal.remove();
|
||||
explode();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -163,7 +167,6 @@ public class Tower
|
||||
|
||||
private void explode()
|
||||
{
|
||||
_host.getArcadeManager().GetExplosion().BlockExplosion(UtilBlock.getBlocksInRadius(_location.clone().subtract(0, 3, 0), 3), _location, false);
|
||||
_location.getWorld().playSound(_location, Sound.EXPLODE, 2, 0.6F);
|
||||
UtilParticle.PlayParticleToAll(ParticleType.HUGE_EXPLOSION, _location, 0, 0, 0, 0.1F, 1, ViewDist.LONG);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user