Merge branch 'master' of ssh://dev.mineplex.com:7999/min/Mineplex

This commit is contained in:
Jonathan Williams 2013-11-02 00:59:39 -07:00
commit a468ac1ae0
17 changed files with 533 additions and 191 deletions

View File

@ -295,7 +295,11 @@ public class AntiHack extends MiniPlugin
private void ResetAll(Player player)
{
_ignore.remove(player);
_velocityEvent.remove(player);
_lastMoveEvent.remove(player);
_offense.remove(player);
_suspicion.remove(player);
for (Detector detector : _detectors)
detector.Reset(player);

View File

@ -68,12 +68,13 @@ public class Hub extends JavaPlugin implements INautilusPlugin, IRelation
CommandCenter.Initialize(this, clientManager);
ItemStackFactory.Initialize(this, false);
Recharge.Initialize(this);
AntiHack.Initialize(this);
Punish punish = new Punish(this, GetWebServerAddress());
AntiHack.Initialize(this, punish);
DonationManager donationManager = new DonationManager(this, GetWebServerAddress());
//Other Modules
new Punish(this, GetWebServerAddress());
Creature creature = new Creature(this);
new MessageManager(this, clientManager);
NpcManager npcManager = new NpcManager(this, creature);

View File

@ -31,6 +31,7 @@ public class NewsManager extends MiniPlugin
_news = new String[]
{
"New Game: " + C.cGold + C.Bold + "Super Paintball" + ChatColor.RESET + "!",
"New Game: " + C.cGold + C.Bold + "Halloween Horror" + ChatColor.RESET + "! Limited time!",
"New Super Smash Mobs Kit: " + C.cYellow + C.Bold + "Witch" + ChatColor.RESET + "!",
"Halloween Hub Items! Limited time to unlock!",

View File

@ -202,7 +202,7 @@ public class ConditionManager extends MiniPlugin
ind.SetCondition(newCon);
}
@EventHandler
@EventHandler(priority = EventPriority.HIGHEST)
public void ExpireConditions(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)

View File

@ -130,13 +130,15 @@ public class ArcadeManager extends MiniPlugin implements IRelation
_firework = new FireworkHandler();
_fire = new Fire(plugin, conditionManager, damageManager);
_projectileManager = new ProjectileManager(plugin);
_projectileManager = new ProjectileManager(plugin);
/*
_skillFactory = new SkillFactory(plugin, damageManager, this, new CombatManager(plugin), conditionManager, _projectileManager, _blockRestore, _fire, new Movement(plugin), plugin.GetTeleport(), new Energy(plugin), webAddress);
_classManager = new ClassManager(plugin, clientManager, donationManager, _skillFactory, webAddress);
_classShopManager = new ClassShopManager(_plugin, _classManager, _skillFactory, new ItemPackFactory(_plugin));
_classCustomBuildShop = new ClassCombatCustomBuildShop(_classShopManager, clientManager, donationManager, webAddress);
*/
_portal = new Portal(plugin);
@ -472,7 +474,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
((CraftPlayer)player).getHandle().spectating = false;
((CraftPlayer)player).getHandle().m = true;
GetCondition().EndCondition(player, ConditionType.CLOAK, "Spectator");
GetCondition().EndCondition(player, ConditionType.CLOAK, null);
HubClock(player);

View File

@ -366,7 +366,8 @@ public abstract class Game implements Listener
}
else
{
_scoreboard.registerNewTeam(rank.Name + "SPEC").setPrefix(rank.Color + C.Bold + rank.Name.toUpperCase() + ChatColor.RESET + " " + ChatColor.GRAY);
_scoreboard.registerNewTeam(rank.Name + "SPEC").setPrefix(ChatColor.GRAY + "");
//_scoreboard.registerNewTeam(rank.Name + "SPEC").setPrefix(rank.Color + C.Bold + rank.Name.toUpperCase() + ChatColor.RESET + " " + ChatColor.GRAY);
}
}
@ -381,7 +382,8 @@ public abstract class Game implements Listener
}
else
{
_scoreboard.registerNewTeam(rank.Name + team.GetName().toUpperCase()).setPrefix(rank.Color + C.Bold + rank.Name.toUpperCase() + ChatColor.RESET + " " + team.GetColor());
//_scoreboard.registerNewTeam(rank.Name + team.GetName().toUpperCase()).setPrefix(rank.Color + C.Bold + rank.Name.toUpperCase() + ChatColor.RESET + " " + team.GetColor());
_scoreboard.registerNewTeam(rank.Name + team.GetName().toUpperCase()).setPrefix(team.GetColor() + "");
}
}
}
@ -580,6 +582,9 @@ public abstract class Game implements Listener
public boolean HasKit(Player player, Kit kit)
{
if (!IsAlive(player))
return false;
if (GetKit(player) == null)
return false;

View File

@ -121,10 +121,6 @@ public class Halloween extends SoloGame
_mobs.clear();
_spawns.clear();
_spawns = null;
_mobs = null;
_waves = null;
}
@EventHandler(priority = EventPriority.MONITOR)

View File

@ -178,7 +178,7 @@ public class PumpkinKing extends CreatureBase<Skeleton>
if (event.getType() == UpdateType.TICK)
MinionOrbit();
if (event.getType() == UpdateType.TICK)
if (event.getType() == UpdateType.FASTER)
MinionAttack();
if (event.getType() == UpdateType.TICK)

View File

@ -1,82 +1,440 @@
package nautilus.game.arcade.game.games.paintball;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.Effect;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.craftbukkit.v1_6_R3.entity.CraftPlayer;
import org.bukkit.entity.EnderPearl;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.entity.Snowball;
import org.bukkit.entity.ThrownPotion;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.EntityRegainHealthEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import org.bukkit.util.Vector;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.recharge.Recharge;
import mineplex.minecraft.game.core.condition.Condition.ConditionType;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.TeamGame;
import nautilus.game.arcade.game.GameTeam.PlayerState;
import nautilus.game.arcade.game.games.paintball.kits.*;
import nautilus.game.arcade.kit.Kit;
public class Paintball extends TeamGame
{
private HashMap<Player, PlayerCopy> _doubles = new HashMap<Player, PlayerCopy>();
private HashSet<Projectile> _water = new HashSet<Projectile>();
public Paintball(ArcadeManager manager)
{
super(manager, GameType.Paintball,
new Kit[]
{
new KitRifle(manager),
new KitMachineGun(manager),
new KitShotgun(manager)
new KitRifle(manager),
new KitMachineGun(manager),
new KitShotgun(manager),
},
new String[]
{
"put put put put put"
"Shoot enemies to paint them",
"Revive/heal with Water Bombs",
"Last team alive wins!"
});
}
@EventHandler
public void CustomTeamGeneration(GameStateChangeEvent event)
{
if (event.GetState() != GameState.Recruit)
return;
this.GetTeamList().get(0).SetColor(ChatColor.AQUA);
this.GetTeamList().get(0).SetName("Frost");
this.GetTeamList().get(1).SetColor(ChatColor.RED);
this.GetTeamList().get(1).SetName("Nether");
}
@EventHandler(priority = EventPriority.HIGH)
public void ColorArmor(GameStateChangeEvent event)
{
if (event.GetState() != GameState.Prepare)
return;
for (Player player : GetPlayers(true))
{
CleanColorArmor(player);
}
}
@EventHandler(priority = EventPriority.HIGH)
public void RefreshPlayers(GameStateChangeEvent event)
{
if (event.GetState() != GameState.Live)
return;
for (Player player : GetPlayers(true))
{
for (Player other : GetPlayers(true))
{
other.hidePlayer(player);
other.showPlayer(player);
}
}
}
@EventHandler
public void HealthRegen(EntityRegainHealthEvent event)
{
if (event.getRegainReason() == RegainReason.SATIATED)
event.setCancelled(true);
}
@EventHandler
public void Teleport(PlayerTeleportEvent event)
{
if (event.getCause() == TeleportCause.ENDER_PEARL)
event.setCancelled(true);
}
@EventHandler
public void Paint(ProjectileHitEvent event)
{
if (event.getEntity() instanceof ThrownPotion)
return;
byte color = 3;
if (event.getEntity() instanceof EnderPearl)
color = 6;
color = 14;
Location loc = event.getEntity().getLocation().add(event.getEntity().getVelocity());
for (Block block : UtilBlock.getInRadius(loc, 1.5d).keySet())
{
if (block.getType() != Material.WOOL && block.getType() != Material.STAINED_CLAY)
continue;
block.setData(color);
}
if (color == 3) loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 8);
else loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 10);
}
@EventHandler
public void PlayerQuit(PlayerQuitEvent event)
{
_doubles.remove(event.getPlayer());
}
@EventHandler
public void DamageCancel(CustomDamageEvent event)
{
if (event.GetDamageePlayer() == null)
event.SetCancelled("Not Player");
if (event.GetProjectile() == null)
event.SetCancelled("No Projectile");
}
@EventHandler
public void PaintballDamage(CustomDamageEvent event)
{
if (event.GetProjectile() == null)
return;
if (!(event.GetProjectile() instanceof Snowball) && !(event.GetProjectile() instanceof EnderPearl))
return;
//Negate
event.AddMod("Negate", "Negate", -event.GetDamageInitial(), false);
event.AddMod("Paintball", "Paintball", 2, true);
event.AddKnockback("Paintball", 2);
Player damagee = event.GetDamageePlayer();
if (damagee == null) return;
Player damager = event.GetDamagerPlayer(true);
if (damager == null) return;
GameTeam damageeTeam = GetTeam(damagee);
if (damageeTeam == null) return;
GameTeam damagerTeam = GetTeam(damager);
if (damagerTeam == null) return;
if (damagerTeam.equals(damageeTeam))
return;
//Color
Color color = Color.RED;
if (event.GetProjectile() instanceof Snowball)
color = Color.AQUA;
//Count
int count = 1;
if (GetKit(damager) != null)
{
if (GetKit(damager) instanceof KitRifle)
{
count = 3;
}
}
//Out
if (Color(damagee, count))
{
PlayerOut(damagee);
for (Player player : UtilServer.getPlayers())
UtilPlayer.message(player, damageeTeam.GetColor() + damagee.getName() + ChatColor.RESET + " was painted by " +
damagerTeam.GetColor() + damager.getName() + ChatColor.RESET + "!");
AddGems(damager, 2, "Kill", true);
}
//Hit Sound
Player player = event.GetDamagerPlayer(true);
if (player != null)
player.playSound(player.getLocation(), Sound.ORB_PICKUP, 1f, 3f);
}
public boolean Color(Player player, int amount)
{
//Get Non-Coloured
ArrayList<ItemStack> nonColored = new ArrayList<ItemStack>();
for (ItemStack stack : player.getInventory().getArmorContents())
{
if (!(stack.getItemMeta() instanceof LeatherArmorMeta))
continue;
LeatherArmorMeta meta = (LeatherArmorMeta)stack.getItemMeta();
if (meta.getColor().equals(Color.RED) || meta.getColor().equals(Color.AQUA))
nonColored.add(stack);
}
//Color Piece
for (int i=0 ; i<amount ; i++)
{
if (nonColored.isEmpty())
break;
ItemStack armor = nonColored.remove(UtilMath.r(nonColored.size()));
LeatherArmorMeta meta = (LeatherArmorMeta)armor.getItemMeta();
meta.setColor(Color.PURPLE);
armor.setItemMeta(meta);
}
player.setHealth(Math.min(20, Math.max(2, nonColored.size() * 5 + 1)));
return nonColored.isEmpty();
}
public void PlayerOut(Player player)
{
//State
SetPlayerState(player, PlayerState.OUT);
player.setHealth(20);
//Conditions
Manager.GetCondition().Factory().Blind("Hit", player, player, 1.5, 0, false, false, false);
Manager.GetCondition().Factory().Cloak("Hit", player, player, 9999, false, false);
//Settings
player.setGameMode(GameMode.CREATIVE);
player.setFlying(true);
((CraftPlayer)player).getHandle().spectating = true;
((CraftPlayer)player).getHandle().m = false;
player.setVelocity(new Vector(0,1.2,0));
_doubles.put(player, new PlayerCopy(this, player));
}
@EventHandler
public void CleanThrow(PlayerInteractEvent event)
{
Player player = event.getPlayer();
if (!UtilGear.isMat(player.getItemInHand(), Material.POTION))
return;
if (!IsAlive(player))
return;
if (!Recharge.Instance.use(player, "Water Bomb", 500, false))
return;
//Use Stock
UtilInv.remove(player, Material.POTION, (byte)0, 1);
//Start
ThrownPotion potion = player.launchProjectile(ThrownPotion.class);
_water.add(potion);
//Inform
UtilPlayer.message(player, F.main("Skill", "You threw " + F.skill("Water Bomb") + "."));
}
@EventHandler
public void CleanHit(ProjectileHitEvent event)
{
if (!_water.remove(event.getEntity()))
return;
if (event.getEntity().getShooter() == null)
return;
if (!(event.getEntity().getShooter() instanceof Player))
return;
Player thrower = (Player)event.getEntity().getShooter();
GameTeam throwerTeam = GetTeam(thrower);
if (throwerTeam == null) return;
//Revive
Iterator<PlayerCopy> copyIterator = _doubles.values().iterator();
while (copyIterator.hasNext())
{
PlayerCopy copy = copyIterator.next();
GameTeam otherTeam = GetTeam(copy.GetPlayer());
if (otherTeam == null || !otherTeam.equals(throwerTeam))
continue;
if (UtilMath.offset(copy.GetEntity().getLocation().add(0,1,0), event.getEntity().getLocation()) > 3)
continue;
PlayerIn(copy.GetPlayer(), copy.GetEntity());
copyIterator.remove();
AddGems(thrower, 2, "Revived Ally", true);
}
//Clean
for (Player player : GetPlayers(true))
{
GameTeam otherTeam = GetTeam(player);
if (otherTeam == null || !otherTeam.equals(throwerTeam))
continue;
if (UtilMath.offset(player.getLocation().add(0,1,0), event.getEntity().getLocation()) > 3)
continue;
PlayerIn(player, null);
AddGems(thrower, 1, "Healed Ally", true);
}
}
public void PlayerIn(final Player player, final LivingEntity copy)
{
//State
SetPlayerState(player, PlayerState.IN);
player.setHealth(20);
//Teleport
if (copy != null)
{
Location loc = player.getLocation();
loc.setX(copy.getLocation().getX());
loc.setY(copy.getLocation().getY());
loc.setZ(copy.getLocation().getZ());
player.teleport(loc);
}
//Settings
player.setGameMode(GameMode.SURVIVAL);
player.setFlying(false);
((CraftPlayer)player).getHandle().spectating = false;
((CraftPlayer)player).getHandle().m = true;
//Items
player.getInventory().remove(Material.WATCH);
player.getInventory().remove(Material.COMPASS);
//Clean Armor
CleanColorArmor(player);
//Inform
UtilPlayer.message(player, F.main("Game", "You have been cleaned!"));
//Delayed Visibility
if (copy != null)
{
UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(Manager.GetPlugin(), new Runnable()
{
public void run()
{
//Remove Invis
if (IsAlive(player))
Manager.GetCondition().EndCondition(player, ConditionType.CLOAK, null);
//Remove Copy
copy.remove();
}
}, 4);
}
}
public void CleanColorArmor(Player player)
{
Color color = Color.RED;
if (Manager.GetColor(player) != ChatColor.RED)
color = Color.AQUA;
for (ItemStack stack : player.getInventory().getArmorContents())
{
if (!(stack.getItemMeta() instanceof LeatherArmorMeta))
continue;
LeatherArmorMeta meta = (LeatherArmorMeta)stack.getItemMeta();
meta.setColor(color);
stack.setItemMeta(meta);
}
}
}

View File

@ -0,0 +1,51 @@
package nautilus.game.arcade.game.games.paintball;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilEnt;
import org.bukkit.ChatColor;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Skeleton;
public class PlayerCopy
{
private Paintball Host;
private Skeleton _ent;
private Player _owner;
public PlayerCopy(Paintball host, Player owner)
{
Host = host;
_owner = owner;
Host.CreatureAllowOverride = true;
_ent = owner.getWorld().spawn(owner.getLocation(), Skeleton.class);
Host.CreatureAllowOverride = false;
UtilEnt.Vegetate(_ent);
//Armor
_ent.getEquipment().setArmorContents(owner.getInventory().getArmorContents());
_ent.setCustomName(C.cWhite + C.Bold + C.Scramble + "XX" + ChatColor.RESET + " " + host.GetTeam(owner).GetColor() + owner.getName() + " " + C.cWhite + C.Bold + C.Scramble + "XX");
_ent.setCustomNameVisible(true);
//Disguise
//DisguisePlayer disguise = new DisguisePlayer(_ent, owner.getName());
//Host.Manager.GetDisguise().disguise(disguise);
}
public LivingEntity GetEntity()
{
return _ent;
}
public Player GetPlayer()
{
return _owner;
}
}

View File

@ -7,7 +7,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import mineplex.core.common.util.F;
import mineplex.core.common.util.C;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.Kit;
@ -23,7 +23,8 @@ public class KitMachineGun extends Kit
new String[]
{
"Full-automatic paintball gun. " + F.elem("6 Damage")
"Full-automatic paintball gun.",
C.cGold + "4 Hit Kill"
},
new Perk[]
@ -37,7 +38,8 @@ public class KitMachineGun extends Kit
@Override
public void GiveItems(Player player)
{
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_BARDING));
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_BARDING, (byte)0, 1, "Paintball Machine Gun"));
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.POTION, (byte)0, 3, "Water Bomb"));
ItemStack helm = new ItemStack(Material.LEATHER_HELMET);
LeatherArmorMeta metaHelm = (LeatherArmorMeta)helm.getItemMeta();

View File

@ -7,7 +7,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import mineplex.core.common.util.F;
import mineplex.core.common.util.C;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.Kit;
@ -23,21 +23,24 @@ public class KitRifle extends Kit
new String[]
{
"Semi-automatic paintball rifle. " + F.elem("12 Damage")
"Semi-automatic paintball rifle.",
C.cGold + "2 Hit Kill"
},
new Perk[]
{
new PerkPaintballRifle()
new PerkPaintballRifle(),
new PerkSpeed(0)
},
EntityType.ZOMBIE,
new ItemStack(Material.IRON_BARDING));
}
}
@Override
public void GiveItems(Player player)
{
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_BARDING));
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_BARDING, (byte)0, 1, "Paintball Rifle"));
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.POTION, (byte)0, 3, "Water Bomb"));
ItemStack helm = new ItemStack(Material.LEATHER_HELMET);
LeatherArmorMeta metaHelm = (LeatherArmorMeta)helm.getItemMeta();

View File

@ -1,5 +1,6 @@
package nautilus.game.arcade.game.games.paintball.kits;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
@ -7,7 +8,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import mineplex.core.common.util.F;
import mineplex.core.common.util.C;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.Kit;
@ -23,13 +24,14 @@ public class KitShotgun extends Kit
new String[]
{
"Pump action paintball shotgun. " + F.elem("6 Damage per Pellet")
"Pump action paintball shotgun.",
C.cGold + "8 Pellets, 4 Pellet Hits Kill"
},
new Perk[]
{
new PerkPaintballShotgun(),
new PerkSpeed(0)
new PerkSpeed(1)
},
EntityType.ZOMBIE,
new ItemStack(Material.GOLD_BARDING));
@ -38,8 +40,9 @@ public class KitShotgun extends Kit
@Override
public void GiveItems(Player player)
{
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.GOLD_BARDING));
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.GOLD_BARDING, (byte)0, 1, "Paintball Shotgun"));
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.POTION, (byte)0, 3, "Water Bomb"));
ItemStack helm = new ItemStack(Material.LEATHER_HELMET);
LeatherArmorMeta metaHelm = (LeatherArmorMeta)helm.getItemMeta();
metaHelm.setColor(Color.WHITE);

View File

@ -1,9 +1,6 @@
package nautilus.game.arcade.kit.perks;
import java.util.HashSet;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.EnderPearl;
@ -13,29 +10,45 @@ import org.bukkit.entity.Snowball;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import org.bukkit.util.Vector;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilBlock;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import mineplex.core.common.util.UtilServer;
import mineplex.core.recharge.Recharge;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.kit.Perk;
public class PerkPaintballMachineGun extends Perk
{
private HashSet<Projectile> _balls = new HashSet<Projectile>();
public PerkPaintballMachineGun()
{
super("Rifle", new String[]
super("Machine Gun", new String[]
{
C.cYellow + "Right-Click" + C.cGray + " to use " + C.cGreen + "Machine Gun"
C.cYellow + "Right-Click" + C.cGray + " to use " + C.cGreen + "Machine Gun",
"Experience Bar represents weapon overheating."
});
}
@EventHandler
public void WeaponCooldown(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
for (Player player : UtilServer.getPlayers())
{
if (!Kit.HasKit(player))
continue;
if (Recharge.Instance.usable(player, "Cool"))
player.setExp((float)Math.max(0f, player.getExp() - 0.020f));
}
}
@EventHandler
public void Shoot(PlayerInteractEvent event)
{
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK)
@ -50,75 +63,66 @@ public class PerkPaintballMachineGun extends Perk
if (event.getPlayer().getItemInHand().getType() != Material.DIAMOND_BARDING)
return;
Player player = event.getPlayer();
final Player player = event.getPlayer();
if (!Kit.HasKit(player))
return;
GameTeam team = Manager.GetGame().GetTeam(player);
final GameTeam team = Manager.GetGame().GetTeam(player);
if (team == null)
return;
event.setCancelled(true);
ShootPaintball(player, team);
/*
UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(Manager.GetPlugin(), new Runnable()
{
public void run()
{
ShootPaintball(player, team);
}
}, 2);
*/
}
public void ShootPaintball(Player player, GameTeam team)
{
//Energy
if (player.getExp() >= 0.97)
return;
player.setExp((float) (player.getExp() + 0.025));
//Shoot
Vector rand = new Vector(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5);
rand.multiply(0.15);
rand.multiply(0.25);
if (team.GetColor() == ChatColor.AQUA)
{
//Projectile proj = player.getWorld().spawn(player.getEyeLocation().add(player.getLocation().getDirection()), Snowball.class);
//proj.setVelocity(player.getLocation().getDirection().multiply(1.6).add(rand));
//proj.setShooter(player);
Projectile proj = player.launchProjectile(Snowball.class);
proj.setVelocity(proj.getVelocity().multiply(1.6).add(rand));
_balls.add(proj);
//Sound
player.getWorld().playSound(player.getLocation(), Sound.CHICKEN_EGG_POP, 1.5f, 2f);
}
else
{
//Projectile proj = player.getWorld().spawn(player.getEyeLocation().add(player.getLocation().getDirection()), EnderPearl.class);
//proj.setVelocity(player.getLocation().getDirection().multiply(1.6).add(rand));
//proj.setShooter(player);
Projectile proj = player.launchProjectile(EnderPearl.class);
proj.setVelocity(proj.getVelocity().multiply(1.6).add(rand));
_balls.add(proj);
//Sound
player.getWorld().playSound(player.getLocation(), Sound.CHICKEN_EGG_POP, 1.5f, 1.75f);
}
//Slow
Manager.GetCondition().Factory().Slow("Firing", player, player, 0.9, 1, false, false, false, false);
Recharge.Instance.useForce(player, "Cool", 250);
}
@EventHandler
public void Damage(CustomDamageEvent event)
{
if (event.GetProjectile() == null)
return;
if (!_balls.contains(event.GetProjectile()))
return;
//Negate
event.AddMod("Negate", "Negate", -event.GetDamageInitial(), false);
event.AddMod("Paintball", "Machine Gun", 8, true);
if (event.GetDamageePlayer() == null)
return;
double r = Math.random();
ItemStack item = null;
if (r > 0.75) item= event.GetDamageePlayer().getInventory().getHelmet();
else if (r > 0.50) item= event.GetDamageePlayer().getInventory().getChestplate();
else if (r > 0.25) item= event.GetDamageePlayer().getInventory().getLeggings();
else item= event.GetDamageePlayer().getInventory().getBoots();
LeatherArmorMeta meta = (LeatherArmorMeta)item.getItemMeta();
//Color
if (event.GetProjectile() instanceof Snowball)
meta.setColor(Color.AQUA);
else
meta.setColor(Color.FUCHSIA);
item.setItemMeta(meta);
}
}
}

View File

@ -1,9 +1,6 @@
package nautilus.game.arcade.kit.perks;
import java.util.HashSet;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.EnderPearl;
@ -13,21 +10,15 @@ import org.bukkit.entity.Snowball;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import mineplex.core.common.Rank;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.recharge.*;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.kit.Perk;
public class PerkPaintballRifle extends Perk
{
private HashSet<Projectile> _balls = new HashSet<Projectile>();
public PerkPaintballRifle()
{
super("Rifle", new String[]
@ -69,7 +60,7 @@ public class PerkPaintballRifle extends Perk
if (team == null)
return;
if (!Recharge.Instance.use(player, GetName(), 400, true))
if (!Recharge.Instance.use(player, GetName(), 500, false))
return;
event.setCancelled(true);
@ -78,54 +69,17 @@ public class PerkPaintballRifle extends Perk
{
Projectile proj = player.launchProjectile(Snowball.class);
proj.setVelocity(proj.getVelocity().multiply(2));
_balls.add(proj);
//Sound
player.getWorld().playSound(player.getLocation(), Sound.CHICKEN_EGG_POP, 1.5f, 1.5f);
}
else
{
Projectile proj = player.launchProjectile(EnderPearl.class);
Projectile proj = player.launchProjectile(EnderPearl.class);
proj.setVelocity(proj.getVelocity().multiply(2));
_balls.add(proj);
//Sound
player.getWorld().playSound(player.getLocation(), Sound.CHICKEN_EGG_POP, 1.5f, 1.2f);
}
}
@EventHandler
public void Damage(CustomDamageEvent event)
{
if (event.GetProjectile() == null)
return;
if (!_balls.contains(event.GetProjectile()))
return;
//Negate
event.AddMod("Negate", "Negate", -event.GetDamageInitial(), false);
event.AddMod("Paintball", "Rifle", 16, true);
if (event.GetDamageePlayer() == null)
return;
double r = Math.random();
ItemStack item = null;
if (r > 0.75) item= event.GetDamageePlayer().getInventory().getHelmet();
else if (r > 0.50) item= event.GetDamageePlayer().getInventory().getChestplate();
else if (r > 0.25) item= event.GetDamageePlayer().getInventory().getLeggings();
else item= event.GetDamageePlayer().getInventory().getBoots();
LeatherArmorMeta meta = (LeatherArmorMeta)item.getItemMeta();
//Color
if (event.GetProjectile() instanceof Snowball)
meta.setColor(Color.AQUA);
else
meta.setColor(Color.FUCHSIA);
item.setItemMeta(meta);
}
}

View File

@ -1,9 +1,6 @@
package nautilus.game.arcade.kit.perks;
import java.util.HashSet;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.EnderPearl;
@ -13,22 +10,17 @@ import org.bukkit.entity.Snowball;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import org.bukkit.util.Vector;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.recharge.Recharge;
import mineplex.core.recharge.RechargedEvent;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.kit.Perk;
public class PerkPaintballShotgun extends Perk
{
private HashSet<Projectile> _balls = new HashSet<Projectile>();
public PerkPaintballShotgun()
{
super("Shotgun", new String[]
@ -73,19 +65,18 @@ public class PerkPaintballShotgun extends Perk
event.setCancelled(true);
if (!Recharge.Instance.use(player, GetName(), 1000, true))
if (!Recharge.Instance.use(player, GetName(), 1400, true))
return;
for (int i=0 ; i<6 ; i++)
for (int i=0 ; i<8 ; i++)
{
Vector rand = new Vector(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5);
rand.multiply(0.25);
rand.multiply(0.4);
if (team.GetColor() == ChatColor.AQUA)
{
Projectile proj = player.launchProjectile(Snowball.class);
proj.setVelocity(proj.getVelocity().multiply(1).add(rand));
_balls.add(proj);
//Sound
player.getWorld().playSound(player.getLocation(), Sound.CHICKEN_EGG_POP, 0.8f, 1f);
@ -94,46 +85,10 @@ public class PerkPaintballShotgun extends Perk
{
Projectile proj = player.launchProjectile(EnderPearl.class);
proj.setVelocity(proj.getVelocity().multiply(1).add(rand));
_balls.add(proj);
//Sound
player.getWorld().playSound(player.getLocation(), Sound.CHICKEN_EGG_POP, 0.8f, 0.75f);
}
}
}
@EventHandler
public void Damage(CustomDamageEvent event)
{
if (event.GetProjectile() == null)
return;
if (!_balls.contains(event.GetProjectile()))
return;
//Negate
event.AddMod("Negate", "Negate", -event.GetDamageInitial(), false);
event.AddMod("Paintball", "Shotgun", 8, true);
if (event.GetDamageePlayer() == null)
return;
double r = Math.random();
ItemStack item = null;
if (r > 0.75) item= event.GetDamageePlayer().getInventory().getHelmet();
else if (r > 0.50) item= event.GetDamageePlayer().getInventory().getChestplate();
else if (r > 0.25) item= event.GetDamageePlayer().getInventory().getLeggings();
else item= event.GetDamageePlayer().getInventory().getBoots();
LeatherArmorMeta meta = (LeatherArmorMeta)item.getItemMeta();
//Color
if (event.GetProjectile() instanceof Snowball)
meta.setColor(Color.AQUA);
else
meta.setColor(Color.FUCHSIA);
item.setItemMeta(meta);
}
}

View File

@ -97,6 +97,9 @@ public class GameGemManager implements Listener
if (event.GetState() != PlayerState.OUT)
return;
if (event.GetGame().GetType() == GameType.Paintball)
return;
RewardGems(event.GetGame(), event.GetPlayer(), false);
}