Removed broken and obsolete shifter code
Set up more intellij stuff
This commit is contained in:
parent
aa6b5324eb
commit
3859a42f1d
|
@ -16,6 +16,5 @@ update
|
||||||
|
|
||||||
Reference
|
Reference
|
||||||
|
|
||||||
/Plugins/Test
|
|
||||||
/Plugins/.idea/workspace.xml
|
/Plugins/.idea/workspace.xml
|
||||||
/Plugins/out
|
/Plugins/out
|
|
@ -0,0 +1,10 @@
|
||||||
|
<component name="ArtifactManager">
|
||||||
|
<artifact name="Mineplex.Hub:test">
|
||||||
|
<output-path>$PROJECT_DIR$/../Testing/Hub</output-path>
|
||||||
|
<root id="root">
|
||||||
|
<element id="directory" name="plugins">
|
||||||
|
<element id="artifact" artifact-name="Mineplex.Hub:jar" />
|
||||||
|
</element>
|
||||||
|
</root>
|
||||||
|
</artifact>
|
||||||
|
</component>
|
|
@ -0,0 +1,10 @@
|
||||||
|
<component name="ArtifactManager">
|
||||||
|
<artifact name="Nautilus.Game.Arcade:test">
|
||||||
|
<output-path>$PROJECT_DIR$/../Testing/Arcade</output-path>
|
||||||
|
<root id="root">
|
||||||
|
<element id="directory" name="plugins">
|
||||||
|
<element id="artifact" artifact-name="Nautilus.Game.Arcade:jar" />
|
||||||
|
</element>
|
||||||
|
</root>
|
||||||
|
</artifact>
|
||||||
|
</component>
|
Binary file not shown.
Binary file not shown.
|
@ -80,9 +80,9 @@ import mineplex.minecraft.game.core.condition.ConditionManager;
|
||||||
public class HubManager extends MiniClientPlugin<HubClient>
|
public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
{
|
{
|
||||||
public String Mode = "Normal";
|
public String Mode = "Normal";
|
||||||
|
|
||||||
private BlockRestore _blockRestore;
|
private BlockRestore _blockRestore;
|
||||||
private CoreClientManager _clientManager;
|
private CoreClientManager _clientManager;
|
||||||
private ConditionManager _conditionManager;
|
private ConditionManager _conditionManager;
|
||||||
private DonationManager _donationManager;
|
private DonationManager _donationManager;
|
||||||
private DisguiseManager _disguiseManager;
|
private DisguiseManager _disguiseManager;
|
||||||
|
@ -98,30 +98,30 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
|
|
||||||
private Location _spawn;
|
private Location _spawn;
|
||||||
private int _scoreboardTick = 0;
|
private int _scoreboardTick = 0;
|
||||||
|
|
||||||
private HashMap<Player, Scoreboard> _scoreboards = new HashMap<Player, Scoreboard>();
|
private HashMap<Player, Scoreboard> _scoreboards = new HashMap<Player, Scoreboard>();
|
||||||
|
|
||||||
private String _pigStacker = "0 - Nobody";
|
private String _pigStacker = "0 - Nobody";
|
||||||
|
|
||||||
private boolean _shuttingDown;
|
private boolean _shuttingDown;
|
||||||
|
|
||||||
private HashMap<String, Long> _portalTime = new HashMap<String, Long>();
|
private HashMap<String, Long> _portalTime = new HashMap<String, Long>();
|
||||||
|
|
||||||
private int _slot = 7;
|
private int _slot = 7;
|
||||||
private HashSet<Player> _disabled = new HashSet<Player>();
|
private HashSet<Player> _disabled = new HashSet<Player>();
|
||||||
|
|
||||||
//Admin
|
//Admin
|
||||||
private boolean _gadgetsEnabled = true;
|
private boolean _gadgetsEnabled = true;
|
||||||
private HashSet<Player> _forcefield = new HashSet<Player>();
|
private HashSet<Player> _forcefield = new HashSet<Player>();
|
||||||
|
|
||||||
public HubManager(JavaPlugin plugin, BlockRestore blockRestore, CoreClientManager clientManager, DonationManager donationManager, ConditionManager conditionManager, DisguiseManager disguiseManager, TaskManager taskManager, Portal portal, PartyManager partyManager)
|
public HubManager(JavaPlugin plugin, BlockRestore blockRestore, CoreClientManager clientManager, DonationManager donationManager, ConditionManager conditionManager, DisguiseManager disguiseManager, TaskManager taskManager, Portal portal, PartyManager partyManager)
|
||||||
{
|
{
|
||||||
super("Hub Manager", plugin);
|
super("Hub Manager", plugin);
|
||||||
|
|
||||||
_blockRestore = blockRestore;
|
_blockRestore = blockRestore;
|
||||||
_clientManager = clientManager;
|
_clientManager = clientManager;
|
||||||
_conditionManager = conditionManager;
|
_conditionManager = conditionManager;
|
||||||
_donationManager = donationManager;
|
_donationManager = donationManager;
|
||||||
_disguiseManager = disguiseManager;
|
_disguiseManager = disguiseManager;
|
||||||
|
|
||||||
_portal = portal;
|
_portal = portal;
|
||||||
|
@ -135,26 +135,26 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
new WorldManager(this);
|
new WorldManager(this);
|
||||||
new JumpManager(this);
|
new JumpManager(this);
|
||||||
new NewsManager(this);
|
new NewsManager(this);
|
||||||
|
|
||||||
_mountManager = new MountManager(this);
|
_mountManager = new MountManager(this);
|
||||||
_gadgetManager = new GadgetManager(this, _mountManager);
|
_gadgetManager = new GadgetManager(this, _mountManager);
|
||||||
|
|
||||||
_partyManager = partyManager;
|
_partyManager = partyManager;
|
||||||
_tutorialManager = new TutorialManager(this, donationManager, taskManager, _textCreator);
|
_tutorialManager = new TutorialManager(this, donationManager, taskManager, _textCreator);
|
||||||
_visibilityManager = new VisibilityManager(this);
|
_visibilityManager = new VisibilityManager(this);
|
||||||
|
|
||||||
_statsManager = new StatsManager(plugin);
|
_statsManager = new StatsManager(plugin);
|
||||||
|
|
||||||
((CraftWorld)Bukkit.getWorlds().get(0)).getHandle().pvpMode = true;
|
((CraftWorld)Bukkit.getWorlds().get(0)).getHandle().pvpMode = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void AddCommands()
|
public void AddCommands()
|
||||||
{
|
{
|
||||||
AddCommand(new GadgetToggle(this));
|
AddCommand(new GadgetToggle(this));
|
||||||
AddCommand(new ForcefieldToggle(this));
|
AddCommand(new ForcefieldToggle(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST)
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||||||
public void reflectMotd(ServerListPingEvent event)
|
public void reflectMotd(ServerListPingEvent event)
|
||||||
{
|
{
|
||||||
|
@ -167,54 +167,54 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void BumpJoin(PlayerJoinEvent event)
|
public void BumpJoin(PlayerJoinEvent event)
|
||||||
{
|
{
|
||||||
event.getPlayer().getInventory().setItem(_slot, ItemStackFactory.Instance.CreateStack(Material.SLIME_BALL, (byte)0, 1,
|
event.getPlayer().getInventory().setItem(_slot, ItemStackFactory.Instance.CreateStack(Material.SLIME_BALL, (byte)0, 1,
|
||||||
C.cYellow + "Stacker" + C.cWhite + " - " + C.cGreen + "Enabled"));
|
C.cYellow + "Stacker" + C.cWhite + " - " + C.cGreen + "Enabled"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void BumpQuit(PlayerQuitEvent event)
|
public void BumpQuit(PlayerQuitEvent event)
|
||||||
{
|
{
|
||||||
_disabled.remove(event.getPlayer());
|
_disabled.remove(event.getPlayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean BumpDisabled(Entity ent)
|
public boolean BumpDisabled(Entity ent)
|
||||||
{
|
{
|
||||||
if (ent == null)
|
if (ent == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return _disabled.contains(ent);
|
return _disabled.contains(ent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void BumpToggle(PlayerInteractEvent event)
|
public void BumpToggle(PlayerInteractEvent event)
|
||||||
{
|
{
|
||||||
if (event.getAction() == Action.PHYSICAL)
|
if (event.getAction() == Action.PHYSICAL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
if (player.getInventory().getHeldItemSlot() != _slot)
|
if (player.getInventory().getHeldItemSlot() != _slot)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|
||||||
if (_disabled.remove(player))
|
if (_disabled.remove(player))
|
||||||
{
|
{
|
||||||
UtilPlayer.message(player, F.main("Hub Games", "You are back in the Hub Games!"));
|
UtilPlayer.message(player, F.main("Hub Games", "You are back in the Hub Games!"));
|
||||||
|
|
||||||
player.getInventory().setItem(_slot, ItemStackFactory.Instance.CreateStack(Material.SLIME_BALL, (byte)0, 1,
|
player.getInventory().setItem(_slot, ItemStackFactory.Instance.CreateStack(Material.SLIME_BALL, (byte)0, 1,
|
||||||
C.cYellow + "Stacker" + C.cWhite + " - " + C.cGreen + "Enabled"));
|
C.cYellow + "Stacker" + C.cWhite + " - " + C.cGreen + "Enabled"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_disabled.add(player);
|
_disabled.add(player);
|
||||||
UtilPlayer.message(player, F.main("Hub Games", "You are no longer partaking in Hub Games."));
|
UtilPlayer.message(player, F.main("Hub Games", "You are no longer partaking in Hub Games."));
|
||||||
|
|
||||||
player.getInventory().setItem(_slot, ItemStackFactory.Instance.CreateStack(Material.MAGMA_CREAM, (byte)0, 1,
|
player.getInventory().setItem(_slot, ItemStackFactory.Instance.CreateStack(Material.MAGMA_CREAM, (byte)0, 1,
|
||||||
C.cYellow + "Stacker" + C.cWhite + " - " + C.cRed + "Disabled"));
|
C.cYellow + "Stacker" + C.cWhite + " - " + C.cRed + "Disabled"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void orderThatItem(final PlayerDropItemEvent event)
|
public void orderThatItem(final PlayerDropItemEvent event)
|
||||||
{
|
{
|
||||||
|
@ -234,20 +234,20 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void redirectStopCommand(PlayerCommandPreprocessEvent event)
|
public void redirectStopCommand(PlayerCommandPreprocessEvent event)
|
||||||
{
|
{
|
||||||
if (event.getPlayer().isOp() && event.getMessage().equalsIgnoreCase("/stop"))
|
if (event.getPlayer().isOp() && event.getMessage().equalsIgnoreCase("/stop"))
|
||||||
{
|
{
|
||||||
_shuttingDown = true;
|
_shuttingDown = true;
|
||||||
|
|
||||||
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(_plugin, new Runnable()
|
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(_plugin, new Runnable()
|
||||||
{
|
{
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
_portal.SendAllPlayers("Lobby");
|
_portal.SendAllPlayers("Lobby");
|
||||||
|
|
||||||
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(_plugin, new Runnable()
|
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(_plugin, new Runnable()
|
||||||
{
|
{
|
||||||
public void run()
|
public void run()
|
||||||
|
@ -257,11 +257,11 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
}, 40L);
|
}, 40L);
|
||||||
}
|
}
|
||||||
}, 60L);
|
}, 60L);
|
||||||
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void preventEggSpawn(ItemSpawnEvent event)
|
public void preventEggSpawn(ItemSpawnEvent event)
|
||||||
{
|
{
|
||||||
|
@ -302,12 +302,12 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOW)
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
public void login(final PlayerLoginEvent event)
|
public void login(final PlayerLoginEvent event)
|
||||||
{
|
{
|
||||||
CoreClient client = _clientManager.Get(event.getPlayer().getName());
|
CoreClient client = _clientManager.Get(event.getPlayer().getName());
|
||||||
|
|
||||||
// Reserved Slot Check
|
// Reserved Slot Check
|
||||||
if (Bukkit.getOnlinePlayers().length >= Bukkit.getServer().getMaxPlayers())
|
if (Bukkit.getOnlinePlayers().length >= Bukkit.getServer().getMaxPlayers())
|
||||||
{
|
{
|
||||||
|
@ -332,31 +332,31 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
|
|
||||||
//Survival
|
//Survival
|
||||||
player.setGameMode(GameMode.SURVIVAL);
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
|
|
||||||
//Public Message
|
//Public Message
|
||||||
event.setJoinMessage(null);
|
event.setJoinMessage(null);
|
||||||
|
|
||||||
//Teleport
|
//Teleport
|
||||||
player.teleport(GetSpawn());
|
player.teleport(GetSpawn());
|
||||||
|
|
||||||
//Allow Double Jump
|
//Allow Double Jump
|
||||||
player.setAllowFlight(true);
|
player.setAllowFlight(true);
|
||||||
|
|
||||||
UtilInv.Clear(player);
|
UtilInv.Clear(player);
|
||||||
|
|
||||||
//Scoreboard
|
//Scoreboard
|
||||||
Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
|
Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
|
||||||
player.setScoreboard(board);
|
player.setScoreboard(board);
|
||||||
_scoreboards.put(player, board);
|
_scoreboards.put(player, board);
|
||||||
|
|
||||||
//Objective
|
//Objective
|
||||||
Objective obj = board.registerNewObjective(C.Bold + "Player Data", "dummy");
|
Objective obj = board.registerNewObjective(C.Bold + "Player Data", "dummy");
|
||||||
obj.setDisplaySlot(DisplaySlot.SIDEBAR);
|
obj.setDisplaySlot(DisplaySlot.SIDEBAR);
|
||||||
|
|
||||||
|
|
||||||
for (Rank rank : Rank.values())
|
for (Rank rank : Rank.values())
|
||||||
{
|
{
|
||||||
if (rank != Rank.ALL)
|
if (rank != Rank.ALL)
|
||||||
|
@ -364,32 +364,32 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
else
|
else
|
||||||
board.registerNewTeam(rank.Name).setPrefix("");
|
board.registerNewTeam(rank.Name).setPrefix("");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Player otherPlayer : Bukkit.getOnlinePlayers())
|
for (Player otherPlayer : Bukkit.getOnlinePlayers())
|
||||||
{
|
{
|
||||||
if (_clientManager.Get(otherPlayer) == null)
|
if (_clientManager.Get(otherPlayer) == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
String rankName = _clientManager.Get(player).GetRank().Name;
|
String rankName = _clientManager.Get(player).GetRank().Name;
|
||||||
String otherRankName = _clientManager.Get(otherPlayer).GetRank().Name;
|
String otherRankName = _clientManager.Get(otherPlayer).GetRank().Name;
|
||||||
|
|
||||||
if (!_clientManager.Get(player).GetRank().Has(Rank.ULTRA) && _donationManager.Get(player.getName()).OwnsUltraPackage())
|
if (!_clientManager.Get(player).GetRank().Has(Rank.ULTRA) && _donationManager.Get(player.getName()).OwnsUltraPackage())
|
||||||
{
|
{
|
||||||
rankName = Rank.ULTRA.Name;
|
rankName = Rank.ULTRA.Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_clientManager.Get(otherPlayer).GetRank().Has(Rank.ULTRA) && _donationManager.Get(otherPlayer.getName()).OwnsUltraPackage())
|
if (!_clientManager.Get(otherPlayer).GetRank().Has(Rank.ULTRA) && _donationManager.Get(otherPlayer.getName()).OwnsUltraPackage())
|
||||||
{
|
{
|
||||||
otherRankName = Rank.ULTRA.Name;
|
otherRankName = Rank.ULTRA.Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Add Other to Self
|
//Add Other to Self
|
||||||
board.getTeam(otherRankName).addPlayer(otherPlayer);
|
board.getTeam(otherRankName).addPlayer(otherPlayer);
|
||||||
|
|
||||||
//Add Self to Other
|
//Add Self to Other
|
||||||
otherPlayer.getScoreboard().getTeam(rankName).addPlayer(player);
|
otherPlayer.getScoreboard().getTeam(rankName).addPlayer(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -451,9 +451,9 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
|
|
||||||
for (Player player : UtilServer.getPlayers())
|
for (Player player : UtilServer.getPlayers())
|
||||||
player.getScoreboard().resetScores(event.getPlayer().getName());
|
player.getScoreboard().resetScores(event.getPlayer().getName());
|
||||||
|
|
||||||
_scoreboards.remove(event.getPlayer());
|
_scoreboards.remove(event.getPlayer());
|
||||||
|
|
||||||
_portalTime.remove(event.getPlayer().getName());
|
_portalTime.remove(event.getPlayer().getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -487,13 +487,13 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
|
|
||||||
event.setMessage(event.getMessage().substring(1, event.getMessage().length()));
|
event.setMessage(event.getMessage().substring(1, event.getMessage().length()));
|
||||||
event.setFormat(C.cDPurple + C.Bold + "Party " + C.cWhite + C.Bold + "%1$s " + C.cPurple + "%2$s");
|
event.setFormat(C.cDPurple + C.Bold + "Party " + C.cWhite + C.Bold + "%1$s " + C.cPurple + "%2$s");
|
||||||
|
|
||||||
for (String name : party.GetPlayers())
|
for (String name : party.GetPlayers())
|
||||||
{
|
{
|
||||||
Player other = UtilPlayer.searchExact(name);
|
Player other = UtilPlayer.searchExact(name);
|
||||||
|
|
||||||
if (other != null)
|
if (other != null)
|
||||||
event.getRecipients().add(other);
|
event.getRecipients().add(other);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -501,7 +501,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
UtilPlayer.message(player, F.main("Party", "You are not in a Party."));
|
UtilPlayer.message(player, F.main("Party", "You are not in a Party."));
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -513,7 +513,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
event.getRecipients().remove(other);
|
event.getRecipients().remove(other);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
event.setMessage(event.getMessage());
|
event.setMessage(event.getMessage());
|
||||||
event.setFormat(rankStr + C.cYellow + "%1$s " + C.cWhite + "%2$s");
|
event.setFormat(rankStr + C.cYellow + "%1$s " + C.cWhite + "%2$s");
|
||||||
}
|
}
|
||||||
|
@ -530,7 +530,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
event.getEntity().leaveVehicle();
|
event.getEntity().leaveVehicle();
|
||||||
event.getEntity().teleport(GetSpawn());
|
event.getEntity().teleport(GetSpawn());
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
event.getEntity().remove();
|
event.getEntity().remove();
|
||||||
|
|
||||||
|
@ -607,11 +607,11 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
//Dont Waste Time
|
//Dont Waste Time
|
||||||
if (_partyManager.GetParty(player) != null)
|
if (_partyManager.GetParty(player) != null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
//Return to Main Scoreboard
|
//Return to Main Scoreboard
|
||||||
if (!player.getScoreboard().equals(_scoreboards.get(player)))
|
if (!player.getScoreboard().equals(_scoreboards.get(player)))
|
||||||
player.setScoreboard(_scoreboards.get(player));
|
player.setScoreboard(_scoreboards.get(player));
|
||||||
|
|
||||||
//Objective
|
//Objective
|
||||||
Objective obj = player.getScoreboard().getObjective(DisplaySlot.SIDEBAR);
|
Objective obj = player.getScoreboard().getObjective(DisplaySlot.SIDEBAR);
|
||||||
|
|
||||||
|
@ -705,11 +705,11 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected HubClient AddPlayer(String player)
|
protected HubClient AddPlayer(String player)
|
||||||
{
|
{
|
||||||
return new HubClient(player);
|
return new HubClient(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BlockRestore GetBlockRestore()
|
public BlockRestore GetBlockRestore()
|
||||||
{
|
{
|
||||||
return _blockRestore;
|
return _blockRestore;
|
||||||
|
@ -719,7 +719,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
{
|
{
|
||||||
return _clientManager;
|
return _clientManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConditionManager GetCondition()
|
public ConditionManager GetCondition()
|
||||||
{
|
{
|
||||||
return _conditionManager;
|
return _conditionManager;
|
||||||
|
@ -729,22 +729,22 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
{
|
{
|
||||||
return _donationManager;
|
return _donationManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DisguiseManager GetDisguise()
|
public DisguiseManager GetDisguise()
|
||||||
{
|
{
|
||||||
return _disguiseManager;
|
return _disguiseManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GadgetManager GetGadget()
|
public GadgetManager GetGadget()
|
||||||
{
|
{
|
||||||
return _gadgetManager;
|
return _gadgetManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MountManager GetMount()
|
public MountManager GetMount()
|
||||||
{
|
{
|
||||||
return _mountManager;
|
return _mountManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ParkourManager GetParkour()
|
public ParkourManager GetParkour()
|
||||||
{
|
{
|
||||||
return _parkour;
|
return _parkour;
|
||||||
|
@ -755,17 +755,17 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
return _spawn.clone();
|
return _spawn.clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
public TutorialManager GetTutorial()
|
public TutorialManager GetTutorial()
|
||||||
{
|
{
|
||||||
return _tutorialManager;
|
return _tutorialManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public StatsManager GetStats()
|
public StatsManager GetStats()
|
||||||
{
|
{
|
||||||
return _statsManager;
|
return _statsManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public VisibilityManager GetVisibility()
|
public VisibilityManager GetVisibility()
|
||||||
{
|
{
|
||||||
return _visibilityManager;
|
return _visibilityManager;
|
||||||
}
|
}
|
||||||
|
@ -788,61 +788,61 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
|
|
||||||
return UtilTime.elapsed(_portalTime.get(player.getName()), 5000);
|
return UtilTime.elapsed(_portalTime.get(player.getName()), 5000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean CanBump(LivingEntity ent)
|
public boolean CanBump(LivingEntity ent)
|
||||||
{
|
{
|
||||||
if (!(ent instanceof Player))
|
if (!(ent instanceof Player))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (BumpDisabled(ent))
|
if (BumpDisabled(ent))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (GetVisibility().IsHiding(ent))
|
if (GetVisibility().IsHiding(ent))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void HeartDisplay(UpdateEvent event)
|
public void HeartDisplay(UpdateEvent event)
|
||||||
{
|
{
|
||||||
if (event.getType() != UpdateType.FASTER)
|
if (event.getType() != UpdateType.FASTER)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (Player player : UtilServer.getPlayers())
|
for (Player player : UtilServer.getPlayers())
|
||||||
{
|
{
|
||||||
if (!player.isOp())
|
if (!player.isOp())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
for (Player other : UtilServer.getPlayers())
|
for (Player other : UtilServer.getPlayers())
|
||||||
{
|
{
|
||||||
if (player.getName().equalsIgnoreCase("Chiss"))
|
if (player.getName().equalsIgnoreCase("Chiss"))
|
||||||
UtilParticle.PlayParticle(other, ParticleType.HEART, player.getLocation().add(0, 1, 0), 0.25f, 0.5f, 0.25f, 0, 1);
|
UtilParticle.PlayParticle(other, ParticleType.HEART, player.getLocation().add(0, 1, 0), 0.25f, 0.5f, 0.25f, 0, 1);
|
||||||
|
|
||||||
else if (player.getName().equalsIgnoreCase("defek7"))
|
else if (player.getName().equalsIgnoreCase("defek7"))
|
||||||
UtilParticle.PlayParticle(other, ParticleType.FIREWORKS_SPARK, player.getLocation().add(0, 1, 0), 0.25f, 0.5f, 0.25f, 0, 2);
|
UtilParticle.PlayParticle(other, ParticleType.FIREWORKS_SPARK, player.getLocation().add(0, 1, 0), 0.25f, 0.5f, 0.25f, 0, 2);
|
||||||
|
|
||||||
else if (player.getName().equalsIgnoreCase("Spu_"))
|
else if (player.getName().equalsIgnoreCase("Spu_"))
|
||||||
UtilParticle.PlayParticle(other, ParticleType.FLAME, player.getLocation().add(0, 1, 0), 0.25f, 0.5f, 0.25f, 0, 2);
|
UtilParticle.PlayParticle(other, ParticleType.FLAME, player.getLocation().add(0, 1, 0), 0.25f, 0.5f, 0.25f, 0, 2);
|
||||||
|
|
||||||
else if (player.getName().equalsIgnoreCase("sterling_"))
|
else if (player.getName().equalsIgnoreCase("sterling_"))
|
||||||
UtilParticle.PlayParticle(other, ParticleType.WITCH_MAGIC, player.getLocation().add(0, 1, 0), 0.25f, 0.5f, 0.25f, 0, 2);
|
UtilParticle.PlayParticle(other, ParticleType.WITCH_MAGIC, player.getLocation().add(0, 1, 0), 0.25f, 0.5f, 0.25f, 0, 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void SkillTrigger(SkillTriggerEvent event)
|
public void SkillTrigger(SkillTriggerEvent event)
|
||||||
{
|
{
|
||||||
event.SetCancelled(true);
|
event.SetCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void ItemTrigger(ItemTriggerEvent event)
|
public void ItemTrigger(ItemTriggerEvent event)
|
||||||
{
|
{
|
||||||
event.SetCancelled(true);
|
event.SetCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean IsGadgetEnabled()
|
public boolean IsGadgetEnabled()
|
||||||
{
|
{
|
||||||
return _gadgetsEnabled;
|
return _gadgetsEnabled;
|
||||||
|
@ -857,30 +857,30 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
||||||
{
|
{
|
||||||
if (_forcefield.add(caller))
|
if (_forcefield.add(caller))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
_forcefield.remove(caller);
|
_forcefield.remove(caller);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void ForcefieldUpdate(UpdateEvent event)
|
public void ForcefieldUpdate(UpdateEvent event)
|
||||||
{
|
{
|
||||||
if (event.getType() != UpdateType.FAST)
|
if (event.getType() != UpdateType.FAST)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (Player player : _forcefield)
|
for (Player player : _forcefield)
|
||||||
{
|
{
|
||||||
for (Player other : UtilServer.getPlayers())
|
for (Player other : UtilServer.getPlayers())
|
||||||
{
|
{
|
||||||
if (player.equals(other))
|
if (player.equals(other))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (UtilMath.offset(other, player) > 5)
|
if (UtilMath.offset(other, player) > 5)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (GetClients().Get(other).GetRank().Has(Rank.ADMIN))
|
if (GetClients().Get(other).GetRank().Has(Rank.ADMIN))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (Recharge.Instance.use(other, "Forcefield Bump", 500, false, false))
|
if (Recharge.Instance.use(other, "Forcefield Bump", 500, false, false))
|
||||||
{
|
{
|
||||||
UtilAction.velocity(other, UtilAlg.getTrajectory2d(player, other), 1.6, true, 0.8, 0, 10, true);
|
UtilAction.velocity(other, UtilAlg.getTrajectory2d(player, other), 1.6, true, 0.8, 0, 10, true);
|
||||||
|
|
|
@ -1,92 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Chicken;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.FormBase;
|
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.EventPriority;
|
|
||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
|
||||||
|
|
||||||
public class ChickenForm extends FormBase
|
|
||||||
{
|
|
||||||
public ChickenForm(SkillFactory skills, String name, ClassType classType,
|
|
||||||
SkillType skillType, int cost, int levels)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType, cost, levels,
|
|
||||||
EntityType.CHICKEN, new String[]
|
|
||||||
{
|
|
||||||
"Flap"
|
|
||||||
});
|
|
||||||
|
|
||||||
SetDesc(new String[]
|
|
||||||
{
|
|
||||||
ChatColor.WHITE + "Passives:",
|
|
||||||
"* Slow I",
|
|
||||||
"* +10 Damage taken from Arrows",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
ChatColor.WHITE + "Attack: " + ChatColor.GREEN + "None",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
ChatColor.WHITE + "Sword Skill: " + ChatColor.GREEN + "Fly",
|
|
||||||
"Push Block to Flap;",
|
|
||||||
"* Velocity of 0.5 + 0.05pL",
|
|
||||||
"",
|
|
||||||
"Hold Block to Glide;",
|
|
||||||
"* Min speed of 0.3 + 0.03pL",
|
|
||||||
"* Max speed of 0.7 + 0.07pL",
|
|
||||||
"",
|
|
||||||
"Glide through enemies to pick them up.",
|
|
||||||
"Stop gliding to drop them.",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
ChatColor.WHITE + "Axe Skill: " + ChatColor.GREEN + "Spin Web",
|
|
||||||
"Spin a temporary web;",
|
|
||||||
"* Lasts 5 + 1pL seconds",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void UnapplyMorph(Player player)
|
|
||||||
{
|
|
||||||
Flap flap = (Flap)Factory.GetSkill("Flap");
|
|
||||||
flap.GetGrab().Release(player);
|
|
||||||
|
|
||||||
Factory.Condition().EndCondition(player, null, GetName());
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
|
||||||
public void Attack(CustomDamageEvent event)
|
|
||||||
{
|
|
||||||
if (event.IsCancelled())
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (event.GetCause() != DamageCause.ENTITY_ATTACK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Player damager = event.GetDamagerPlayer(false);
|
|
||||||
if (damager == null) return;
|
|
||||||
|
|
||||||
if (!IsMorphed(damager))
|
|
||||||
return;
|
|
||||||
|
|
||||||
event.SetCancelled(GetName());
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Update(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.FAST)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (Player cur : GetMorphedUsers())
|
|
||||||
Factory.Condition().Factory().Slow(GetName(), cur, cur, 1.9, 0, false, false, false);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,262 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Chicken;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.entity.Entity;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.EventPriority;
|
|
||||||
import org.bukkit.event.block.Action;
|
|
||||||
import org.bukkit.util.Vector;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.core.common.util.UtilEnt;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.core.common.util.UtilAlg;
|
|
||||||
import mineplex.core.common.util.UtilTime;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
|
|
||||||
public class Flap extends SkillActive
|
|
||||||
{
|
|
||||||
private HashMap<Player, Vector> _active = new HashMap<Player, Vector>();
|
|
||||||
private HashMap<Player, Long> _damaged = new HashMap<Player, Long>();
|
|
||||||
|
|
||||||
private long _damageDisableTime = 6000;
|
|
||||||
|
|
||||||
private double _flap = 0.5;
|
|
||||||
private double _min = 0.3;
|
|
||||||
private double _max = 0.7;
|
|
||||||
|
|
||||||
private FlapGrab _grab = null;
|
|
||||||
|
|
||||||
private int _tick = 0;
|
|
||||||
|
|
||||||
public Flap(SkillFactory skills, String name, ClassType classType, SkillType skillType,
|
|
||||||
int cost, int levels,
|
|
||||||
int energy, int energyMod,
|
|
||||||
long recharge, long rechargeMod, boolean rechargeInform,
|
|
||||||
Material[] itemArray,
|
|
||||||
Action[] actionArray)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType,
|
|
||||||
cost, levels,
|
|
||||||
energy, energyMod,
|
|
||||||
recharge, rechargeMod, rechargeInform,
|
|
||||||
itemArray,
|
|
||||||
actionArray);
|
|
||||||
|
|
||||||
_grab = new FlapGrab(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean CustomCheck(Player player, int level)
|
|
||||||
{
|
|
||||||
if (player.getLocation().getBlock().getTypeId() == 8 || player.getLocation().getBlock().getTypeId() == 9)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in water."));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Wings Damaged
|
|
||||||
if (_damaged.containsKey(player))
|
|
||||||
{
|
|
||||||
long damageTime = _damaged.get(player);
|
|
||||||
|
|
||||||
if (!UtilTime.elapsed(damageTime, _damageDisableTime))
|
|
||||||
{
|
|
||||||
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " for " +
|
|
||||||
F.time(UtilTime.MakeStr(_damageDisableTime - (System.currentTimeMillis() - damageTime))) + "."));
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Skill(Player player, int level)
|
|
||||||
{
|
|
||||||
//Initial Flap
|
|
||||||
Vector vel = player.getLocation().getDirection();
|
|
||||||
vel.multiply(_flap + ((_flap/10d) * level));
|
|
||||||
vel.add(new Vector(0,0.1,0));
|
|
||||||
|
|
||||||
//Clutch Penalty
|
|
||||||
if (player.getVehicle() != null)
|
|
||||||
vel.multiply(0.5 + (level * 0.05));
|
|
||||||
|
|
||||||
_active.put(player, vel);
|
|
||||||
|
|
||||||
//Apply Velocity
|
|
||||||
player.setVelocity(vel);
|
|
||||||
|
|
||||||
//Sound
|
|
||||||
player.getWorld().playSound(player.getLocation(), Sound.BAT_TAKEOFF, 1f, 1f);
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
|
||||||
public void Damage(CustomDamageEvent event)
|
|
||||||
{
|
|
||||||
if (event.GetProjectile() == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (event.GetDamageePlayer() == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!GetUsers().containsKey(event.GetDamageePlayer()))
|
|
||||||
return;
|
|
||||||
|
|
||||||
event.AddMod(UtilEnt.getName(event.GetDamagerEntity(true)), "Chicken Weakness", 10, false);
|
|
||||||
|
|
||||||
_damaged.put(event.GetDamageePlayer(), System.currentTimeMillis());
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Glide(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.TICK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
_tick = (_tick + 1)%12;
|
|
||||||
|
|
||||||
for (Player cur : GetUsers())
|
|
||||||
{
|
|
||||||
if (!_active.containsKey(cur))
|
|
||||||
{
|
|
||||||
GetGrab().Release(cur);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!cur.isBlocking())
|
|
||||||
{
|
|
||||||
_active.remove(cur);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Level
|
|
||||||
int level = getLevel(cur);
|
|
||||||
if (level == 0)
|
|
||||||
{
|
|
||||||
_active.remove(cur);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Clutch Penalty
|
|
||||||
if (cur.getVehicle() != null)
|
|
||||||
{
|
|
||||||
//Energy
|
|
||||||
if (!Factory.Energy().Use(cur, "Glide", 1.2 - (0.02 * level), true, true))
|
|
||||||
{
|
|
||||||
_active.remove(cur);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//Energy
|
|
||||||
if (!Factory.Energy().Use(cur, "Glide", 0.6 - (0.02 * level), true, true))
|
|
||||||
{
|
|
||||||
_active.remove(cur);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Target to apply velocity to
|
|
||||||
Entity target = cur;
|
|
||||||
if (cur.getVehicle() != null)
|
|
||||||
target = cur.getVehicle();
|
|
||||||
|
|
||||||
//Get Velocity
|
|
||||||
Vector vel = _active.get(cur);
|
|
||||||
|
|
||||||
if (UtilEnt.isGrounded(target) && vel.getY() < 0)
|
|
||||||
{
|
|
||||||
_active.remove(cur);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Turn
|
|
||||||
double speed = vel.length();
|
|
||||||
Vector turn = cur.getLocation().getDirection();
|
|
||||||
turn.subtract(UtilAlg.Normalize(UtilAlg.Clone(vel)));
|
|
||||||
turn.multiply(0.1);
|
|
||||||
vel.add(turn);
|
|
||||||
UtilAlg.Normalize(vel).multiply(speed);
|
|
||||||
|
|
||||||
//Gravity
|
|
||||||
vel.setX(vel.getX() * (1 - (vel.getY() / 6)));
|
|
||||||
vel.setZ(vel.getZ() * (1 - (vel.getY() / 6)));
|
|
||||||
if (vel.getY() > 0) vel.setY(vel.getY() * (1 - (vel.getY() / 6)));
|
|
||||||
|
|
||||||
//Air Friction
|
|
||||||
vel.multiply(0.998);
|
|
||||||
|
|
||||||
double minSpeed = _min + ((_min/10d) * level);
|
|
||||||
double maxSpeed = _max + ((_max/10d) * level);
|
|
||||||
|
|
||||||
//Speed Min
|
|
||||||
if (vel.length() < minSpeed)
|
|
||||||
vel.normalize().multiply(minSpeed);
|
|
||||||
|
|
||||||
//Speed Max
|
|
||||||
if (vel.length() > maxSpeed)
|
|
||||||
vel.normalize().multiply(maxSpeed);
|
|
||||||
|
|
||||||
//Apply Velocity
|
|
||||||
target.setVelocity(vel);
|
|
||||||
|
|
||||||
//Fall Dist
|
|
||||||
target.setFallDistance(0f);
|
|
||||||
|
|
||||||
//Hit Others (only if not carrying)
|
|
||||||
if (cur.equals(target))
|
|
||||||
{
|
|
||||||
for (Player other : UtilPlayer.getNearby(cur.getLocation(), 2))
|
|
||||||
{
|
|
||||||
if (other.equals(cur))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!Factory.Relation().CanHurt(cur, other))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
_grab.Grab(cur, other);
|
|
||||||
|
|
||||||
if (vel.getY() < 0.1)
|
|
||||||
vel.setY(0.1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Sound
|
|
||||||
if (_tick == 0)
|
|
||||||
cur.getWorld().playSound(cur.getLocation(), Sound.BAT_TAKEOFF, 0.4f, 1f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void DamageRelease(CustomDamageEvent event)
|
|
||||||
{
|
|
||||||
GetGrab().DamageRelease(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
public FlapGrab GetGrab()
|
|
||||||
{
|
|
||||||
return _grab;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Reset(Player player)
|
|
||||||
{
|
|
||||||
_grab.Reset(player);
|
|
||||||
|
|
||||||
_active.remove(player);
|
|
||||||
_damaged.remove(player);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,99 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Chicken;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import org.bukkit.EntityEffect;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.entity.LivingEntity;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
|
||||||
import mineplex.core.common.util.UtilEnt;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
|
|
||||||
public class FlapGrab
|
|
||||||
{
|
|
||||||
public Flap Host;
|
|
||||||
|
|
||||||
private HashMap<Player, LivingEntity> _clutch = new HashMap<Player, LivingEntity>();
|
|
||||||
|
|
||||||
public FlapGrab(Flap host)
|
|
||||||
{
|
|
||||||
Host = host;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Grab(Player player, LivingEntity ent)
|
|
||||||
{
|
|
||||||
if (_clutch.containsKey(player))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (ent == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Ent already has LE passenger
|
|
||||||
if (ent.getPassenger() != null)
|
|
||||||
if (ent.getPassenger() instanceof LivingEntity)
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Player on something
|
|
||||||
if (player.getVehicle() != null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Condition Indicators
|
|
||||||
Host.Factory.Condition().SetIndicatorVisibility((LivingEntity)ent, false);
|
|
||||||
|
|
||||||
//Action
|
|
||||||
player.leaveVehicle();
|
|
||||||
ent.eject();
|
|
||||||
ent.setPassenger(player);
|
|
||||||
_clutch.put(player, (LivingEntity)ent);
|
|
||||||
|
|
||||||
//Inform
|
|
||||||
UtilPlayer.message(player, F.main(Host.GetClassType().name(), "You picked up " + F.name(UtilEnt.getName(ent)) + "."));
|
|
||||||
UtilPlayer.message(ent, F.main(Host.GetClassType().name(), F.name(player.getName()) + " picked you up."));
|
|
||||||
|
|
||||||
//Effect
|
|
||||||
ent.playEffect(EntityEffect.HURT);
|
|
||||||
|
|
||||||
//Sound
|
|
||||||
player.getWorld().playSound(player.getLocation(), Sound.CHICKEN_HURT, 2f, 1.5f);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Release(Player player)
|
|
||||||
{
|
|
||||||
LivingEntity ent = _clutch.remove(player);
|
|
||||||
if (ent == null) return;
|
|
||||||
|
|
||||||
player.leaveVehicle();
|
|
||||||
ent.eject();
|
|
||||||
|
|
||||||
//Condition Indicators
|
|
||||||
Host.Factory.Condition().SetIndicatorVisibility(ent, true);
|
|
||||||
|
|
||||||
//Inform
|
|
||||||
UtilPlayer.message(player, F.main(Host.GetClassType().name(), "You released " + F.name(UtilEnt.getName(ent)) + "."));
|
|
||||||
UtilPlayer.message(ent, F.main(Host.GetClassType().name(), F.name(player.getName()) + " released you."));
|
|
||||||
|
|
||||||
//Effect
|
|
||||||
ent.playEffect(EntityEffect.HURT);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DamageRelease(CustomDamageEvent event)
|
|
||||||
{
|
|
||||||
Player damagee = event.GetDamageePlayer();
|
|
||||||
if (damagee == null) return;
|
|
||||||
|
|
||||||
Release(damagee);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Reset(Player player)
|
|
||||||
{
|
|
||||||
LivingEntity ent = _clutch.remove(player);
|
|
||||||
if (ent != null)
|
|
||||||
{
|
|
||||||
ent.eject();
|
|
||||||
Host.Factory.Condition().SetIndicatorVisibility(ent, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Creeper;
|
|
||||||
|
|
||||||
public class CreeperForm {
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,186 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map.Entry;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.ClientClass;
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.core.common.util.UtilGear;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.ISkill;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Skill;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
|
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
|
||||||
|
|
||||||
public abstract class FormBase extends Skill
|
|
||||||
{
|
|
||||||
private EntityType _type;
|
|
||||||
private ArrayList<ISkill> _formSkills = new ArrayList<ISkill>();
|
|
||||||
private String[] _formSkillNames;
|
|
||||||
|
|
||||||
private HashMap<Player, HashMap<ISkill, Integer>> _savedSkills = new HashMap<Player, HashMap<ISkill, Integer>>();
|
|
||||||
|
|
||||||
public FormBase(SkillFactory skills, String name, ClassType classType,
|
|
||||||
SkillType skillType, int cost, int levels, EntityType type, String[] formSkillNames)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType, cost, levels);
|
|
||||||
|
|
||||||
_type = type;
|
|
||||||
_formSkillNames = formSkillNames;
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Use(PlayerDropItemEvent event)
|
|
||||||
{
|
|
||||||
Player player = event.getPlayer();
|
|
||||||
|
|
||||||
int level = getLevel(player);
|
|
||||||
if (level == 0) return;
|
|
||||||
|
|
||||||
if (!UtilGear.isWeapon(event.getItemDrop().getItemStack()))
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Shift/Non-Shift for A/B
|
|
||||||
if (!IsMorphed(player))
|
|
||||||
{
|
|
||||||
if (this.GetSkillType() == SkillType.PassiveA)
|
|
||||||
if (player.isSneaking())
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (this.GetSkillType() == SkillType.PassiveB)
|
|
||||||
if (!player.isSneaking())
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
event.setCancelled(true);
|
|
||||||
|
|
||||||
if (_savedSkills.containsKey(player))
|
|
||||||
Unmorph(player);
|
|
||||||
else
|
|
||||||
Morph(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
public EntityType GetType()
|
|
||||||
{
|
|
||||||
return _type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Morph(Player player)
|
|
||||||
{
|
|
||||||
SaveHumanSkills(player);
|
|
||||||
|
|
||||||
//Set Skills
|
|
||||||
ClientClass cc = Factory.ClassManager().Get(player);
|
|
||||||
|
|
||||||
for (ISkill skill : GetFormSkills())
|
|
||||||
cc.AddSkill(skill, getLevel(player));
|
|
||||||
|
|
||||||
|
|
||||||
//Inform
|
|
||||||
UtilPlayer.message(player, F.main(GetClassType().name(), "You shapeshifted into " + F.skill(GetName() + " " + getLevel(player))));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Unmorph(Player player)
|
|
||||||
{
|
|
||||||
//Reset Skills
|
|
||||||
for (ISkill skill : GetFormSkills())
|
|
||||||
skill.Reset(player);
|
|
||||||
|
|
||||||
UnapplyMorph(player);
|
|
||||||
RestoreHumanSkills(player);
|
|
||||||
|
|
||||||
//Inform
|
|
||||||
UtilPlayer.message(player, F.main(GetClassType().name(), "You returned to " + F.skill("Human Form")));
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean IsMorphed(Player player)
|
|
||||||
{
|
|
||||||
return _savedSkills.containsKey(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Collection<Player> GetMorphedUsers()
|
|
||||||
{
|
|
||||||
return _savedSkills.keySet();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ArrayList<ISkill> GetFormSkills()
|
|
||||||
{
|
|
||||||
if (_formSkills.isEmpty())
|
|
||||||
for (String name : _formSkillNames)
|
|
||||||
{
|
|
||||||
ISkill skill = Factory.GetSkill(name);
|
|
||||||
|
|
||||||
if (skill != null)
|
|
||||||
_formSkills.add(skill);
|
|
||||||
|
|
||||||
else
|
|
||||||
System.out.println("Invalid Skill [" + name + "] for [" + GetName() + "].");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return _formSkills;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract void UnapplyMorph(Player player);
|
|
||||||
|
|
||||||
private void SaveHumanSkills(Player player)
|
|
||||||
{
|
|
||||||
ClientClass cc = Factory.ClassManager().Get(player);
|
|
||||||
|
|
||||||
//Save Current
|
|
||||||
_savedSkills.put(player, new HashMap<ISkill, Integer>());
|
|
||||||
|
|
||||||
for (Entry<ISkill, Integer> skill : cc.GetSkills())
|
|
||||||
{
|
|
||||||
//Save Sword/Axe
|
|
||||||
if (skill.getKey().GetSkillType() == SkillType.Sword ||
|
|
||||||
skill.getKey().GetSkillType() == SkillType.Axe ||
|
|
||||||
skill.getKey().GetSkillType() == SkillType.Class)
|
|
||||||
_savedSkills.get(player).put(skill.getKey(), skill.getValue());
|
|
||||||
|
|
||||||
//Save OTHER Morph
|
|
||||||
if (this.GetSkillType() == SkillType.PassiveA)
|
|
||||||
if (skill.getKey().GetSkillType() == SkillType.PassiveB)
|
|
||||||
_savedSkills.get(player).put(skill.getKey(), skill.getValue());
|
|
||||||
|
|
||||||
if (this.GetSkillType() == SkillType.PassiveB)
|
|
||||||
if (skill.getKey().GetSkillType() == SkillType.PassiveA)
|
|
||||||
_savedSkills.get(player).put(skill.getKey(), skill.getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
//Remove Saved
|
|
||||||
for (ISkill skill : _savedSkills.get(player).keySet())
|
|
||||||
cc.RemoveSkill(cc.GetSkillByType(skill.GetSkillType()));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RestoreHumanSkills(Player player)
|
|
||||||
{
|
|
||||||
ClientClass cc = Factory.ClassManager().Get(player);
|
|
||||||
|
|
||||||
//Remove Morph Skills
|
|
||||||
cc.RemoveSkill(cc.GetSkillByType(SkillType.Sword));
|
|
||||||
cc.RemoveSkill(cc.GetSkillByType(SkillType.Axe));
|
|
||||||
|
|
||||||
//Restore Old
|
|
||||||
if (!_savedSkills.containsKey(player))
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (ISkill skill : _savedSkills.get(player).keySet())
|
|
||||||
cc.AddSkill(skill, _savedSkills.get(player).get(skill));
|
|
||||||
|
|
||||||
_savedSkills.remove(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Reset(Player player)
|
|
||||||
{
|
|
||||||
_savedSkills.remove(player);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,127 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Golem;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
|
||||||
import mineplex.core.common.util.UtilGear;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.FormBase;
|
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.EventPriority;
|
|
||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
|
||||||
|
|
||||||
public class GolemForm extends FormBase
|
|
||||||
{
|
|
||||||
public GolemForm(SkillFactory skills, String name, ClassType classType,
|
|
||||||
SkillType skillType, int cost, int levels)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType, cost, levels,
|
|
||||||
EntityType.IRON_GOLEM, new String[]
|
|
||||||
{
|
|
||||||
"Magnetic Pull",
|
|
||||||
"Magnetic Repel"
|
|
||||||
});
|
|
||||||
|
|
||||||
SetDesc(new String[]
|
|
||||||
{
|
|
||||||
ChatColor.WHITE + "Passives:",
|
|
||||||
"* Slow II",
|
|
||||||
"* Protection III",
|
|
||||||
"* -4 Damage Dealt",
|
|
||||||
"",
|
|
||||||
ChatColor.WHITE + "Sword Attack: " + ChatColor.GREEN + "Iron Crush",
|
|
||||||
"* No Knockback",
|
|
||||||
"* Slow V for 0.5 seconds",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
ChatColor.WHITE + "Axe Attack: " + ChatColor.GREEN + "Iron Smash",
|
|
||||||
"* Strong Knockback",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
ChatColor.WHITE + "Sword Skill: " + ChatColor.GREEN + "Magnetic Pull",
|
|
||||||
"Pull in enemies infront of you;",
|
|
||||||
"* Range of 4 + 2pL",
|
|
||||||
"* Radius of 2 + 0.5pL",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
ChatColor.WHITE + "Axe Skill: " + ChatColor.GREEN + "Magnetic Repel",
|
|
||||||
"Repel all nearby enemies;",
|
|
||||||
"* Range of 4 + 2pL",
|
|
||||||
"* Velocity of 1.2 + 0.2pL"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void UnapplyMorph(Player player)
|
|
||||||
{
|
|
||||||
Factory.Condition().EndCondition(player, null, GetName());
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Update(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.FAST)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (Player cur : GetMorphedUsers())
|
|
||||||
{
|
|
||||||
Factory.Condition().Factory().Protection(GetName(), cur, cur, 1.9, 2, false, false);
|
|
||||||
Factory.Condition().Factory().Slow(GetName(), cur, cur, 1.9, 1, false, false, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
|
||||||
public void KnockbackTaken(CustomDamageEvent event)
|
|
||||||
{
|
|
||||||
if (event.IsCancelled())
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (event.GetCause() != DamageCause.ENTITY_ATTACK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Player damagee = event.GetDamageePlayer();
|
|
||||||
if (damagee == null) return;
|
|
||||||
|
|
||||||
if (!IsMorphed(damagee))
|
|
||||||
return;
|
|
||||||
|
|
||||||
event.SetKnockback(false);
|
|
||||||
damagee.getWorld().playSound(damagee.getLocation(), Sound.ZOMBIE_METAL, 0.8f, 1.8f);
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
|
||||||
public void KnockbackGiven(CustomDamageEvent event)
|
|
||||||
{
|
|
||||||
if (event.IsCancelled())
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (event.GetCause() != DamageCause.ENTITY_ATTACK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Player damager = event.GetDamagerPlayer(false);
|
|
||||||
if (damager == null) return;
|
|
||||||
|
|
||||||
if (!IsMorphed(damager))
|
|
||||||
return;
|
|
||||||
|
|
||||||
event.AddMod(damager.getName(), GetName(), -4, false);
|
|
||||||
|
|
||||||
if (UtilGear.isSword(damager.getItemInHand()))
|
|
||||||
{
|
|
||||||
damager.getWorld().playSound(damager.getLocation(), Sound.IRONGOLEM_HIT, 1f, 1.6f);
|
|
||||||
Factory.Condition().Factory().Slow(GetName(), event.GetDamageeEntity(), damager, 0.5, 4, false, false, true);
|
|
||||||
event.SetKnockback(false);
|
|
||||||
}
|
|
||||||
else if (UtilGear.isAxe(damager.getItemInHand()))
|
|
||||||
{
|
|
||||||
damager.getWorld().playSound(damager.getLocation(), Sound.IRONGOLEM_HIT, 1f, 0.8f);
|
|
||||||
event.AddKnockback(GetName(), 4d);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,142 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Golem;
|
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
|
|
||||||
import org.bukkit.Effect;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.entity.Entity;
|
|
||||||
import org.bukkit.entity.Item;
|
|
||||||
import org.bukkit.entity.LivingEntity;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.block.Action;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.core.common.util.UtilAction;
|
|
||||||
import mineplex.core.common.util.UtilAlg;
|
|
||||||
import mineplex.core.common.util.UtilMath;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
|
|
||||||
public class MagneticPull extends SkillActive
|
|
||||||
{
|
|
||||||
private HashSet<Player> _active = new HashSet<Player>();
|
|
||||||
|
|
||||||
public MagneticPull(SkillFactory skills, String name, ClassType classType, SkillType skillType,
|
|
||||||
int cost, int levels,
|
|
||||||
int energy, int energyMod,
|
|
||||||
long recharge, long rechargeMod, boolean rechargeInform,
|
|
||||||
Material[] itemArray,
|
|
||||||
Action[] actionArray)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType,
|
|
||||||
cost, levels,
|
|
||||||
energy, energyMod,
|
|
||||||
recharge, rechargeMod, rechargeInform,
|
|
||||||
itemArray,
|
|
||||||
actionArray);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String GetEnergyString()
|
|
||||||
{
|
|
||||||
return "Energy: 16 per Second";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean CustomCheck(Player player, int level)
|
|
||||||
{
|
|
||||||
if (player.getLocation().getBlock().getTypeId() == 8 || player.getLocation().getBlock().getTypeId() == 9)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in water."));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Skill(Player player, int level)
|
|
||||||
{
|
|
||||||
_active.add(player);
|
|
||||||
|
|
||||||
player.getWorld().playSound(player.getLocation(), Sound.IRONGOLEM_DEATH, 0.6f, 0.6f);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Energy(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.TICK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (Player cur : GetUsers())
|
|
||||||
{
|
|
||||||
if (!_active.contains(cur))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!cur.isBlocking())
|
|
||||||
{
|
|
||||||
_active.remove(cur);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Level
|
|
||||||
int level = getLevel(cur);
|
|
||||||
if (level == 0)
|
|
||||||
{
|
|
||||||
_active.remove(cur);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Factory.Energy().Use(cur, GetName(), 2 - (level * 0.1), true, true))
|
|
||||||
{
|
|
||||||
_active.remove(cur);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Effect
|
|
||||||
cur.getWorld().playEffect(cur.getLocation(), Effect.STEP_SOUND, 42);
|
|
||||||
|
|
||||||
//Pull
|
|
||||||
for (int i=0 ; i<=4 + (2*level) ; i++)
|
|
||||||
Pull(cur, cur.getEyeLocation().add(cur.getLocation().getDirection().multiply(i)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Pull(Player player, Location loc)
|
|
||||||
{
|
|
||||||
for (Entity other : player.getWorld().getEntities())
|
|
||||||
{
|
|
||||||
if (!(other instanceof LivingEntity) && !(other instanceof Item))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (player.equals(other))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (UtilMath.offset(player, other) < 2 || UtilMath.offset(loc, other.getLocation()) > 2 + ((getLevel(player) * 0.5)))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (other instanceof Player)
|
|
||||||
{
|
|
||||||
if (!Factory.Relation().CanHurt(player, (Player)other))
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
UtilAction.velocity(other, UtilAlg.getTrajectory2d(other, player),
|
|
||||||
0.2, false, 0, 0, 1, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Reset(Player player)
|
|
||||||
{
|
|
||||||
_active.remove(player);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,142 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Golem;
|
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
|
|
||||||
import org.bukkit.Effect;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.entity.Entity;
|
|
||||||
import org.bukkit.entity.Item;
|
|
||||||
import org.bukkit.entity.LivingEntity;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.block.Action;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.core.common.util.UtilAction;
|
|
||||||
import mineplex.core.common.util.UtilAlg;
|
|
||||||
import mineplex.core.common.util.UtilMath;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
|
|
||||||
public class MagneticPull extends SkillActive
|
|
||||||
{
|
|
||||||
private HashSet<Player> _active = new HashSet<Player>();
|
|
||||||
|
|
||||||
public MagneticPull(SkillFactory skills, String name, ClassType classType, SkillType skillType,
|
|
||||||
int cost, int levels,
|
|
||||||
int energy, int energyMod,
|
|
||||||
long recharge, long rechargeMod, boolean rechargeInform,
|
|
||||||
Material[] itemArray,
|
|
||||||
Action[] actionArray)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType,
|
|
||||||
cost, levels,
|
|
||||||
energy, energyMod,
|
|
||||||
recharge, rechargeMod, rechargeInform,
|
|
||||||
itemArray,
|
|
||||||
actionArray);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String GetEnergyString()
|
|
||||||
{
|
|
||||||
return "Energy: 16 per Second";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean CustomCheck(Player player, int level)
|
|
||||||
{
|
|
||||||
if (player.getLocation().getBlock().getTypeId() == 8 || player.getLocation().getBlock().getTypeId() == 9)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in water."));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Skill(Player player, int level)
|
|
||||||
{
|
|
||||||
_active.add(player);
|
|
||||||
|
|
||||||
player.getWorld().playSound(player.getLocation(), Sound.IRONGOLEM_DEATH, 0.6f, 0.6f);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Energy(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.TICK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (Player cur : GetUsers())
|
|
||||||
{
|
|
||||||
if (!_active.contains(cur))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!cur.isBlocking())
|
|
||||||
{
|
|
||||||
_active.remove(cur);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Level
|
|
||||||
int level = GetLevel(cur);
|
|
||||||
if (level == 0)
|
|
||||||
{
|
|
||||||
_active.remove(cur);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Factory.Energy().use(cur, GetName(), 2 - (level * 0.1), true, true))
|
|
||||||
{
|
|
||||||
_active.remove(cur);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Effect
|
|
||||||
cur.getWorld().playEffect(cur.getLocation(), Effect.STEP_SOUND, 42);
|
|
||||||
|
|
||||||
//Pull
|
|
||||||
for (int i=0 ; i<=4 + (2*level) ; i++)
|
|
||||||
Pull(cur, cur.getEyeLocation().add(cur.getLocation().getDirection().multiply(i)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Pull(Player player, Location loc)
|
|
||||||
{
|
|
||||||
for (Entity other : player.getWorld().getEntities())
|
|
||||||
{
|
|
||||||
if (!(other instanceof LivingEntity) && !(other instanceof Item))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (player.equals(other))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (UtilMath.offset(player, other) < 2 || UtilMath.offset(loc, other.getLocation()) > 2 + ((GetLevel(player) * 0.5)))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (other instanceof Player)
|
|
||||||
{
|
|
||||||
if (!Factory.Relation().CanHurt(player, (Player)other))
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
UtilAction.velocity(other, UtilAlg.getTrajectory2d(other, player),
|
|
||||||
0.2, false, 0, 0, 1, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Reset(Player player)
|
|
||||||
{
|
|
||||||
_active.remove(player);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,98 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Golem;
|
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.entity.Entity;
|
|
||||||
import org.bukkit.entity.LivingEntity;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.block.Action;
|
|
||||||
import org.bukkit.util.Vector;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.core.common.util.UtilAction;
|
|
||||||
import mineplex.core.common.util.UtilAlg;
|
|
||||||
import mineplex.core.common.util.UtilMath;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
|
|
||||||
public class MagneticRepel extends SkillActive
|
|
||||||
{
|
|
||||||
public MagneticRepel(SkillFactory skills, String name, ClassType classType, SkillType skillType,
|
|
||||||
int cost, int levels,
|
|
||||||
int energy, int energyMod,
|
|
||||||
long recharge, long rechargeMod, boolean rechargeInform,
|
|
||||||
Material[] itemArray,
|
|
||||||
Action[] actionArray)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType,
|
|
||||||
cost, levels,
|
|
||||||
energy, energyMod,
|
|
||||||
recharge, rechargeMod, rechargeInform,
|
|
||||||
itemArray,
|
|
||||||
actionArray);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean CustomCheck(Player player, int level)
|
|
||||||
{
|
|
||||||
if (player.getLocation().getBlock().getTypeId() == 8 || player.getLocation().getBlock().getTypeId() == 9)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in water."));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Skill(Player player, int level)
|
|
||||||
{
|
|
||||||
//Repel
|
|
||||||
for (Entity other : player.getWorld().getEntities())
|
|
||||||
{
|
|
||||||
if (!(other instanceof LivingEntity))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (player.equals(other))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
double offset = UtilMath.offset(player, other);
|
|
||||||
double maxOffset = 6 + (level * 2);
|
|
||||||
|
|
||||||
if (offset > maxOffset)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (other instanceof Player)
|
|
||||||
{
|
|
||||||
if (!Factory.Relation().CanHurt(player, (Player)other))
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
double power = 0.5 + (0.5 *((maxOffset - offset) / maxOffset));
|
|
||||||
|
|
||||||
Vector vel = UtilAlg.getTrajectory(player, other);
|
|
||||||
vel.setY(Math.min(0.3, vel.getY()));
|
|
||||||
vel.normalize();
|
|
||||||
|
|
||||||
UtilAction.velocity(other, vel,
|
|
||||||
power * (2 + (level * 0.5)), false, 0, 0.8, 0.8, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Inform
|
|
||||||
UtilPlayer.message(player, F.main(GetClassType().name(), "You used " + F.skill(GetName(level)) + "."));
|
|
||||||
|
|
||||||
//Sound
|
|
||||||
for (int i=0 ; i<3 ; i++)
|
|
||||||
player.getWorld().playSound(player.getLocation(), Sound.FIZZ, 2f, 0.6f);
|
|
||||||
|
|
||||||
player.getWorld().playSound(player.getLocation(), Sound.IRONGOLEM_DEATH, 2f, 2f);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Reset(Player player)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,211 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.entity.Arrow;
|
|
||||||
import org.bukkit.entity.LivingEntity;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.entity.Projectile;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.EventPriority;
|
|
||||||
import org.bukkit.event.block.Action;
|
|
||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
|
||||||
import mineplex.core.recharge.Recharge;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.core.common.util.UtilTime;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
|
|
||||||
public class Needler extends SkillActive
|
|
||||||
{
|
|
||||||
private HashMap<Player, Integer> _stored = new HashMap<Player, Integer>();
|
|
||||||
private HashMap<Player, Long> _fired = new HashMap<Player, Long>();
|
|
||||||
|
|
||||||
private HashSet<Arrow> _arrows = new HashSet<Arrow>();
|
|
||||||
|
|
||||||
private boolean _tick = false;
|
|
||||||
|
|
||||||
public Needler(SkillFactory skills, String name, ClassType classType, SkillType skillType,
|
|
||||||
int cost, int levels,
|
|
||||||
int energy, int energyMod,
|
|
||||||
long recharge, long rechargeMod, boolean rechargeInform,
|
|
||||||
Material[] itemArray,
|
|
||||||
Action[] actionArray)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType,
|
|
||||||
cost, levels,
|
|
||||||
energy, energyMod,
|
|
||||||
recharge, rechargeMod, rechargeInform,
|
|
||||||
itemArray,
|
|
||||||
actionArray);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean CustomCheck(Player player, int level)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Skill(Player player, int level)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Update(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.TICK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
_tick = !_tick;
|
|
||||||
|
|
||||||
if (_tick)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (Player cur : GetUsers())
|
|
||||||
{
|
|
||||||
if (!cur.isBlocking())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
//Level
|
|
||||||
int level = getLevel(cur);
|
|
||||||
if (level == 0)
|
|
||||||
continue;
|
|
||||||
//Water
|
|
||||||
if (cur.getLocation().getBlock().isLiquid())
|
|
||||||
{
|
|
||||||
UtilPlayer.message(cur, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in liquids."));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Use Charge
|
|
||||||
if (!UseCharge(cur))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
//Use Energy
|
|
||||||
Factory.Energy().Use(cur, GetName(), 3 - (0.2 * level), true, false);
|
|
||||||
|
|
||||||
Arrow arrow = cur.getWorld().spawnArrow(cur.getEyeLocation().add(cur.getLocation().getDirection()),
|
|
||||||
cur.getLocation().getDirection(), 1.6f + (level * 0.4f), 2);
|
|
||||||
arrow.setShooter(cur);
|
|
||||||
_arrows.add(arrow);
|
|
||||||
|
|
||||||
//Set Fired
|
|
||||||
_fired.put(cur, System.currentTimeMillis());
|
|
||||||
|
|
||||||
//Sound
|
|
||||||
cur.getWorld().playSound(cur.getLocation(), Sound.SPIDER_IDLE, 0.8f, 2f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOW)
|
|
||||||
public void Damage(CustomDamageEvent event)
|
|
||||||
{
|
|
||||||
if (event.GetCause() != DamageCause.PROJECTILE)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Projectile projectile = event.GetProjectile();
|
|
||||||
if (projectile == null) return;
|
|
||||||
|
|
||||||
if (!_arrows.remove(projectile))
|
|
||||||
return;
|
|
||||||
|
|
||||||
Player damager = event.GetDamagerPlayer(true);
|
|
||||||
if (damager == null) return;
|
|
||||||
|
|
||||||
LivingEntity damagee = event.GetDamageeEntity();
|
|
||||||
if (damagee == null) return;
|
|
||||||
|
|
||||||
event.SetCancelled(GetName());
|
|
||||||
|
|
||||||
//Damage Event
|
|
||||||
Factory.Damage().NewDamageEvent(damagee, damager, null,
|
|
||||||
DamageCause.THORNS, 2, true, true, false,
|
|
||||||
damager.getName(), GetName());
|
|
||||||
|
|
||||||
Factory.Condition().Factory().Poison(GetName(), damagee, damager, 2, 0, false, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean UseCharge(Player player)
|
|
||||||
{
|
|
||||||
if (!_stored.containsKey(player))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
int charges = _stored.get(player);
|
|
||||||
|
|
||||||
if (charges <= 0)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
_stored.put(player, charges-1);
|
|
||||||
player.setLevel(charges-1);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Recharge(UpdateEvent event)
|
|
||||||
{
|
|
||||||
for (Player cur : GetUsers())
|
|
||||||
if (!_stored.containsKey(cur))
|
|
||||||
{
|
|
||||||
_stored.put(cur, 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//Dont recharge while firing
|
|
||||||
if (_fired.containsKey(cur))
|
|
||||||
if (!UtilTime.elapsed(_fired.get(cur), 1000 - (getLevel(cur) * 50)))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
int charges = _stored.get(cur);
|
|
||||||
|
|
||||||
if (charges >= 3 + (1 * getLevel(cur)))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!Recharge.Instance.use(cur, GetName() + " Recharge", 100 - (getLevel(cur) * 10), false))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
charges += 1;
|
|
||||||
|
|
||||||
_stored.put(cur, charges);
|
|
||||||
|
|
||||||
cur.setLevel(charges);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Clean(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.SEC)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (Iterator<Arrow> arrowIterator = _arrows.iterator(); arrowIterator.hasNext();)
|
|
||||||
{
|
|
||||||
Arrow arrow = arrowIterator.next();
|
|
||||||
|
|
||||||
if (arrow.isDead() || !arrow.isValid() || arrow.getTicksLived() > 300)
|
|
||||||
{
|
|
||||||
arrowIterator.remove();
|
|
||||||
arrow.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Reset(Player player)
|
|
||||||
{
|
|
||||||
_stored.remove(player);
|
|
||||||
_fired.remove(player);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,211 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.entity.Arrow;
|
|
||||||
import org.bukkit.entity.LivingEntity;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.entity.Projectile;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.EventPriority;
|
|
||||||
import org.bukkit.event.block.Action;
|
|
||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
|
||||||
import mineplex.core.recharge.Recharge;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.core.common.util.UtilTime;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
|
|
||||||
public class Needler extends SkillActive
|
|
||||||
{
|
|
||||||
private HashMap<Player, Integer> _stored = new HashMap<Player, Integer>();
|
|
||||||
private HashMap<Player, Long> _fired = new HashMap<Player, Long>();
|
|
||||||
|
|
||||||
private HashSet<Arrow> _arrows = new HashSet<Arrow>();
|
|
||||||
|
|
||||||
private boolean _tick = false;
|
|
||||||
|
|
||||||
public Needler(SkillFactory skills, String name, ClassType classType, SkillType skillType,
|
|
||||||
int cost, int levels,
|
|
||||||
int energy, int energyMod,
|
|
||||||
long recharge, long rechargeMod, boolean rechargeInform,
|
|
||||||
Material[] itemArray,
|
|
||||||
Action[] actionArray)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType,
|
|
||||||
cost, levels,
|
|
||||||
energy, energyMod,
|
|
||||||
recharge, rechargeMod, rechargeInform,
|
|
||||||
itemArray,
|
|
||||||
actionArray);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean CustomCheck(Player player, int level)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Skill(Player player, int level)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Update(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.TICK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
_tick = !_tick;
|
|
||||||
|
|
||||||
if (_tick)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (Player cur : GetUsers())
|
|
||||||
{
|
|
||||||
if (!cur.isBlocking())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
//Level
|
|
||||||
int level = GetLevel(cur);
|
|
||||||
if (level == 0)
|
|
||||||
continue;
|
|
||||||
//Water
|
|
||||||
if (cur.getLocation().getBlock().isLiquid())
|
|
||||||
{
|
|
||||||
UtilPlayer.message(cur, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in liquids."));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Use Charge
|
|
||||||
if (!UseCharge(cur))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
//Use Energy
|
|
||||||
Factory.Energy().use(cur, GetName(), 3 - (0.2 * level), true, false);
|
|
||||||
|
|
||||||
Arrow arrow = cur.getWorld().spawnArrow(cur.getEyeLocation().add(cur.getLocation().getDirection()),
|
|
||||||
cur.getLocation().getDirection(), 1.6f + (level * 0.4f), 2);
|
|
||||||
arrow.setShooter(cur);
|
|
||||||
_arrows.add(arrow);
|
|
||||||
|
|
||||||
//Set Fired
|
|
||||||
_fired.put(cur, System.currentTimeMillis());
|
|
||||||
|
|
||||||
//Sound
|
|
||||||
cur.getWorld().playSound(cur.getLocation(), Sound.SPIDER_IDLE, 0.8f, 2f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOW)
|
|
||||||
public void Damage(CustomDamageEvent event)
|
|
||||||
{
|
|
||||||
if (event.GetCause() != DamageCause.PROJECTILE)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Projectile projectile = event.GetProjectile();
|
|
||||||
if (projectile == null) return;
|
|
||||||
|
|
||||||
if (!_arrows.remove(projectile))
|
|
||||||
return;
|
|
||||||
|
|
||||||
Player damager = event.GetDamagerPlayer(true);
|
|
||||||
if (damager == null) return;
|
|
||||||
|
|
||||||
LivingEntity damagee = event.GetDamageeEntity();
|
|
||||||
if (damagee == null) return;
|
|
||||||
|
|
||||||
event.SetCancelled(GetName());
|
|
||||||
|
|
||||||
//Damage Event
|
|
||||||
Factory.Damage().NewDamageEvent(damagee, damager, null,
|
|
||||||
DamageCause.THORNS, 2, true, true, false,
|
|
||||||
damager.getName(), GetName());
|
|
||||||
|
|
||||||
Factory.Condition().Factory().Poison(GetName(), damagee, damager, 2, 0, false, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean UseCharge(Player player)
|
|
||||||
{
|
|
||||||
if (!_stored.containsKey(player))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
int charges = _stored.get(player);
|
|
||||||
|
|
||||||
if (charges <= 0)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
_stored.put(player, charges-1);
|
|
||||||
player.setLevel(charges-1);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Recharge(UpdateEvent event)
|
|
||||||
{
|
|
||||||
for (Player cur : GetUsers())
|
|
||||||
if (!_stored.containsKey(cur))
|
|
||||||
{
|
|
||||||
_stored.put(cur, 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//Dont recharge while firing
|
|
||||||
if (_fired.containsKey(cur))
|
|
||||||
if (!UtilTime.elapsed(_fired.get(cur), 1000 - (GetLevel(cur) * 50)))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
int charges = _stored.get(cur);
|
|
||||||
|
|
||||||
if (charges >= 3 + (1 * GetLevel(cur)))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!Recharge.Instance.use(cur, GetName() + " Recharge", 100 - (GetLevel(cur) * 10), false))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
charges += 1;
|
|
||||||
|
|
||||||
_stored.put(cur, charges);
|
|
||||||
|
|
||||||
cur.setLevel(charges);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Clean(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.SEC)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (Iterator<Arrow> arrowIterator = _arrows.iterator(); arrowIterator.hasNext();)
|
|
||||||
{
|
|
||||||
Arrow arrow = arrowIterator.next();
|
|
||||||
|
|
||||||
if (arrow.isDead() || !arrow.isValid() || arrow.getTicksLived() > 300)
|
|
||||||
{
|
|
||||||
arrowIterator.remove();
|
|
||||||
arrow.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Reset(Player player)
|
|
||||||
{
|
|
||||||
_stored.remove(player);
|
|
||||||
_fired.remove(player);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,89 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider;
|
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.EventPriority;
|
|
||||||
import org.bukkit.event.block.Action;
|
|
||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.core.common.util.UtilAction;
|
|
||||||
import mineplex.core.common.util.UtilTime;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
|
|
||||||
public class Pounce extends SkillActive
|
|
||||||
{
|
|
||||||
public Pounce(SkillFactory skills, String name, ClassType classType, SkillType skillType,
|
|
||||||
int cost, int levels,
|
|
||||||
int energy, int energyMod,
|
|
||||||
long recharge, long rechargeMod, boolean rechargeInform,
|
|
||||||
Material[] itemArray,
|
|
||||||
Action[] actionArray)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType,
|
|
||||||
cost, levels,
|
|
||||||
energy, energyMod,
|
|
||||||
recharge, rechargeMod, rechargeInform,
|
|
||||||
itemArray,
|
|
||||||
actionArray);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean CustomCheck(Player player, int level)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOW)
|
|
||||||
public void EndDamager(CustomDamageEvent event)
|
|
||||||
{
|
|
||||||
if (event.IsCancelled())
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (event.GetCause() != DamageCause.ENTITY_ATTACK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Player damager = event.GetDamagerPlayer(true);
|
|
||||||
if (damager == null) return;
|
|
||||||
|
|
||||||
int level = getLevel(damager);
|
|
||||||
if (level == 0) return;
|
|
||||||
|
|
||||||
event.SetCancelled(GetName());
|
|
||||||
|
|
||||||
Skill(damager, level);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Skill(Player player, int level)
|
|
||||||
{
|
|
||||||
if (player.getLocation().getBlock().isLiquid())
|
|
||||||
{
|
|
||||||
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in liquids."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (UtilTime.elapsed(Factory.Movement().Get(player).LastGrounded, 1000))
|
|
||||||
{
|
|
||||||
UtilPlayer.message(player, F.main(GetClassType().name(), "You cannot use " + F.skill(GetName()) + " while airborne."));
|
|
||||||
}
|
|
||||||
|
|
||||||
//Action
|
|
||||||
UtilAction.velocity(player, 0.7 + (0.1 * level), 0.2, 0.8, true);
|
|
||||||
|
|
||||||
//Effect
|
|
||||||
player.getWorld().playSound(player.getLocation(), Sound.SPIDER_DEATH, 0.5f, 2f);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Reset(Player player)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,66 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.FormBase;
|
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
|
|
||||||
public class SpiderForm extends FormBase
|
|
||||||
{
|
|
||||||
public SpiderForm(SkillFactory skills, String name, ClassType classType,
|
|
||||||
SkillType skillType, int cost, int levels)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType, cost, levels,
|
|
||||||
EntityType.SPIDER, new String[]
|
|
||||||
{
|
|
||||||
"Venomous Spines",
|
|
||||||
"Spin Web",
|
|
||||||
"Pounce"
|
|
||||||
});
|
|
||||||
|
|
||||||
SetDesc(new String[]
|
|
||||||
{
|
|
||||||
ChatColor.WHITE + "Passives:",
|
|
||||||
"* Slow II",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
ChatColor.WHITE + "Attack: " + ChatColor.GREEN + "Pounce",
|
|
||||||
"Pounce with 0.7 + 0.1pL Velocity",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
ChatColor.WHITE + "Sword Skill: " + ChatColor.GREEN + "Needler",
|
|
||||||
"Spit out a flurry of needles;",
|
|
||||||
"* Capacity of 3 + 1pL",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
ChatColor.WHITE + "Axe Skill: " + ChatColor.GREEN + "Spin Web",
|
|
||||||
"Spin a temporary web;",
|
|
||||||
"* Lasts 5 + 1pL seconds"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void UnapplyMorph(Player player)
|
|
||||||
{
|
|
||||||
Factory.Condition().EndCondition(player, null, GetName());
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Update(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.FAST)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (Player cur : GetMorphedUsers())
|
|
||||||
{
|
|
||||||
Factory.Condition().Factory().Protection(GetName(), cur, cur, 1.9, 0, false, false);
|
|
||||||
Factory.Condition().Factory().Slow(GetName(), cur, cur, 1.9, 0, false, false, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,110 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider;
|
|
||||||
|
|
||||||
import org.bukkit.Effect;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.block.Block;
|
|
||||||
import org.bukkit.enchantments.Enchantment;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.EventPriority;
|
|
||||||
import org.bukkit.event.block.Action;
|
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.core.common.util.UtilBlock;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
|
|
||||||
public class SpinWeb extends SkillActive
|
|
||||||
{
|
|
||||||
public SpinWeb(SkillFactory skills, String name, ClassType classType, SkillType skillType,
|
|
||||||
int cost, int levels,
|
|
||||||
int energy, int energyMod,
|
|
||||||
long recharge, long rechargeMod, boolean rechargeInform,
|
|
||||||
Material[] itemArray,
|
|
||||||
Action[] actionArray)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType,
|
|
||||||
cost, levels,
|
|
||||||
energy, energyMod,
|
|
||||||
recharge, rechargeMod, rechargeInform,
|
|
||||||
itemArray,
|
|
||||||
actionArray);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@EventHandler(priority = EventPriority.LOW)
|
|
||||||
public void Interact(PlayerInteractEvent event)
|
|
||||||
{
|
|
||||||
Player player = event.getPlayer();
|
|
||||||
|
|
||||||
//Check Block
|
|
||||||
if (UtilBlock.usable(event.getClickedBlock()))
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Check Action
|
|
||||||
if (!_actionSet.contains(event.getAction()))
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Check Material
|
|
||||||
if (!_itemSet.contains(player.getItemInHand().getType()))
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Level
|
|
||||||
int level = getLevel(player);
|
|
||||||
if (level <= 0) return;
|
|
||||||
|
|
||||||
if (!CustomCheck(player, level))
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Unique Weapon
|
|
||||||
if (player.getItemInHand().getEnchantments().containsKey(Enchantment.ARROW_DAMAGE))
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Block
|
|
||||||
Block block = event.getClickedBlock();
|
|
||||||
if (block == null) return;
|
|
||||||
|
|
||||||
block = block.getRelative(event.getBlockFace());
|
|
||||||
|
|
||||||
//Check Energy
|
|
||||||
if (!Factory.Energy().Use(player, GetName(), 20 - (level * 2), true, true))
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Block
|
|
||||||
Factory.BlockRestore().Add(block, 30, (byte)0, 5000 + (1000 * level));
|
|
||||||
|
|
||||||
//Effect
|
|
||||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, 30);
|
|
||||||
|
|
||||||
//Sound
|
|
||||||
player.getWorld().playSound(player.getLocation(), Sound.SPIDER_IDLE, 1f, 0.3f);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean CustomCheck(Player player, int level)
|
|
||||||
{
|
|
||||||
if (player.getLocation().getBlock().getTypeId() == 8 || player.getLocation().getBlock().getTypeId() == 9)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in water."));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Skill(Player player, int level)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Reset(Player player)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,119 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Squid;
|
|
||||||
|
|
||||||
import org.bukkit.Effect;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.block.Block;
|
|
||||||
import org.bukkit.enchantments.Enchantment;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.EventPriority;
|
|
||||||
import org.bukkit.event.block.Action;
|
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.core.common.util.UtilBlock;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
|
|
||||||
public class Construction extends SkillActive
|
|
||||||
{
|
|
||||||
public Construction(SkillFactory skills, String name, ClassType classType, SkillType skillType,
|
|
||||||
int cost, int levels,
|
|
||||||
int energy, int energyMod,
|
|
||||||
long recharge, long rechargeMod, boolean rechargeInform,
|
|
||||||
Material[] itemArray,
|
|
||||||
Action[] actionArray)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType,
|
|
||||||
cost, levels,
|
|
||||||
energy, energyMod,
|
|
||||||
recharge, rechargeMod, rechargeInform,
|
|
||||||
itemArray,
|
|
||||||
actionArray);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@EventHandler(priority = EventPriority.LOW)
|
|
||||||
public void Interact(PlayerInteractEvent event)
|
|
||||||
{
|
|
||||||
Player player = event.getPlayer();
|
|
||||||
|
|
||||||
//Check Block
|
|
||||||
if (UtilBlock.usable(event.getClickedBlock()))
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Check Action
|
|
||||||
if (!_actionSet.contains(event.getAction()))
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Check Material
|
|
||||||
if (!_itemSet.contains(player.getItemInHand().getType()))
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Level
|
|
||||||
int level = getLevel(player);
|
|
||||||
if (level <= 0) return;
|
|
||||||
|
|
||||||
if (!CustomCheck(player, level))
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Unique Weapon
|
|
||||||
if (player.getItemInHand().getEnchantments().containsKey(Enchantment.ARROW_DAMAGE))
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Block
|
|
||||||
Block block = event.getClickedBlock();
|
|
||||||
if (block == null) return;
|
|
||||||
|
|
||||||
if (event.getAction() == Action.RIGHT_CLICK_BLOCK)
|
|
||||||
block = block.getRelative(event.getBlockFace());
|
|
||||||
|
|
||||||
if (block.getTypeId() != 8 && block.getTypeId() != 9 && event.getAction() == Action.RIGHT_CLICK_BLOCK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (block.getTypeId() != 79 && event.getAction() == Action.LEFT_CLICK_BLOCK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Check Energy
|
|
||||||
if (!Factory.Energy().Use(player, GetName(), 12 - (level * 2), true, true))
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Block
|
|
||||||
if (block.getTypeId() == 79)
|
|
||||||
{
|
|
||||||
block.setTypeId(8);
|
|
||||||
|
|
||||||
//Sound
|
|
||||||
player.getWorld().playSound(player.getLocation(), Sound.SPLASH, 0.5f, 0.5f);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
block.setTypeId(79);
|
|
||||||
|
|
||||||
//Sound
|
|
||||||
player.getWorld().playSound(player.getLocation(), Sound.ORB_PICKUP, 0.5f, 3f);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Effect
|
|
||||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, 80);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean CustomCheck(Player player, int level)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Skill(Player player, int level)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Reset(Player player)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,118 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Squid;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.block.Action;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.core.common.util.UtilAction;
|
|
||||||
import mineplex.core.common.util.UtilTime;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
|
|
||||||
public class Propel extends SkillActive
|
|
||||||
{
|
|
||||||
private HashMap<Player, Long> _active = new HashMap<Player, Long>();
|
|
||||||
|
|
||||||
public Propel(SkillFactory skills, String name, ClassType classType, SkillType skillType,
|
|
||||||
int cost, int levels,
|
|
||||||
int energy, int energyMod,
|
|
||||||
long recharge, long rechargeMod, boolean rechargeInform,
|
|
||||||
Material[] itemArray,
|
|
||||||
Action[] actionArray)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType,
|
|
||||||
cost, levels,
|
|
||||||
energy, energyMod,
|
|
||||||
recharge, rechargeMod, rechargeInform,
|
|
||||||
itemArray,
|
|
||||||
actionArray);
|
|
||||||
|
|
||||||
SetDesc(new String[]
|
|
||||||
{
|
|
||||||
""
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean CustomCheck(Player player, int level)
|
|
||||||
{
|
|
||||||
if (!player.getLocation().getBlock().isLiquid())
|
|
||||||
{
|
|
||||||
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " out of water."));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Skill(Player player, int level)
|
|
||||||
{
|
|
||||||
//Velocity
|
|
||||||
UtilAction.velocity(player, 0.6 + (0.2 * level), 0.2, 2, false);
|
|
||||||
|
|
||||||
//Store
|
|
||||||
_active.put(player, System.currentTimeMillis());
|
|
||||||
|
|
||||||
//Sound
|
|
||||||
player.getWorld().playSound(player.getLocation(), Sound.SPLASH2, 1.5f, 1.5f);
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Reuse(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.TICK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (Player cur : GetUsers())
|
|
||||||
{
|
|
||||||
if (!_active.containsKey(cur))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!cur.isBlocking())
|
|
||||||
{
|
|
||||||
_active.remove(cur);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Level
|
|
||||||
int level = getLevel(cur);
|
|
||||||
if (level == 0)
|
|
||||||
{
|
|
||||||
_active.remove(cur);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Time
|
|
||||||
if (!UtilTime.elapsed(_active.get(cur), 400))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!cur.getLocation().getBlock().isLiquid())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
//Thrust
|
|
||||||
UtilAction.velocity(cur, 0.3 + (0.1 * level), 0.1, 2, false);
|
|
||||||
|
|
||||||
//Store
|
|
||||||
_active.put(cur, System.currentTimeMillis());
|
|
||||||
|
|
||||||
//Sound
|
|
||||||
cur.getWorld().playSound(cur.getLocation(), Sound.SPLASH2, 0.5f, 1f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Reset(Player player)
|
|
||||||
{
|
|
||||||
_active.remove(player);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,115 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Squid;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
|
||||||
import mineplex.core.common.util.UtilEnt;
|
|
||||||
import mineplex.core.common.util.UtilServer;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.FormBase;
|
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.EventPriority;
|
|
||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
|
||||||
import org.bukkit.util.Vector;
|
|
||||||
|
|
||||||
public class SquidForm extends FormBase
|
|
||||||
{
|
|
||||||
public SquidForm(SkillFactory skills, String name, ClassType classType,
|
|
||||||
SkillType skillType, int cost, int levels)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType, cost, levels,
|
|
||||||
EntityType.SQUID, new String[]
|
|
||||||
{
|
|
||||||
"Propel",
|
|
||||||
"Ice Construction"
|
|
||||||
});
|
|
||||||
|
|
||||||
SetDesc(new String[]
|
|
||||||
{
|
|
||||||
ChatColor.WHITE + "Passives:",
|
|
||||||
"* Unlimited Air",
|
|
||||||
"* Protection II",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
ChatColor.WHITE + "Attack: " + ChatColor.GREEN + "Suffocate",
|
|
||||||
"* Target has 1.5 second of air removed",
|
|
||||||
"* Target is pushed downward slightly",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
ChatColor.WHITE + "Sword Skill: " + ChatColor.GREEN + "Swim",
|
|
||||||
"Push Block to thrust forwards;",
|
|
||||||
"* Velocity of 0.6 + 0.2pL",
|
|
||||||
"",
|
|
||||||
"Hold Block to swim;",
|
|
||||||
"* Velocity of 0.3 + 0.1pL",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
ChatColor.WHITE + "Axe Skill: " + ChatColor.GREEN + "Ice Construction",
|
|
||||||
"Right-Click to freeze water",
|
|
||||||
"Left-Click to melt ice"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Unmorph(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.TICK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (Player cur : UtilServer.getPlayers())
|
|
||||||
{
|
|
||||||
if (!IsMorphed(cur))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (UtilEnt.isGrounded(cur) && !cur.getLocation().getBlock().isLiquid())
|
|
||||||
Unmorph(cur);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void UnapplyMorph(Player player)
|
|
||||||
{
|
|
||||||
Factory.Condition().EndCondition(player, null, GetName());
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
|
||||||
public void Attack(CustomDamageEvent event)
|
|
||||||
{
|
|
||||||
if (event.IsCancelled())
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (event.GetCause() != DamageCause.ENTITY_ATTACK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Player damager = event.GetDamagerPlayer(false);
|
|
||||||
if (damager == null) return;
|
|
||||||
|
|
||||||
if (!IsMorphed(damager))
|
|
||||||
return;
|
|
||||||
|
|
||||||
event.SetKnockback(false);
|
|
||||||
|
|
||||||
//Attack
|
|
||||||
event.GetDamageeEntity().setRemainingAir(Math.max(0, event.GetDamageeEntity().getRemainingAir() - 30));
|
|
||||||
event.GetDamageeEntity().setVelocity(new Vector(0, -0.5, 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Update(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.FAST)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (Player cur : GetMorphedUsers())
|
|
||||||
{
|
|
||||||
cur.setRemainingAir(cur.getMaximumAir());
|
|
||||||
Factory.Condition().Factory().Protection(GetName(), cur, cur, 1.9, 1, false, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,64 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Wolf;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.FormBase;
|
|
||||||
|
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
|
|
||||||
public class WolfForm extends FormBase
|
|
||||||
{
|
|
||||||
public WolfForm(SkillFactory skills, String name, ClassType classType,
|
|
||||||
SkillType skillType, int cost, int levels)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType, cost, levels,
|
|
||||||
EntityType.WOLF, new String[]
|
|
||||||
{
|
|
||||||
//skills.GetSkill("Magnetic Pull"),
|
|
||||||
//skills.GetSkill("Magnetic Repel")
|
|
||||||
});
|
|
||||||
|
|
||||||
SetDesc(new String[]
|
|
||||||
{
|
|
||||||
"Dire Wolf Form (Harass / Ganking);",
|
|
||||||
"* Speed I",
|
|
||||||
"* Protection I",
|
|
||||||
"* Regeneration I",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"Axe Skill: Howl",
|
|
||||||
"Nearby allies receive;",
|
|
||||||
"* Speed III for 3 + 1pL seconds",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"Sword Skill: Bite",
|
|
||||||
"Hold Block to bite target;",
|
|
||||||
"* Slow IV for 2 seconds",
|
|
||||||
"* You are pulled along with target"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void UnapplyMorph(Player player)
|
|
||||||
{
|
|
||||||
Factory.Condition().EndCondition(player, null, GetName());
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Update(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.FAST)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (Player cur : GetMorphedUsers())
|
|
||||||
{
|
|
||||||
Factory.Condition().Factory().Protection(GetName(), cur, cur, 1.9, 0, false, false);
|
|
||||||
Factory.Condition().Factory().Speed(GetName(), cur, cur, 1.9, 0, false, false);
|
|
||||||
Factory.Condition().Factory().Regen(GetName(), cur, cur, 1.9, 0, false, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,146 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter;
|
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.entity.LivingEntity;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.block.Action;
|
|
||||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.core.common.util.UtilMath;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.UtilServer;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent;
|
|
||||||
|
|
||||||
public class Polysmash extends SkillActive
|
|
||||||
{
|
|
||||||
private HashSet<Player> _used = new HashSet<Player>();
|
|
||||||
|
|
||||||
public Polysmash(SkillFactory skills, String name, ClassType classType, SkillType skillType,
|
|
||||||
int cost, int levels,
|
|
||||||
int energy, int energyMod,
|
|
||||||
long recharge, long rechargeMod, boolean rechargeInform,
|
|
||||||
Material[] itemArray,
|
|
||||||
Action[] actionArray)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType,
|
|
||||||
cost, levels,
|
|
||||||
energy, energyMod,
|
|
||||||
recharge, rechargeMod, rechargeInform,
|
|
||||||
itemArray,
|
|
||||||
actionArray);
|
|
||||||
|
|
||||||
SetDesc(new String[]
|
|
||||||
{
|
|
||||||
"Turn target enemy into a sheep",
|
|
||||||
"for 6 seconds. While in sheep form,",
|
|
||||||
"players have Slow and Silence."
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean CustomCheck(Player player, int level)
|
|
||||||
{
|
|
||||||
if (_used.contains(player))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Skill(Player player, int level)
|
|
||||||
{
|
|
||||||
//Inform
|
|
||||||
UtilPlayer.message(player, F.main(GetClassType().name(), "You missed " + F.skill(GetName()) + "."));
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Miss(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.TICK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
_used.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean CanUse(Player player)
|
|
||||||
{
|
|
||||||
int level = getLevel(player);
|
|
||||||
if (level == 0)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
//Check Material
|
|
||||||
if (!_itemSet.contains(player.getItemInHand().getType()))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
//Check Allowed
|
|
||||||
SkillTriggerEvent trigger = new SkillTriggerEvent(player, GetName(), GetClassType());
|
|
||||||
UtilServer.getServer().getPluginManager().callEvent(trigger);
|
|
||||||
if (trigger.IsCancelled())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
//Check Energy/Recharge
|
|
||||||
if (!EnergyRechargeCheck(player, level))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
//Allow
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Hit(PlayerInteractEntityEvent event)
|
|
||||||
{
|
|
||||||
Player player = event.getPlayer();
|
|
||||||
|
|
||||||
//Level
|
|
||||||
int level = getLevel(player);
|
|
||||||
if (level == 0) return;
|
|
||||||
|
|
||||||
if (!CanUse(player))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (event.getRightClicked() == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!(event.getRightClicked() instanceof LivingEntity))
|
|
||||||
return;
|
|
||||||
|
|
||||||
LivingEntity ent = (LivingEntity)event.getRightClicked();
|
|
||||||
|
|
||||||
if (UtilMath.offset(player, ent) > 3)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(player, F.main(GetClassType().name(), "You missed " + F.skill(GetName()) + "."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Set Used
|
|
||||||
_used.add(player);
|
|
||||||
|
|
||||||
//Condition
|
|
||||||
Factory.Condition().Factory().Slow(GetName(), ent, player, 5, 0, false, true, false, false);
|
|
||||||
Factory.Condition().Factory().Silence(GetName(), ent, player, 5, false, true);
|
|
||||||
|
|
||||||
//Effect
|
|
||||||
ent.getWorld().playSound(ent.getLocation(), Sound.SHEEP_IDLE, 2f, 1f);
|
|
||||||
ent.getWorld().playSound(ent.getLocation(), Sound.SHEEP_IDLE, 2f, 1f);
|
|
||||||
|
|
||||||
//Inform
|
|
||||||
UtilPlayer.message(player, F.main(GetClassType().name(), "You used " + F.skill(GetName()) + "."));
|
|
||||||
UtilPlayer.message(ent, F.main(GetClassType().name(), F.name(player.getName()) + " hit you with " + F.skill(GetName(level)) + "."));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Reset(Player player)
|
|
||||||
{
|
|
||||||
_used.remove(player);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,56 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter;
|
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.inventory.PlayerInventory;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Skill;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
|
|
||||||
public class Shifter extends Skill
|
|
||||||
{
|
|
||||||
public Shifter(SkillFactory skills, String name, ClassType classType, SkillType skillType, int cost, int levels)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType, cost, levels);
|
|
||||||
|
|
||||||
SetDesc(new String[]
|
|
||||||
{
|
|
||||||
"Permanent Protection II."
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Update(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() == UpdateType.FAST)
|
|
||||||
for (Player cur : GetUsers())
|
|
||||||
Factory.Condition().Factory().Protection(GetName(), cur, cur, 1.9, 1, false, false, false);
|
|
||||||
|
|
||||||
if (event.getType() == UpdateType.SLOWER)
|
|
||||||
for (Player cur : GetUsers())
|
|
||||||
{
|
|
||||||
PlayerInventory inv = cur.getInventory();
|
|
||||||
|
|
||||||
if (inv.getHelmet() != null && inv.getHelmet().getDurability() > 0)
|
|
||||||
inv.getHelmet().setDurability((short) (inv.getHelmet().getDurability()-1));
|
|
||||||
|
|
||||||
if (inv.getChestplate() != null && inv.getChestplate().getDurability() > 0)
|
|
||||||
inv.getChestplate().setDurability((short) (inv.getChestplate().getDurability()-1));
|
|
||||||
|
|
||||||
if (inv.getLeggings() != null && inv.getLeggings().getDurability() > 0)
|
|
||||||
inv.getLeggings().setDurability((short) (inv.getLeggings().getDurability()-1));
|
|
||||||
|
|
||||||
if (inv.getBoots() != null && inv.getBoots().getDurability() > 0)
|
|
||||||
inv.getBoots().setDurability((short) (inv.getBoots().getDurability()-1));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Reset(Player player)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,170 +0,0 @@
|
||||||
package mineplex.minecraft.game.classcombat.Skill.Shifter;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
|
|
||||||
import org.bukkit.Effect;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.block.Block;
|
|
||||||
import org.bukkit.block.BlockFace;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.block.Action;
|
|
||||||
|
|
||||||
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.UtilServer;
|
|
||||||
import mineplex.core.common.util.UtilBlock;
|
|
||||||
import mineplex.core.common.util.UtilMath;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
|
|
||||||
|
|
||||||
public class TreeShift extends SkillActive
|
|
||||||
{
|
|
||||||
private HashMap<Location, Long> trees = new HashMap<Location, Long>();
|
|
||||||
|
|
||||||
public TreeShift(SkillFactory skills, String name, ClassType classType, SkillType skillType,
|
|
||||||
int cost, int levels,
|
|
||||||
int energy, int energyMod,
|
|
||||||
long recharge, long rechargeMod, boolean rechargeInform,
|
|
||||||
Material[] itemArray,
|
|
||||||
Action[] actionArray)
|
|
||||||
{
|
|
||||||
super(skills, name, classType, skillType,
|
|
||||||
cost, levels,
|
|
||||||
energy, energyMod,
|
|
||||||
recharge, rechargeMod, rechargeInform,
|
|
||||||
itemArray,
|
|
||||||
actionArray);
|
|
||||||
|
|
||||||
SetDesc(new String[]
|
|
||||||
{
|
|
||||||
"Creates an illusionary tree at target location.",
|
|
||||||
"Other players cannot attack or see through it.",
|
|
||||||
"You view it as a sapling, and can attack over it.",
|
|
||||||
"Lasts 2 + 2pL seconds."
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean CustomCheck(Player player, int level)
|
|
||||||
{
|
|
||||||
if (player.getLocation().getBlock().getTypeId() == 8 || player.getLocation().getBlock().getTypeId() == 9)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in water."));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Block block = player.getTargetBlock(null, 0);
|
|
||||||
if (UtilMath.offset(block.getLocation().add(0.5, 0.5, 0.5), player.getLocation()) > 8 + level)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " so far away."));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Skill(Player player, int level)
|
|
||||||
{
|
|
||||||
HashMap<Location, Material> tree = new HashMap<Location, Material>();
|
|
||||||
|
|
||||||
Block block = player.getTargetBlock(null, 0);
|
|
||||||
|
|
||||||
//Show to Player
|
|
||||||
final Player fPlayer = player;
|
|
||||||
final Location fLoc = block.getLocation().add(0, 1, 0);
|
|
||||||
UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(Factory.GetPlugin(), new Runnable()
|
|
||||||
{
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
fPlayer.sendBlockChange(fLoc, 6, (byte)0);
|
|
||||||
}
|
|
||||||
}, 0);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Generate Tree
|
|
||||||
for (int i=0 ; i<6 ; i++)
|
|
||||||
{
|
|
||||||
block = block.getRelative(BlockFace.UP);
|
|
||||||
|
|
||||||
if (block.getTypeId() != 0)
|
|
||||||
{
|
|
||||||
block = block.getRelative(BlockFace.DOWN);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
tree.put(block.getLocation(), Material.LOG);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tree.size() > 5)
|
|
||||||
{
|
|
||||||
for (Block leaf : UtilBlock.getInRadius(block.getLocation(), 2.5d).keySet())
|
|
||||||
{
|
|
||||||
if (!tree.containsKey(leaf.getLocation()) && leaf.getTypeId() == 0)
|
|
||||||
{
|
|
||||||
tree.put(leaf.getLocation(), Material.LEAVES);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//Show Tree
|
|
||||||
for (Location loc : tree.keySet())
|
|
||||||
{
|
|
||||||
trees.put(loc, System.currentTimeMillis() + (2000 + (2000 * level)));
|
|
||||||
|
|
||||||
for (Player other : player.getWorld().getPlayers())
|
|
||||||
{
|
|
||||||
if (other.equals(player))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
other.sendBlockChange(loc, tree.get(loc), (byte)0);
|
|
||||||
|
|
||||||
if (tree.get(loc) == Material.LOG)
|
|
||||||
other.playEffect(loc, Effect.STEP_SOUND, 17);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Inform
|
|
||||||
UtilPlayer.message(player, F.main(GetClassType().name(), "You used " + F.skill(GetName(level)) + "."));
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void Detree(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() != UpdateType.FAST)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (trees.isEmpty())
|
|
||||||
return;
|
|
||||||
|
|
||||||
HashSet<Location> remove = new HashSet<Location>();
|
|
||||||
|
|
||||||
for (Location loc : trees.keySet())
|
|
||||||
{
|
|
||||||
if (System.currentTimeMillis() > trees.get(loc))
|
|
||||||
remove.add(loc);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Location loc : remove)
|
|
||||||
{
|
|
||||||
for (Player player : loc.getWorld().getPlayers())
|
|
||||||
player.sendBlockChange(loc, 0, (byte)0);
|
|
||||||
|
|
||||||
trees.remove(loc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Reset(Player player)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -23,19 +23,6 @@ import mineplex.minecraft.game.classcombat.Skill.Knight.*;
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Mage.*;
|
import mineplex.minecraft.game.classcombat.Skill.Mage.*;
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Mage.Void;
|
import mineplex.minecraft.game.classcombat.Skill.Mage.Void;
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Ranger.*;
|
import mineplex.minecraft.game.classcombat.Skill.Ranger.*;
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.*;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Chicken.ChickenForm;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Chicken.Flap;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Golem.GolemForm;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Golem.MagneticPull;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Golem.MagneticRepel;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider.Needler;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider.Pounce;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider.SpiderForm;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider.SpinWeb;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Squid.Construction;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Squid.Propel;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Squid.SquidForm;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.repository.SkillRepository;
|
import mineplex.minecraft.game.classcombat.Skill.repository.SkillRepository;
|
||||||
import mineplex.minecraft.game.classcombat.Skill.repository.token.SkillToken;
|
import mineplex.minecraft.game.classcombat.Skill.repository.token.SkillToken;
|
||||||
import mineplex.minecraft.game.core.IRelation;
|
import mineplex.minecraft.game.core.IRelation;
|
||||||
|
@ -509,99 +496,6 @@ public class SkillFactory extends MiniPlugin implements ISkillFactory
|
||||||
//AddSkill(new Fletcher(this, "Fletcher", ClassType.Ranger, SkillType.PassiveB, 5, 3));
|
//AddSkill(new Fletcher(this, "Fletcher", ClassType.Ranger, SkillType.PassiveB, 5, 3));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddShifter()
|
|
||||||
{
|
|
||||||
AddSkill(new Shifter(this, "Shifter Class", ClassType.Shifter, SkillType.Class, 0, 1));
|
|
||||||
|
|
||||||
//Axe
|
|
||||||
AddSkill(new TreeShift(this, "Tree Shift", ClassType.Shifter, SkillType.Axe,
|
|
||||||
0, 1,
|
|
||||||
40, 0,
|
|
||||||
4000, 0, true,
|
|
||||||
new Material[] {Material.IRON_AXE, Material.GOLD_AXE, Material.DIAMOND_AXE},
|
|
||||||
new Action[] {Action.RIGHT_CLICK_AIR, Action.RIGHT_CLICK_BLOCK}));
|
|
||||||
|
|
||||||
//Sword
|
|
||||||
AddSkill(new Polysmash(this, "Polysmash", ClassType.Shifter, SkillType.Sword,
|
|
||||||
0, 1,
|
|
||||||
30, 0,
|
|
||||||
16000, 0, true,
|
|
||||||
new Material[] {Material.IRON_SWORD, Material.GOLD_SWORD, Material.DIAMOND_SWORD},
|
|
||||||
new Action[] {Action.RIGHT_CLICK_AIR, Action.RIGHT_CLICK_BLOCK}));
|
|
||||||
|
|
||||||
//CHICKEN=========================================================================================
|
|
||||||
AddSkill(new ChickenForm(this, "Chicken Form", ClassType.Shifter, SkillType.PassiveB, 0, 5));
|
|
||||||
|
|
||||||
AddSkill(new Flap(this, "Flap", ClassType.Shifter, SkillType.Sword,
|
|
||||||
0, 1,
|
|
||||||
5, 0,
|
|
||||||
0, 0, true,
|
|
||||||
new Material[] {Material.IRON_SWORD, Material.GOLD_SWORD, Material.DIAMOND_SWORD},
|
|
||||||
new Action[] {Action.RIGHT_CLICK_AIR, Action.RIGHT_CLICK_BLOCK}));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//SQUID=========================================================================================
|
|
||||||
AddSkill(new SquidForm(this, "Squid Form", ClassType.Shifter, SkillType.PassiveB, 0, 5));
|
|
||||||
|
|
||||||
AddSkill(new Propel(this, "Propel", ClassType.Shifter, SkillType.Sword,
|
|
||||||
0, 1,
|
|
||||||
12, 0,
|
|
||||||
250, 0, false,
|
|
||||||
new Material[] {Material.IRON_SWORD, Material.GOLD_SWORD, Material.DIAMOND_SWORD},
|
|
||||||
new Action[] {Action.RIGHT_CLICK_AIR, Action.RIGHT_CLICK_BLOCK}));
|
|
||||||
|
|
||||||
AddSkill(new Construction(this, "Ice Construction", ClassType.Shifter, SkillType.Axe,
|
|
||||||
0, 1,
|
|
||||||
8, 0,
|
|
||||||
0, 0, true,
|
|
||||||
new Material[] {Material.IRON_AXE, Material.GOLD_AXE, Material.DIAMOND_AXE},
|
|
||||||
new Action[] {Action.LEFT_CLICK_BLOCK, Action.RIGHT_CLICK_BLOCK}));
|
|
||||||
|
|
||||||
|
|
||||||
//GOLEM=========================================================================================
|
|
||||||
AddSkill(new GolemForm(this, "Magnetic Golem Form", ClassType.Shifter, SkillType.PassiveA, 0, 5));
|
|
||||||
|
|
||||||
AddSkill(new MagneticPull(this, "Magnetic Pull", ClassType.Shifter, SkillType.Sword,
|
|
||||||
0, 1,
|
|
||||||
0, 0,
|
|
||||||
0, 0, true,
|
|
||||||
new Material[] {Material.IRON_SWORD, Material.GOLD_SWORD, Material.DIAMOND_SWORD},
|
|
||||||
new Action[] {Action.RIGHT_CLICK_AIR, Action.RIGHT_CLICK_BLOCK}));
|
|
||||||
|
|
||||||
AddSkill(new MagneticRepel(this, "Magnetic Repel", ClassType.Shifter, SkillType.Axe,
|
|
||||||
0, 1,
|
|
||||||
60, 0,
|
|
||||||
30000, -3000, true,
|
|
||||||
new Material[] {Material.IRON_AXE, Material.GOLD_AXE, Material.DIAMOND_AXE},
|
|
||||||
new Action[] {Action.RIGHT_CLICK_AIR, Action.RIGHT_CLICK_BLOCK}));
|
|
||||||
|
|
||||||
|
|
||||||
//SPIDER=========================================================================================
|
|
||||||
AddSkill(new SpiderForm(this, "Spitting Spider Form", ClassType.Shifter, SkillType.PassiveA, 0, 5));
|
|
||||||
|
|
||||||
AddSkill(new Needler(this, "Needler", ClassType.Shifter, SkillType.Sword,
|
|
||||||
0, 1,
|
|
||||||
0, 0,
|
|
||||||
0, 0, true,
|
|
||||||
new Material[] {Material.IRON_SWORD, Material.GOLD_SWORD, Material.DIAMOND_SWORD},
|
|
||||||
new Action[] {Action.RIGHT_CLICK_AIR, Action.RIGHT_CLICK_BLOCK}));
|
|
||||||
|
|
||||||
AddSkill(new SpinWeb(this, "Spin Web", ClassType.Shifter, SkillType.Axe,
|
|
||||||
0, 1,
|
|
||||||
20, -1,
|
|
||||||
0, 0, true,
|
|
||||||
new Material[] {Material.IRON_AXE, Material.GOLD_AXE, Material.DIAMOND_AXE},
|
|
||||||
new Action[] {Action.RIGHT_CLICK_BLOCK}));
|
|
||||||
|
|
||||||
AddSkill(new Pounce(this, "Pounce", ClassType.Shifter, SkillType.PassiveB,
|
|
||||||
0, 1,
|
|
||||||
20, 0,
|
|
||||||
6000, 0, true,
|
|
||||||
new Material[] {Material.IRON_SWORD, Material.GOLD_SWORD, Material.DIAMOND_SWORD, Material.IRON_AXE, Material.GOLD_AXE, Material.DIAMOND_AXE},
|
|
||||||
new Action[] {Action.LEFT_CLICK_AIR, Action.LEFT_CLICK_BLOCK}));
|
|
||||||
}
|
|
||||||
|
|
||||||
public ISkill GetSkillBySalesPackageId(int id)
|
public ISkill GetSkillBySalesPackageId(int id)
|
||||||
{
|
{
|
||||||
return _skillSalesPackageMap.get(id);
|
return _skillSalesPackageMap.get(id);
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
<orderEntry type="module" module-name="Mineplex.Core" />
|
<orderEntry type="module" module-name="Mineplex.Core" />
|
||||||
<orderEntry type="module" module-name="Mineplex.Core.Common" />
|
<orderEntry type="module" module-name="Mineplex.Core.Common" />
|
||||||
<orderEntry type="module" module-name="Mineplex.Minecraft.Game.ClassCombat" />
|
|
||||||
<orderEntry type="module" module-name="Mineplex.Minecraft.Game.Core" />
|
<orderEntry type="module" module-name="Mineplex.Minecraft.Game.Core" />
|
||||||
|
<orderEntry type="module" module-name="Mineplex.Minecraft.Game.ClassCombat" />
|
||||||
<orderEntry type="module" module-name="Nautilus.Core.CraftBukkit" />
|
<orderEntry type="module" module-name="Nautilus.Core.CraftBukkit" />
|
||||||
<orderEntry type="library" name="craftbukkit" level="project" />
|
<orderEntry type="library" name="craftbukkit" level="project" />
|
||||||
</component>
|
</component>
|
||||||
|
|
Loading…
Reference in New Issue