diff --git a/Plugins/BuildFiles/common.xml b/Plugins/BuildFiles/common.xml
index 0ffeabe1d..6fc68b0f8 100644
--- a/Plugins/BuildFiles/common.xml
+++ b/Plugins/BuildFiles/common.xml
@@ -93,31 +93,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilInv.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilInv.java
index 3d43f9a97..ea5a1a447 100644
--- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilInv.java
+++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilInv.java
@@ -246,6 +246,23 @@ public class UtilInv
event.setCancelled(true);
}
}
+
+ public static void refreshDurability(Player player, Material type)
+ {
+ for (ItemStack item : player.getInventory().getContents())
+ if (item != null)
+ if (item.getType() == type)
+ {
+ if (item.getDurability() == 0)
+ {
+ item.setDurability((short) 1);
+ }
+ else
+ {
+ item.setDurability((short) 0);
+ }
+ }
+ }
}
diff --git a/Plugins/Nautilus.Core.CraftBukkit/src/net/minecraft/server/v1_6_R3/AsyncLoginThread.java b/Plugins/Nautilus.Core.CraftBukkit/src/net/minecraft/server/v1_6_R3/AsyncLoginThread.java
index 1bb2253d0..a24ab54d9 100644
--- a/Plugins/Nautilus.Core.CraftBukkit/src/net/minecraft/server/v1_6_R3/AsyncLoginThread.java
+++ b/Plugins/Nautilus.Core.CraftBukkit/src/net/minecraft/server/v1_6_R3/AsyncLoginThread.java
@@ -21,7 +21,7 @@ public class AsyncLoginThread extends Thread
// CraftBukkit end
this.pendingConnection = pendingconnection;
}
-
+
public void run()
{
try
diff --git a/Plugins/Nautilus.Game.Arcade/.externalToolBuilders/Arcade Builder.launch b/Plugins/Nautilus.Game.Arcade/.externalToolBuilders/Arcade Builder.launch
index 0d48570d7..423d992d2 100644
--- a/Plugins/Nautilus.Game.Arcade/.externalToolBuilders/Arcade Builder.launch
+++ b/Plugins/Nautilus.Game.Arcade/.externalToolBuilders/Arcade Builder.launch
@@ -14,5 +14,5 @@
-
+
diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/events/PlayerGameRespawnEvent.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/events/PlayerGameRespawnEvent.java
new file mode 100644
index 000000000..943c3cab8
--- /dev/null
+++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/events/PlayerGameRespawnEvent.java
@@ -0,0 +1,40 @@
+package nautilus.game.arcade.events;
+
+import nautilus.game.arcade.game.Game;
+
+import org.bukkit.entity.Player;
+import org.bukkit.event.Event;
+import org.bukkit.event.HandlerList;
+
+public class PlayerGameRespawnEvent extends Event
+{
+ private static final HandlerList handlers = new HandlerList();
+ private Game _game;
+ private Player _player;
+
+ public PlayerGameRespawnEvent(Game game, Player player)
+ {
+ _game = game;
+ _player = player;
+ }
+
+ public HandlerList getHandlers()
+ {
+ return handlers;
+ }
+
+ public static HandlerList getHandlerList()
+ {
+ return handlers;
+ }
+
+ public Game GetGame()
+ {
+ return _game;
+ }
+
+ public Player GetPlayer()
+ {
+ return _player;
+ }
+}
diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java
index 4e735d939..c7b1302a8 100644
--- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java
+++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java
@@ -20,6 +20,7 @@ import nautilus.game.arcade.ArcadeFormat;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
+import nautilus.game.arcade.events.PlayerGameRespawnEvent;
import nautilus.game.arcade.events.PlayerStateChangeEvent;
import nautilus.game.arcade.game.GameTeam.PlayerState;
import nautilus.game.arcade.kit.Kit;
@@ -98,7 +99,7 @@ public abstract class Game implements Listener
//Loaded from Map Config
public WorldData WorldData = null;
-
+
//Game Help
private long _helpTimer = 0;
private int _helpIndex = 0;
@@ -160,21 +161,21 @@ public abstract class Game implements Listener
public boolean RepairWeapons = true;
public boolean Autobalance = true;
-
+
public boolean AnnounceStay = true;
public boolean AnnounceJoinQuit = true;
public boolean AnnounceSilence = true;
public boolean DisplayLobbySide = true;
-
+
public boolean AutoStart = true;
-
+
public GameState KitRegisterState = GameState.Live;
//Addons
public boolean CompassEnabled = false;
public boolean SoupEnabled = true;
-
+
public double GemMultiplier = 1;
//Gameplay Data
@@ -205,7 +206,7 @@ public abstract class Game implements Listener
_sideObjective = _scoreboard.registerNewObjective("Obj"+UtilMath.r(999999999), "dummy");
_sideObjective.setDisplaySlot(DisplaySlot.SIDEBAR);
_sideObjective.setDisplayName(C.Bold + GetName());
-
+
//Map
_files = Manager.LoadFiles(GetName());
WorldData = new WorldData(this);
@@ -558,7 +559,7 @@ public abstract class Game implements Listener
{
_playerKit.get(player).Deselected(player);
}
-
+
_playerKit.put(player, kit);
kit.Selected(player);
@@ -567,7 +568,7 @@ public abstract class Game implements Listener
player.playSound(player.getLocation(), Sound.ORB_PICKUP, 2f, 1f);
UtilPlayer.message(player, F.main("Kit", "You equipped " + F.elem(kit.GetFormattedName() + " Kit") + "."));
}
-
+
if (InProgress())
kit.ApplyKit(player);
}
@@ -595,7 +596,7 @@ public abstract class Game implements Listener
{
if (!IsAlive(player))
return false;
-
+
if (GetKit(player) == null)
return false;
@@ -629,6 +630,10 @@ public abstract class Game implements Listener
Manager.Clear(player);
+ //Event
+ PlayerGameRespawnEvent event = new PlayerGameRespawnEvent(this, player);
+ UtilServer.getServer().getPluginManager().callEvent(event);
+
//Re-Give Kit
Manager.GetPlugin().getServer().getScheduler().scheduleSyncDelayedTask(Manager.GetPlugin(), new Runnable()
{
@@ -672,7 +677,7 @@ public abstract class Game implements Listener
return null;
}
-
+
public GameTeam GetTeam(Player player)
{
for (GameTeam team : _teamList)
@@ -966,7 +971,7 @@ public abstract class Game implements Listener
UtilPlayer.message(player, message);
}
-
+
System.out.println("[Announcement] " + message);
}
@@ -985,7 +990,7 @@ public abstract class Game implements Listener
{
if (_help == null || _help.length == 0)
return;
-
+
if (event.getType() != UpdateType.SEC)
return;
@@ -994,7 +999,7 @@ public abstract class Game implements Listener
if (!UtilTime.elapsed(_helpTimer, 8000))
return;
-
+
if (_helpColor == ChatColor.YELLOW)
_helpColor = ChatColor.GREEN;
else
@@ -1003,14 +1008,14 @@ public abstract class Game implements Listener
_helpTimer = System.currentTimeMillis();
String msg = C.cWhite + C.Bold + "TIP " + ChatColor.RESET + _helpColor + _help[_helpIndex];
-
+
for (Player player : UtilServer.getPlayers())
{
player.playSound(player.getLocation(), Sound.CHICKEN_EGG_POP, 1f, 1f);
UtilPlayer.message(player, msg);
}
-
+
_helpIndex = (_helpIndex + 1)%_help.length;
}
}
diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/Moba.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/Moba.java
new file mode 100644
index 000000000..59f55652b
--- /dev/null
+++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/Moba.java
@@ -0,0 +1,41 @@
+package nautilus.game.arcade.game.games.moba;
+
+import java.util.ArrayList;
+
+import nautilus.game.arcade.ArcadeManager;
+import nautilus.game.arcade.GameType;
+import nautilus.game.arcade.game.TeamGame;
+import nautilus.game.arcade.game.games.sheep.kits.*;
+import nautilus.game.arcade.kit.Kit;
+import nautilus.game.arcade.kit.NullKit;
+
+public class Moba extends TeamGame
+{
+ private ArrayList _lastScoreboard = new ArrayList();
+
+ public Moba(ArcadeManager manager)
+ {
+ super(manager, GameType.Sheep,
+
+ new Kit[]
+ {
+ new NullKit(manager)
+ },
+
+ new String[]
+ {
+ "..."
+ });
+
+ this.DeathOut = false;
+ this.DeathSpectateSecs = 8;
+
+ this.HungerSet = 20;
+ }
+
+ @Override
+ public void ParseData()
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/SheepData.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/SheepData.java
index dfd996b3f..abaeb21dc 100644
--- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/SheepData.java
+++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/SheepData.java
@@ -2,9 +2,11 @@ package nautilus.game.arcade.game.games.sheep;
import java.util.ArrayList;
+import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilAlg;
+import mineplex.core.common.util.UtilDisplay;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilFirework;
import mineplex.core.common.util.UtilMath;
@@ -104,6 +106,7 @@ public class SheepData
Host.AddGems(Holder, 3, "Sheep Captured", true);
UtilPlayer.message(Holder, F.main("Game", "You captured a Sheep!"));
+ UtilDisplay.displayTextBar(Host.Manager.GetPlugin(), Holder, 0f, C.cGreen + C.Bold + "You captured a Sheep!");
}
Holder = null;
diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/SheepGame.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/SheepGame.java
index e14167468..710e89b42 100644
--- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/SheepGame.java
+++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/SheepGame.java
@@ -2,6 +2,7 @@ package nautilus.game.arcade.game.games.sheep;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import org.bukkit.Bukkit;
@@ -15,39 +16,55 @@ import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.FireworkEffect.Type;
import org.bukkit.block.Block;
+import org.bukkit.entity.Chicken;
import org.bukkit.entity.Entity;
+import org.bukkit.entity.Giant;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Sheep;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
+import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.entity.PlayerLeashEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.inventory.InventoryClickEvent;
+import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
+import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.util.Vector;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
+import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilDisplay;
import mineplex.core.common.util.UtilEnt;
+import mineplex.core.common.util.UtilEvent;
+import mineplex.core.common.util.UtilGear;
+import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilFirework;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilTime;
import mineplex.core.common.util.UtilTime.TimeUnit;
+import mineplex.core.itemstack.ItemStackFactory;
+import mineplex.core.projectile.IThrown;
+import mineplex.core.projectile.ProjectileUser;
+import mineplex.core.recharge.Recharge;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
+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.events.PlayerGameRespawnEvent;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.TeamGame;
import nautilus.game.arcade.game.games.sheep.kits.*;
import nautilus.game.arcade.kit.Kit;
+import net.minecraft.server.v1_6_R3.Item;
public class SheepGame extends TeamGame
{
@@ -72,7 +89,8 @@ public class SheepGame extends TeamGame
new Kit[]
{
new KitBeserker(manager),
- new KitArcher(manager)
+ new KitArcher(manager),
+ new KitBrute(manager)
},
new String[]
@@ -85,7 +103,7 @@ public class SheepGame extends TeamGame
this.DeathOut = false;
this.DeathSpectateSecs = 8;
-
+
this.HungerSet = 20;
}
@@ -168,7 +186,7 @@ public class SheepGame extends TeamGame
{
if (!IsLive())
return;
-
+
if (!(event.getRightClicked() instanceof Sheep))
return;
@@ -177,6 +195,9 @@ public class SheepGame extends TeamGame
Player player = event.getPlayer();
+ if (!Recharge.Instance.usable(player, "Sheep Stack"))
+ return;
+
if (player.getItemInHand() != null && player.getItemInHand().getType() != Material.SADDLE)
return;
@@ -185,6 +206,11 @@ public class SheepGame extends TeamGame
if (!IsAlive(event.getPlayer()))
return;
+
+ if (player.getPassenger() != null && player.getPassenger() instanceof Player)
+ {
+ DropSheep(player);
+ }
//Holding too many
int count = 0;
@@ -217,32 +243,101 @@ public class SheepGame extends TeamGame
//Effect
event.getRightClicked().getWorld().playEffect(event.getRightClicked().getLocation(), Effect.STEP_SOUND, 35);
-
+
//Stack
top.setPassenger(event.getRightClicked());
//Audio
player.playSound(player.getLocation(), Sound.SHEEP_IDLE, 2f, 3f);
}
-
+
@EventHandler
- public void Drop(PlayerDropItemEvent event)
+ public void StackPlayer(PlayerInteractEntityEvent event)
+ {
+ if (!IsLive())
+ return;
+
+ if (!(event.getRightClicked() instanceof Player))
+ return;
+
+ if (event.getRightClicked().getVehicle() != null)
+ return;
+
+ Player player = event.getPlayer();
+ Player other = (Player)event.getRightClicked();
+
+ if (!(GetKit(player) instanceof KitBrute))
+ return;
+
+ if (!GetTeam(player).HasPlayer(other))
+ return;
+
+ if (player.getPassenger() != null)
+ DropSheep(player);
+
+ if (!Recharge.Instance.usable(player, "Sheep Stack"))
+ return;
+
+ if (player.getItemInHand() != null && player.getItemInHand().getType() != Material.SADDLE)
+ return;
+
+ if (event.getPlayer().getGameMode() != GameMode.SURVIVAL)
+ return;
+
+ if (!IsAlive(event.getPlayer()))
+ return;
+
+ //Effect
+ event.getRightClicked().getWorld().playEffect(event.getRightClicked().getLocation(), Effect.STEP_SOUND, 35);
+
+ //Stack
+ player.setPassenger(other);
+
+ //Audio
+ player.playSound(player.getLocation(), Sound.VILLAGER_YES, 2f, 3f);
+ other.playSound(player.getLocation(), Sound.VILLAGER_NO, 2f, 3f);
+
+ //Inform
+ UtilPlayer.message(other, F.main("Skill", F.elem(GetTeam(player).GetColor() + player.getName()) + " picked you up."));
+ UtilPlayer.message(player, F.main("Skill", "You picked up " + F.elem(GetTeam(player).GetColor() + player.getName()) + "."));
+ }
+
+ @EventHandler
+ public void DeathDrop(PlayerDeathEvent event)
+ {
+ DropSheep(event.getEntity());
+ }
+
+ public void DropSheep(Player player)
{
boolean hadSheep = false;
-
- Entity top = event.getPlayer();
+
+ Entity top = player;
while (top.getVehicle() != null)
{
top = top.getVehicle();
top.eject();
-
+
hadSheep = true;
}
-
+
if (hadSheep)
- UtilDisplay.displayTextBar(Manager.GetPlugin(), event.getPlayer(), 0f, C.cWhite + C.Bold + "You dropped your Sheep!");
-
- event.getPlayer().setExp(0f);
+ UtilDisplay.displayTextBar(Manager.GetPlugin(), player, 0f, C.cRed + C.Bold + "You dropped your Sheep!");
+
+ player.setExp(0f);
+
+ player.getInventory().remove(Material.WOOL);
+
+ Manager.GetCondition().EndCondition(player, ConditionType.SLOW, null);
+
+ //Audio
+ player.playSound(player.getLocation(), Sound.SHEEP_IDLE, 2f, 1f);
+ }
+
+ @EventHandler
+ public void Drop(PlayerDropItemEvent event)
+ {
+ DropSheep(event.getPlayer());
}
@EventHandler
@@ -282,14 +377,14 @@ public class SheepGame extends TeamGame
top = top.getPassenger();
count++;
}
-
+
player.setExp(0.33f * (float)count);
if (count == 0)
continue;
Manager.GetCondition().Factory().Slow("Sheep Slow", player, player, 3, count-1, false, false, false, true);
-
+
UtilDisplay.displayTextBar(Manager.GetPlugin(), player, (float)count/3f, C.Bold + "Return the Sheep to your Team Pen!");
}
}
@@ -299,7 +394,7 @@ public class SheepGame extends TeamGame
{
if (event.IsCancelled())
return;
-
+
if (event.GetDamageeEntity().getVehicle() == null)
return;
@@ -314,44 +409,42 @@ public class SheepGame extends TeamGame
event.GetCause(), event.GetDamageInitial(), true, false, false,
UtilEnt.getName(event.GetDamagerEntity(true)), event.GetReason());
}
-
+
+ @EventHandler(priority = EventPriority.LOWEST)
+ public void DamageSuffocate(CustomDamageEvent event)
+ {
+ if (event.GetCause() == DamageCause.SUFFOCATION)
+ event.SetCancelled("Sheep Game");
+ }
+
@EventHandler(priority = EventPriority.MONITOR)
public void DamageUnstack(CustomDamageEvent event)
{
if (event.IsCancelled())
return;
-
+
if (event.GetCause() != DamageCause.ENTITY_ATTACK && event.GetCause() != DamageCause.PROJECTILE && event.GetCause() != DamageCause.CUSTOM)
return;
-
+
Player player = event.GetDamageePlayer();
if (player == null) return;
-
- boolean hadSheep = false;
- Entity rider = player.getPassenger();
- while (rider != null)
- {
- rider.leaveVehicle();
- rider.setVelocity(new Vector(0.25 - Math.random()/2, Math.random()/2, 0.25 - Math.random()/2));
- rider = rider.getPassenger();
-
- hadSheep = true;
- }
-
- if (hadSheep)
- UtilDisplay.displayTextBar(Manager.GetPlugin(), player, 0f, C.cRed + C.Bold + "You dropped your Sheep!");
-
- player.setExp(0f);
+ DropSheep(player);
}
-
+
@EventHandler
public void InventoryClick(InventoryClickEvent event)
{
event.setCancelled(true);
event.getWhoClicked().closeInventory();
}
-
+
+ @EventHandler
+ public void RespawnInvul(PlayerGameRespawnEvent event)
+ {
+ Manager.GetCondition().Factory().Regen("Respawn", event.GetPlayer(), event.GetPlayer(), 5, 3, false, false, true);
+ }
+
@EventHandler
public void ScoreboardTimer(UpdateEvent event)
{
@@ -544,4 +637,29 @@ public class SheepGame extends TeamGame
}
}
}
+ /*
+ @EventHandler
+ public void Giant(PlayerCommandPreprocessEvent event)
+ {
+ if (event.getMessage().contains("/giant"))
+ {
+ Giant giant = event.getPlayer().getWorld().spawn(event.getPlayer().getLocation(), Giant.class);
+
+ Entity top = giant;
+ for (int i=0 ; i < 10 ; i++)
+ {
+ Entity buffer = event.getPlayer().getWorld().spawn(event.getPlayer().getLocation(), Chicken.class);
+ top.setPassenger(buffer);
+ top = buffer;
+ }
+
+ top.setPassenger(event.getPlayer());
+ }
+ }
+
+ @EventHandler
+ public void Invul(CustomDamageEvent event)
+ {
+ event.SetCancelled("True");
+ }*/
}
diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitArcher.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitArcher.java
index 4fc4a535c..f9ef09a84 100644
--- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitArcher.java
+++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitArcher.java
@@ -5,10 +5,15 @@ import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.LeatherArmorMeta;
+import mineplex.core.common.util.UtilGear;
+import mineplex.core.common.util.UtilInv;
import mineplex.core.itemstack.ItemStackFactory;
+import mineplex.core.updater.UpdateType;
+import mineplex.core.updater.event.UpdateEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability;
@@ -75,4 +80,13 @@ public class KitArcher extends Kit
ent.getEquipment().setLeggings(new ItemStack(Material.LEATHER_LEGGINGS));
ent.getEquipment().setBoots(new ItemStack(Material.LEATHER_BOOTS));
}
+
+ @EventHandler
+ public void RefreshInventory(UpdateEvent event)
+ {
+ if (event.getType() == UpdateType.SLOW)
+ for (Player player : Manager.GetGame().GetPlayers(true))
+ if (this.HasKit(player))
+ UtilInv.refreshDurability(player, Material.WOOD_SWORD);
+ }
}
diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitBrute.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitBrute.java
index a73fcef13..7d4ee343c 100644
--- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitBrute.java
+++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitBrute.java
@@ -7,6 +7,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.LeatherArmorMeta;
+import mineplex.core.common.util.C;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.Kit;
@@ -22,21 +23,23 @@ public class KitBrute extends Kit
new String[]
{
- "Can throw sheep at enemies!"
+ "Can throw sheep at enemies!",
+ "",
+ C.cYellow + "Right-Click" + C.cGray + " with Sword to " + C.cGreen + "Throw Sheep"
},
new Perk[]
{
- new PerkLeap("Beserker Leap", 1.2, 1.2, 8000)
+ new PerkThrower(manager)
},
EntityType.ZOMBIE,
- new ItemStack(Material.IRON_AXE));
+ new ItemStack(Material.IRON_SWORD));
}
@Override
public void GiveItems(Player player)
{
- player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_AXE));
+ player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_SWORD));
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.SADDLE));
ItemStack helm = new ItemStack(Material.LEATHER_HELMET);
diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkInfernalHorror.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkInfernalHorror.java
index b184c801a..669fde20f 100644
--- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkInfernalHorror.java
+++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkInfernalHorror.java
@@ -55,6 +55,9 @@ public class PerkInfernalHorror extends Perk
if (event.GetCause() == DamageCause.FIRE_TICK)
return;
+
+ if (event.GetCause() == DamageCause.VOID)
+ return;
Player damager = event.GetDamagerPlayer(true);
if (damager == null) return;
diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkThrower.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkThrower.java
new file mode 100644
index 000000000..cb68bd30a
--- /dev/null
+++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkThrower.java
@@ -0,0 +1,132 @@
+package nautilus.game.arcade.kit.perks;
+
+import java.util.HashSet;
+
+import org.bukkit.Material;
+import org.bukkit.Sound;
+import org.bukkit.block.Block;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
+import org.bukkit.event.player.PlayerInteractEvent;
+import org.bukkit.util.Vector;
+
+import mineplex.core.common.util.C;
+import mineplex.core.common.util.UtilAction;
+import mineplex.core.common.util.UtilAlg;
+import mineplex.core.common.util.UtilEnt;
+import mineplex.core.common.util.UtilEvent;
+import mineplex.core.common.util.UtilGear;
+import mineplex.core.common.util.UtilEvent.ActionType;
+import mineplex.core.projectile.IThrown;
+import mineplex.core.projectile.ProjectileUser;
+import mineplex.core.recharge.Recharge;
+import nautilus.game.arcade.ArcadeManager;
+import nautilus.game.arcade.kit.Perk;
+
+public class PerkThrower extends Perk implements IThrown
+{
+ public PerkThrower(ArcadeManager manager)
+ {
+ super("Thrower", new String[]
+ {
+ C.cGray + "You can pick up team mates!",
+ C.cYellow + "Right-Click" + C.cGray + " with Sword to " + C.cGreen + "Throw Sheep",
+ });
+ }
+
+ @EventHandler
+ public void Throw(PlayerInteractEvent event)
+ {
+ if (!UtilEvent.isAction(event, ActionType.R))
+ return;
+
+ Player thrower = event.getPlayer();
+
+ if (!UtilGear.isMat(thrower.getItemInHand(), Material.IRON_SWORD))
+ return;
+
+ if (thrower.getPassenger() == null)
+ return;
+
+ Entity throwee = thrower.getPassenger();
+ if (throwee == null)
+ return;
+
+ thrower.eject();
+
+ Entity throweeStack = throwee.getPassenger();
+ if (throweeStack != null)
+ {
+ throwee.eject();
+ throweeStack.leaveVehicle();
+
+ final Entity fThrower = thrower;
+ final Entity fThroweeStack = throweeStack;
+
+ Manager.GetPlugin().getServer().getScheduler().scheduleSyncDelayedTask(Manager.GetPlugin(), new Runnable()
+ {
+ public void run()
+ {
+ fThrower.setPassenger(fThroweeStack);
+ }
+ }, 2);
+ }
+
+ //Throw
+ UtilAction.velocity(throwee, thrower.getLocation().getDirection(), 1.4, false, 0, 0.3, 0.8, true);
+ Manager.GetProjectile().AddThrow(throwee, thrower, this, -1, true, false, true, false, 2d);
+
+ //Audio
+ thrower.getWorld().playSound(thrower.getLocation(), Sound.SHEEP_IDLE, 2f, 3f);
+
+ //Disallow stacking for 0.5s
+ Recharge.Instance.useForce(thrower, "Sheep Stack", 500);
+ }
+
+ @Override
+ public void Collide(LivingEntity target, Block block, ProjectileUser data)
+ {
+ if (target == null)
+ return;
+
+ if (target instanceof Player)
+ {
+ if (!Manager.GetGame().IsAlive((Player)target))
+ {
+ return;
+ }
+ }
+
+ //Damage Event
+ Manager.GetDamage().NewDamageEvent(target, data.GetThrower(), null,
+ DamageCause.CUSTOM, 6, false, true, false,
+ UtilEnt.getName(data.GetThrower()), GetName());
+
+ //Bounce
+ Vector dir = UtilAlg.getTrajectory(data.GetThrown(), target);
+ if (dir.getY() < 0) dir.setY(0);
+ UtilAction.velocity(target, dir, 1.2, false, 0, 0.4, 1, true);
+
+ dir = UtilAlg.getTrajectory(target, data.GetThrown());
+ if (dir.getY() < 0) dir.setY(0);
+ UtilAction.velocity(data.GetThrown(), dir, 1.2, false, 0, 0.4, 1, true);
+
+ //Effect
+ data.GetThrown().getWorld().playSound(data.GetThrown().getLocation(), Sound.SHEEP_IDLE, 3f, 5f);
+ }
+
+ @Override
+ public void Idle(ProjectileUser data)
+ {
+
+ }
+
+ @Override
+ public void Expire(ProjectileUser data)
+ {
+
+ }
+}
diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameFlagManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameFlagManager.java
index 1b2bd8bdc..1ceebdd61 100644
--- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameFlagManager.java
+++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameFlagManager.java
@@ -555,7 +555,7 @@ public class GameFlagManager implements Listener
}
}
- //RESPAW
+ //RESPAWN
if (game.DeathSpectateSecs <= 0)
{
//Teleport
@@ -577,6 +577,7 @@ public class GameFlagManager implements Listener
}
}, 0);
}
+ //TIMER
else
{
UtilInv.Clear(player);
@@ -585,6 +586,13 @@ public class GameFlagManager implements Listener
player.setGameMode(GameMode.CREATIVE);
player.setFlying(true);
+ for (int i=0 ; i<9 ; i++)
+ player.getInventory().setItem(i, new ItemStack(Material.SKULL));
+
+ UtilAction.velocity(player, new Vector(0,0,0), 1, true, 0.4, 0, 1, true);
+
+ UtilPlayer.message(player, C.cWhite + C.Bold + "You will respawn in " + game.DeathSpectateSecs + " seconds...");
+
Manager.GetPlugin().getServer().getScheduler().scheduleSyncDelayedTask(Manager.GetPlugin(), new Runnable()
{
public void run()