Removed broken and obsolete shifter code

Set up more intellij stuff
This commit is contained in:
CoderTim 2014-05-25 19:11:58 -04:00
parent aa6b5324eb
commit 3859a42f1d
29 changed files with 111 additions and 2826 deletions

1
.gitignore vendored
View File

@ -16,6 +16,5 @@ update
Reference
/Plugins/Test
/Plugins/.idea/workspace.xml
/Plugins/out

View File

@ -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>

View File

@ -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.

View File

@ -80,9 +80,9 @@ import mineplex.minecraft.game.core.condition.ConditionManager;
public class HubManager extends MiniClientPlugin<HubClient>
{
public String Mode = "Normal";
private BlockRestore _blockRestore;
private CoreClientManager _clientManager;
private CoreClientManager _clientManager;
private ConditionManager _conditionManager;
private DonationManager _donationManager;
private DisguiseManager _disguiseManager;
@ -98,30 +98,30 @@ public class HubManager extends MiniClientPlugin<HubClient>
private Location _spawn;
private int _scoreboardTick = 0;
private HashMap<Player, Scoreboard> _scoreboards = new HashMap<Player, Scoreboard>();
private String _pigStacker = "0 - Nobody";
private boolean _shuttingDown;
private HashMap<String, Long> _portalTime = new HashMap<String, Long>();
private int _slot = 7;
private HashSet<Player> _disabled = new HashSet<Player>();
//Admin
private boolean _gadgetsEnabled = true;
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);
_blockRestore = blockRestore;
_clientManager = clientManager;
_conditionManager = conditionManager;
_donationManager = donationManager;
_donationManager = donationManager;
_disguiseManager = disguiseManager;
_portal = portal;
@ -135,26 +135,26 @@ public class HubManager extends MiniClientPlugin<HubClient>
new WorldManager(this);
new JumpManager(this);
new NewsManager(this);
_mountManager = new MountManager(this);
_gadgetManager = new GadgetManager(this, _mountManager);
_partyManager = partyManager;
_tutorialManager = new TutorialManager(this, donationManager, taskManager, _textCreator);
_visibilityManager = new VisibilityManager(this);
_statsManager = new StatsManager(plugin);
((CraftWorld)Bukkit.getWorlds().get(0)).getHandle().pvpMode = true;
}
@Override
public void AddCommands()
public void AddCommands()
{
AddCommand(new GadgetToggle(this));
AddCommand(new ForcefieldToggle(this));
}
@EventHandler(priority = EventPriority.HIGHEST)
public void reflectMotd(ServerListPingEvent event)
{
@ -167,54 +167,54 @@ public class HubManager extends MiniClientPlugin<HubClient>
@EventHandler
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"));
}
@EventHandler
public void BumpQuit(PlayerQuitEvent event)
{
_disabled.remove(event.getPlayer());
}
public boolean BumpDisabled(Entity ent)
{
if (ent == null)
return false;
return _disabled.contains(ent);
}
@EventHandler
public void BumpToggle(PlayerInteractEvent event)
{
if (event.getAction() == Action.PHYSICAL)
return;
Player player = event.getPlayer();
if (player.getInventory().getHeldItemSlot() != _slot)
return;
event.setCancelled(true);
if (_disabled.remove(player))
{
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"));
}
else
{
_disabled.add(player);
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"));
}
}
@EventHandler
public void orderThatItem(final PlayerDropItemEvent event)
{
@ -234,20 +234,20 @@ public class HubManager extends MiniClientPlugin<HubClient>
});
}
}
@EventHandler
public void redirectStopCommand(PlayerCommandPreprocessEvent event)
{
if (event.getPlayer().isOp() && event.getMessage().equalsIgnoreCase("/stop"))
{
_shuttingDown = true;
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(_plugin, new Runnable()
{
public void run()
{
_portal.SendAllPlayers("Lobby");
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(_plugin, new Runnable()
{
public void run()
@ -257,11 +257,11 @@ public class HubManager extends MiniClientPlugin<HubClient>
}, 40L);
}
}, 60L);
event.setCancelled(true);
}
}
@EventHandler
public void preventEggSpawn(ItemSpawnEvent event)
{
@ -302,12 +302,12 @@ public class HubManager extends MiniClientPlugin<HubClient>
}
}
}
@EventHandler(priority = EventPriority.LOW)
public void login(final PlayerLoginEvent event)
{
CoreClient client = _clientManager.Get(event.getPlayer().getName());
// Reserved Slot Check
if (Bukkit.getOnlinePlayers().length >= Bukkit.getServer().getMaxPlayers())
{
@ -332,31 +332,31 @@ public class HubManager extends MiniClientPlugin<HubClient>
try
{
final Player player = event.getPlayer();
//Survival
player.setGameMode(GameMode.SURVIVAL);
//Public Message
event.setJoinMessage(null);
//Teleport
player.teleport(GetSpawn());
//Allow Double Jump
player.setAllowFlight(true);
UtilInv.Clear(player);
//Scoreboard
Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
player.setScoreboard(board);
_scoreboards.put(player, board);
//Objective
Objective obj = board.registerNewObjective(C.Bold + "Player Data", "dummy");
obj.setDisplaySlot(DisplaySlot.SIDEBAR);
for (Rank rank : Rank.values())
{
if (rank != Rank.ALL)
@ -364,32 +364,32 @@ public class HubManager extends MiniClientPlugin<HubClient>
else
board.registerNewTeam(rank.Name).setPrefix("");
}
for (Player otherPlayer : Bukkit.getOnlinePlayers())
{
if (_clientManager.Get(otherPlayer) == null)
continue;
String rankName = _clientManager.Get(player).GetRank().Name;
String otherRankName = _clientManager.Get(otherPlayer).GetRank().Name;
if (!_clientManager.Get(player).GetRank().Has(Rank.ULTRA) && _donationManager.Get(player.getName()).OwnsUltraPackage())
{
rankName = Rank.ULTRA.Name;
}
if (!_clientManager.Get(otherPlayer).GetRank().Has(Rank.ULTRA) && _donationManager.Get(otherPlayer.getName()).OwnsUltraPackage())
{
otherRankName = Rank.ULTRA.Name;
}
//Add Other to Self
board.getTeam(otherRankName).addPlayer(otherPlayer);
//Add Self to Other
otherPlayer.getScoreboard().getTeam(rankName).addPlayer(player);
}
}
catch (Exception ex)
{
@ -451,9 +451,9 @@ public class HubManager extends MiniClientPlugin<HubClient>
for (Player player : UtilServer.getPlayers())
player.getScoreboard().resetScores(event.getPlayer().getName());
_scoreboards.remove(event.getPlayer());
_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.setFormat(C.cDPurple + C.Bold + "Party " + C.cWhite + C.Bold + "%1$s " + C.cPurple + "%2$s");
for (String name : party.GetPlayers())
{
Player other = UtilPlayer.searchExact(name);
if (other != null)
event.getRecipients().add(other);
event.getRecipients().add(other);
}
}
else
@ -501,7 +501,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
UtilPlayer.message(player, F.main("Party", "You are not in a Party."));
event.setCancelled(true);
}
return;
}
else
@ -513,7 +513,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
event.getRecipients().remove(other);
continue;
}
event.setMessage(event.getMessage());
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().teleport(GetSpawn());
}
else
event.getEntity().remove();
@ -607,11 +607,11 @@ public class HubManager extends MiniClientPlugin<HubClient>
//Dont Waste Time
if (_partyManager.GetParty(player) != null)
continue;
//Return to Main Scoreboard
if (!player.getScoreboard().equals(_scoreboards.get(player)))
player.setScoreboard(_scoreboards.get(player));
//Objective
Objective obj = player.getScoreboard().getObjective(DisplaySlot.SIDEBAR);
@ -705,11 +705,11 @@ public class HubManager extends MiniClientPlugin<HubClient>
}
@Override
protected HubClient AddPlayer(String player)
{
protected HubClient AddPlayer(String player)
{
return new HubClient(player);
}
public BlockRestore GetBlockRestore()
{
return _blockRestore;
@ -719,7 +719,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
{
return _clientManager;
}
public ConditionManager GetCondition()
{
return _conditionManager;
@ -729,22 +729,22 @@ public class HubManager extends MiniClientPlugin<HubClient>
{
return _donationManager;
}
public DisguiseManager GetDisguise()
{
return _disguiseManager;
}
public GadgetManager GetGadget()
{
return _gadgetManager;
}
public MountManager GetMount()
{
return _mountManager;
}
public ParkourManager GetParkour()
{
return _parkour;
@ -755,17 +755,17 @@ public class HubManager extends MiniClientPlugin<HubClient>
return _spawn.clone();
}
public TutorialManager GetTutorial()
public TutorialManager GetTutorial()
{
return _tutorialManager;
}
public StatsManager GetStats()
{
return _statsManager;
}
public VisibilityManager GetVisibility()
public VisibilityManager GetVisibility()
{
return _visibilityManager;
}
@ -788,61 +788,61 @@ public class HubManager extends MiniClientPlugin<HubClient>
return UtilTime.elapsed(_portalTime.get(player.getName()), 5000);
}
public boolean CanBump(LivingEntity ent)
{
if (!(ent instanceof Player))
return true;
if (BumpDisabled(ent))
return false;
if (GetVisibility().IsHiding(ent))
return false;
return true;
}
@EventHandler
public void HeartDisplay(UpdateEvent event)
{
if (event.getType() != UpdateType.FASTER)
return;
for (Player player : UtilServer.getPlayers())
{
if (!player.isOp())
continue;
for (Player other : UtilServer.getPlayers())
{
if (player.getName().equalsIgnoreCase("Chiss"))
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"))
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_"))
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_"))
UtilParticle.PlayParticle(other, ParticleType.WITCH_MAGIC, player.getLocation().add(0, 1, 0), 0.25f, 0.5f, 0.25f, 0, 2);
}
}
}
@EventHandler
public void SkillTrigger(SkillTriggerEvent event)
{
event.SetCancelled(true);
}
@EventHandler
public void ItemTrigger(ItemTriggerEvent event)
{
event.SetCancelled(true);
}
public boolean IsGadgetEnabled()
{
return _gadgetsEnabled;
@ -857,30 +857,30 @@ public class HubManager extends MiniClientPlugin<HubClient>
{
if (_forcefield.add(caller))
return true;
_forcefield.remove(caller);
return false;
}
@EventHandler
public void ForcefieldUpdate(UpdateEvent event)
{
if (event.getType() != UpdateType.FAST)
return;
for (Player player : _forcefield)
{
for (Player other : UtilServer.getPlayers())
{
if (player.equals(other))
continue;
if (UtilMath.offset(other, player) > 5)
continue;
if (GetClients().Get(other).GetRank().Has(Rank.ADMIN))
continue;
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);

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}
}

View File

@ -1,5 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Creeper;
public class CreeperForm {
}

View File

@ -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);
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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)
{
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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)
{
}
}

View File

@ -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);
}
}
}

View File

@ -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)
{
}
}

View File

@ -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)
{
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}

View File

@ -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)
{
}
}

View File

@ -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)
{
}
}

View File

@ -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.Void;
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.token.SkillToken;
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));
}
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)
{
return _skillSalesPackageMap.get(id);

View File

@ -9,8 +9,8 @@
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="Mineplex.Core" />
<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.ClassCombat" />
<orderEntry type="module" module-name="Nautilus.Core.CraftBukkit" />
<orderEntry type="library" name="craftbukkit" level="project" />
</component>