Merge branch 'master' of ssh://dev1.mineplex.com:7999/min/master
This commit is contained in:
commit
ae00d3df18
@ -23,6 +23,7 @@ import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.player.AsyncPlayerPreLoginEvent.Result;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
@ -191,6 +192,18 @@ public class Punish extends MiniPlugin
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void PunishChatEvent(PlayerCommandPreprocessEvent event)
|
||||
{
|
||||
PunishClient client = GetClient(event.getPlayer().getName());
|
||||
|
||||
if (client != null && client.IsMuted())
|
||||
{
|
||||
event.getPlayer().sendMessage(F.main(GetName(), "Shh, you're muted for " + C.cGreen + UtilTime.convertString(client.GetPunishment(PunishmentSentence.Mute).GetRemaining(), 1, TimeUnit.FIT) + "."));
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void Help(Player caller)
|
||||
{
|
||||
|
@ -42,10 +42,13 @@ public class TextCreator extends MiniPlugin
|
||||
|
||||
arcadeGames = new String[]
|
||||
{
|
||||
"A BARBARIANS LIFE",
|
||||
"ONE IN THE QUIVER",
|
||||
"ZOMBIE SURVIVAL",
|
||||
"DRAGON ESCAPE",
|
||||
"MILK THE COW",
|
||||
"SUPER SPLEEF",
|
||||
"TURF FORTS",
|
||||
"DEATH TAG",
|
||||
"DRAGONS",
|
||||
"RUNNER"
|
||||
};
|
||||
|
@ -20,8 +20,6 @@ import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
@ -435,22 +433,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void HubClockInteract(PlayerInteractEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (player.getItemInHand() == null)
|
||||
return;
|
||||
|
||||
if (player.getItemInHand().getType() != Material.WATCH)
|
||||
return;
|
||||
|
||||
if (_game != null && _game.IsAlive(player))
|
||||
return;
|
||||
|
||||
_portal.SendPlayerToServer(player, "Lobby");
|
||||
}
|
||||
|
||||
|
||||
public boolean IsAlive(Player player)
|
||||
{
|
||||
|
@ -48,7 +48,7 @@ public class GameFactory
|
||||
else if (gameType == GameType.SnowFight) return new SnowFight(_manager);
|
||||
else if (gameType == GameType.Smash) return new SuperSmash(_manager);
|
||||
else if (gameType == GameType.Spleef) return new Spleef(_manager);
|
||||
else if (gameType == GameType.TurfForts) return new TurfForts(_manager);
|
||||
else if (gameType == GameType.TurfWars) return new TurfForts(_manager);
|
||||
else if (gameType == GameType.UHC) return new UHC(_manager);
|
||||
else if (gameType == GameType.ZombieSurvival) return new ZombieSurvival(_manager);
|
||||
else return null;
|
||||
|
@ -11,6 +11,7 @@ public enum GameType
|
||||
Dragons("Dragons"),
|
||||
Evolution("Evolution"),
|
||||
Horse("Horseback"),
|
||||
HungerGames("Survival Games"),
|
||||
MineWare("MineWare"),
|
||||
MilkCow("Milk the Cow"),
|
||||
Quiver("One in the Quiver"),
|
||||
@ -18,7 +19,7 @@ public enum GameType
|
||||
Smash("Super Smash Mobs"),
|
||||
SnowFight("Snow Fight"),
|
||||
Spleef("Super Spleef"),
|
||||
TurfForts("Turf Forts"),
|
||||
TurfWars("Turf Wars"),
|
||||
UHC("Ultra Hardcore"),
|
||||
ZombieSurvival("Zombie Survival");
|
||||
|
||||
|
@ -162,6 +162,8 @@ public abstract class Game implements Listener
|
||||
//Addons
|
||||
public boolean CompassEnabled = false;
|
||||
public boolean SoupEnabled = true;
|
||||
|
||||
public double GemMultiplier = 1;
|
||||
|
||||
//Gameplay Data
|
||||
public HashMap<Location, Player> PrivateBlockMap = new HashMap<Location, Player>();
|
||||
|
@ -1,19 +1,17 @@
|
||||
package nautilus.game.arcade.game.games.barbarians;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.block.BlockDamageEvent;
|
||||
import org.bukkit.event.entity.ItemSpawnEvent;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
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.SoloGame;
|
||||
import nautilus.game.arcade.game.games.barbarians.kits.*;
|
||||
@ -21,9 +19,6 @@ import nautilus.game.arcade.kit.Kit;
|
||||
|
||||
public class Barbarians extends SoloGame
|
||||
{
|
||||
private GameTeam _barbs;
|
||||
private GameTeam _pigs;
|
||||
|
||||
public Barbarians(ArcadeManager manager)
|
||||
{
|
||||
super(manager, GameType.Barbarians,
|
||||
@ -33,18 +28,16 @@ public class Barbarians extends SoloGame
|
||||
new KitBrute(manager),
|
||||
new KitArcher(manager),
|
||||
new KitBomber(manager),
|
||||
new KitPig(manager)
|
||||
},
|
||||
|
||||
new String[]
|
||||
{
|
||||
"Free for all fight to the death!",
|
||||
"Wooden blocks are breakable.",
|
||||
"Attack people to restore hunger!",
|
||||
"Last player alive wins!"
|
||||
});
|
||||
|
||||
this.DeathOut = false;
|
||||
this.HungerSet = 20;
|
||||
|
||||
this.DamageTeamSelf = true;
|
||||
this.CompassEnabled = true;
|
||||
|
||||
@ -68,67 +61,16 @@ public class Barbarians extends SoloGame
|
||||
this.BlockBreakAllow.add(136);
|
||||
}
|
||||
|
||||
@Override
|
||||
@EventHandler
|
||||
public void CustomTeamGeneration(GameStateChangeEvent event)
|
||||
{
|
||||
if (event.GetState() != GameState.Recruit)
|
||||
return;
|
||||
|
||||
_barbs = this.GetTeamList().get(0);
|
||||
_barbs.SetName("Barbarians");
|
||||
|
||||
//Undead Team
|
||||
_pigs = new GameTeam("Dead", ChatColor.RED, _barbs.GetSpawns());
|
||||
GetTeamList().add(_pigs);
|
||||
_pigs.SetVisible(false);
|
||||
|
||||
RestrictKits();
|
||||
}
|
||||
|
||||
@Override
|
||||
public GameTeam ChooseTeam(Player player)
|
||||
{
|
||||
return _barbs;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void PlayerDeath(PlayerDeathEvent event)
|
||||
{
|
||||
if (_barbs.HasPlayer(event.getEntity()))
|
||||
SetChaser(event.getEntity());
|
||||
}
|
||||
|
||||
public void SetChaser(Player player)
|
||||
{
|
||||
if (!GetPlaces().contains(player))
|
||||
GetPlaces().add(0, player);
|
||||
|
||||
SetPlayerTeam(player, _pigs);
|
||||
|
||||
//Kit
|
||||
Kit newKit = GetKits()[3];
|
||||
|
||||
SetKit(player, newKit, false);
|
||||
newKit.ApplyKit(player);
|
||||
|
||||
//Refresh
|
||||
for (Player other : UtilServer.getPlayers())
|
||||
{
|
||||
other.hidePlayer(player);
|
||||
other.showPlayer(player);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void EndCheck()
|
||||
{
|
||||
if (!IsLive())
|
||||
return;
|
||||
|
||||
if (_barbs.GetPlayers(true).size() <= 1)
|
||||
if (GetPlayers(true).size() <= 1)
|
||||
{
|
||||
if (_barbs.GetPlayers(true).size() == 1)
|
||||
if (GetPlayers(true).size() == 1)
|
||||
GetPlaces().add(0, GetPlayers(true).get(0));
|
||||
|
||||
if (GetPlaces().size() >= 1)
|
||||
@ -149,26 +91,6 @@ public class Barbarians extends SoloGame
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@EventHandler
|
||||
public void ScoreboardUpdate(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.FAST)
|
||||
return;
|
||||
|
||||
if (_barbs == null || _pigs == null)
|
||||
return;
|
||||
|
||||
GetObjectiveSide().getScore(Bukkit.getOfflinePlayer(_barbs.GetColor() + _barbs.GetName())).setScore(_barbs.GetPlayers(true).size());
|
||||
GetObjectiveSide().getScore(Bukkit.getOfflinePlayer(_pigs.GetColor() + _pigs.GetName())).setScore(_pigs.GetPlayers(true).size());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean CanJoinTeam(GameTeam team)
|
||||
{
|
||||
return (team.GetColor() != ChatColor.RED);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void BlockDamage(BlockDamageEvent event)
|
||||
{
|
||||
@ -181,14 +103,33 @@ public class Barbarians extends SoloGame
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double GetKillsGems(Player killer, Player killed, boolean assist)
|
||||
@EventHandler
|
||||
public void Hunger(UpdateEvent event)
|
||||
{
|
||||
if (GetTeam(killed).equals(_barbs))
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
if (event.getType() != UpdateType.SLOW)
|
||||
return;
|
||||
|
||||
return 0;
|
||||
if (!IsLive())
|
||||
return;
|
||||
|
||||
for (Player player : GetPlayers(true))
|
||||
{
|
||||
if (player.getFoodLevel() <= 0)
|
||||
{
|
||||
Manager.GetDamage().NewDamageEvent(player, null, null,
|
||||
DamageCause.STARVATION, 1, false, true, false,
|
||||
"Starvation", GetName());
|
||||
}
|
||||
|
||||
UtilPlayer.hunger(player, -2);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void HungerRestore(CustomDamageEvent event)
|
||||
{
|
||||
Player damager = event.GetDamagerPlayer(true);
|
||||
if (damager != null)
|
||||
UtilPlayer.hunger(damager, 2);
|
||||
}
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ public class KitBomber extends Kit
|
||||
|
||||
new Perk[]
|
||||
{
|
||||
new PerkBomber(8, -1, 30),
|
||||
new PerkBomber(8, 2, -1),
|
||||
new PerkLeap("Leap", 1, 1, 8000)
|
||||
},
|
||||
EntityType.ZOMBIE,
|
||||
|
@ -1,44 +0,0 @@
|
||||
package nautilus.game.arcade.game.games.barbarians.kits;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.disguise.disguises.DisguisePig;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.kit.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.SmashKit;
|
||||
import nautilus.game.arcade.kit.perks.PerkDamageSet;
|
||||
|
||||
public class KitPig extends SmashKit
|
||||
{
|
||||
public KitPig(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Pig", KitAvailability.Hide,
|
||||
|
||||
new String[]
|
||||
{
|
||||
},
|
||||
|
||||
new Perk[]
|
||||
{
|
||||
new PerkDamageSet(0),
|
||||
},
|
||||
EntityType.PIG,
|
||||
new ItemStack(Material.PORK));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
//Disguise
|
||||
DisguisePig disguise = new DisguisePig(player);
|
||||
disguise.SetName(C.cGray + player.getName());
|
||||
disguise.SetCustomNameVisible(true);
|
||||
Manager.GetDisguise().disguise(disguise);
|
||||
}
|
||||
}
|
@ -136,6 +136,8 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||
this.CompassEnabled = true;
|
||||
|
||||
this.DeathDropItems = true;
|
||||
|
||||
this.GemMultiplier = 2.5;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
@ -176,6 +176,13 @@ public class DragonEscape extends SoloGame
|
||||
int preNode = (int)(score.Score/10000);
|
||||
int postNode = (int)(playerScore/10000);
|
||||
|
||||
//Shortcut
|
||||
if (preNode - postNode >= 3)
|
||||
{
|
||||
//Super Backtrack!
|
||||
continue;
|
||||
}
|
||||
|
||||
//Shortcut
|
||||
if (postNode - preNode >= 2)
|
||||
{
|
||||
|
@ -0,0 +1,56 @@
|
||||
package nautilus.game.arcade.game.games.hungergames;
|
||||
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.GameType;
|
||||
import nautilus.game.arcade.game.SoloGame;
|
||||
import nautilus.game.arcade.game.games.hungergames.kit.*;
|
||||
import nautilus.game.arcade.kit.Kit;
|
||||
|
||||
public class HungerGames extends SoloGame
|
||||
{
|
||||
public HungerGames(ArcadeManager manager)
|
||||
{
|
||||
super(manager, GameType.HungerGames,
|
||||
|
||||
new Kit[]
|
||||
{
|
||||
new KitBeserker(manager),
|
||||
new KitBomber(manager),
|
||||
},
|
||||
|
||||
new String[]
|
||||
{
|
||||
"Scavenge supplies to survive.",
|
||||
"Playable area shrinks over time!",
|
||||
"Last player alive wins!"
|
||||
});
|
||||
|
||||
this.DamageSelf = true;
|
||||
this.DamageTeamSelf = true;
|
||||
|
||||
this.BlockBreak = true;
|
||||
|
||||
this.CompassEnabled = true;
|
||||
|
||||
this.GemMultiplier = 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double GetKillsGems(Player killer, Player killed, boolean assist)
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void BlockBreak(BlockBreakEvent event)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
event.getBlock().setTypeId(0);
|
||||
event.getBlock().getWorld().playEffect(event.getBlock().getLocation(), Effect.STEP_SOUND, event.getBlock().getTypeId());
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package nautilus.game.arcade.game.games.hungergames.kit;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.kit.Kit;
|
||||
import nautilus.game.arcade.kit.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.perks.*;
|
||||
|
||||
public class KitArcher extends Kit
|
||||
{
|
||||
public KitArcher(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Archer", KitAvailability.Blue,
|
||||
|
||||
new String[]
|
||||
{
|
||||
"Highly trained with a bow, probably an elf or something..."
|
||||
},
|
||||
|
||||
new Perk[]
|
||||
{
|
||||
new PerkFletcher(20, 3, true),
|
||||
new PerkBarrage(5, 250, true),
|
||||
},
|
||||
EntityType.ZOMBIE,
|
||||
new ItemStack(Material.BOW));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.BOW));
|
||||
}
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package nautilus.game.arcade.game.games.hungergames.kit;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.kit.Kit;
|
||||
import nautilus.game.arcade.kit.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.perks.*;
|
||||
|
||||
public class KitAssassin extends Kit
|
||||
{
|
||||
public KitAssassin(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Assassin", KitAvailability.Green,
|
||||
|
||||
new String[]
|
||||
{
|
||||
|
||||
},
|
||||
|
||||
new Perk[]
|
||||
{
|
||||
new PerkNotFinished()
|
||||
},
|
||||
EntityType.ZOMBIE,
|
||||
new ItemStack(Material.IRON_SWORD));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package nautilus.game.arcade.game.games.hungergames.kit;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.kit.Kit;
|
||||
import nautilus.game.arcade.kit.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.perks.*;
|
||||
|
||||
public class KitBeserker extends Kit
|
||||
{
|
||||
public KitBeserker(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Beserker", KitAvailability.Free,
|
||||
|
||||
new String[]
|
||||
{
|
||||
"Agile warrior trained in the ways axe combat."
|
||||
},
|
||||
|
||||
new Perk[]
|
||||
{
|
||||
new PerkLeap("Beserker Leap", 1.2, 1.2, 8000),
|
||||
new PerkAxeman(),
|
||||
},
|
||||
EntityType.ZOMBIE,
|
||||
new ItemStack(Material.IRON_AXE));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package nautilus.game.arcade.game.games.hungergames.kit;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.kit.Kit;
|
||||
import nautilus.game.arcade.kit.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.perks.*;
|
||||
|
||||
public class KitBomber extends Kit
|
||||
{
|
||||
public KitBomber(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Bomber", KitAvailability.Blue,
|
||||
|
||||
new String[]
|
||||
{
|
||||
"Crazy bomb throwing guy."
|
||||
},
|
||||
|
||||
new Perk[]
|
||||
{
|
||||
new PerkBomber(30, 2, -1)
|
||||
},
|
||||
EntityType.ZOMBIE,
|
||||
new ItemStack(Material.TNT));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package nautilus.game.arcade.game.games.hungergames.kit;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.kit.Kit;
|
||||
import nautilus.game.arcade.kit.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.perks.*;
|
||||
|
||||
public class KitKnight extends Kit
|
||||
{
|
||||
public KitKnight(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Knight", KitAvailability.Green,
|
||||
|
||||
new String[]
|
||||
{
|
||||
|
||||
},
|
||||
|
||||
new Perk[]
|
||||
{
|
||||
new PerkNotFinished()
|
||||
},
|
||||
EntityType.ZOMBIE,
|
||||
new ItemStack(Material.IRON_SWORD));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package nautilus.game.arcade.game.games.hungergames.kit;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.kit.Kit;
|
||||
import nautilus.game.arcade.kit.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.perks.*;
|
||||
|
||||
public class KitMammoth extends Kit
|
||||
{
|
||||
public KitMammoth(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Brawler", KitAvailability.Green,
|
||||
|
||||
new String[]
|
||||
{
|
||||
"Giant and muscular, easily smacks others around."
|
||||
},
|
||||
|
||||
new Perk[]
|
||||
{
|
||||
new PerkMammoth(),
|
||||
new PerkIronSkin(1)
|
||||
},
|
||||
EntityType.ZOMBIE,
|
||||
new ItemStack(Material.IRON_SWORD));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -17,6 +17,7 @@ import org.bukkit.entity.Pig;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Villager;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.event.player.PlayerBucketFillEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||
import org.bukkit.event.player.PlayerItemConsumeEvent;
|
||||
@ -25,6 +26,7 @@ import org.bukkit.scoreboard.DisplaySlot;
|
||||
import org.bukkit.scoreboard.Objective;
|
||||
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilAlg;
|
||||
import mineplex.core.common.util.UtilGear;
|
||||
import mineplex.core.common.util.UtilInv;
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
@ -33,6 +35,7 @@ import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
|
||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.GameType;
|
||||
@ -74,14 +77,17 @@ public class MilkCow extends SoloGame
|
||||
|
||||
new String[]
|
||||
{
|
||||
"Each Farmer must gather milk.",
|
||||
"Drink 15 buckets of milk to win!",
|
||||
"Farmers get 1 point for drinking milk.",
|
||||
"You lose 5 points for dying!",
|
||||
"",
|
||||
"Cow must stop his herd from being milked.",
|
||||
"Kill all the farmers to win!"
|
||||
"Cows get 1 point for killing farmers.",
|
||||
"Defend your herd to stop farmers!",
|
||||
"",
|
||||
"First player to 15 points wins!"
|
||||
});
|
||||
|
||||
this.CompassEnabled = true;
|
||||
this.DeathOut = false;
|
||||
|
||||
_scoreObj = GetScoreboard().registerNewObjective("Milk", "dummy");
|
||||
_scoreObj.setDisplaySlot(DisplaySlot.BELOW_NAME);
|
||||
@ -218,11 +224,20 @@ public class MilkCow extends SoloGame
|
||||
|
||||
if (UtilMath.offset(cow, host) > 6)
|
||||
{
|
||||
nav.a(host.getLocation().getX(), host.getLocation().getY(),host.getLocation().getZ(), 1.6f);
|
||||
if (UtilMath.offset(cow, host) > 16)
|
||||
{
|
||||
Location target = cow.getLocation();
|
||||
|
||||
target.add(UtilAlg.getTrajectory(cow, host).multiply(16));
|
||||
|
||||
nav.a(target.getX(), target.getY(), target.getZ(), 1.8f);
|
||||
}
|
||||
else
|
||||
nav.a(host.getLocation().getX(), host.getLocation().getY(),host.getLocation().getZ(), 1.4f);
|
||||
}
|
||||
}
|
||||
|
||||
while (_herd.size() < 8)
|
||||
while (_herd.size() < 5)
|
||||
{
|
||||
this.CreatureAllowOverride = true;
|
||||
Cow cow = host.getWorld().spawn(host.getLocation(), Cow.class);
|
||||
@ -327,6 +342,28 @@ public class MilkCow extends SoloGame
|
||||
|
||||
this.AddGems(event.getPlayer(), 0.5, "Milk Drunk", true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void LoseMilk(PlayerDeathEvent event)
|
||||
{
|
||||
SetScore(event.getEntity(), Math.max(0, GetScore(event.getEntity()) - 5));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void KillFarmer(CombatDeathEvent event)
|
||||
{
|
||||
if (event.GetLog().GetKiller() == null)
|
||||
return;
|
||||
|
||||
if (!event.GetLog().GetKiller().IsPlayer())
|
||||
return;
|
||||
|
||||
Player player = UtilPlayer.searchExact(event.GetLog().GetKiller().GetName());
|
||||
if (player == null) return;
|
||||
|
||||
//Score
|
||||
SetScore(player, GetScore(player)+1);
|
||||
}
|
||||
|
||||
public void SetScore(Player player, double level)
|
||||
{
|
||||
@ -479,12 +516,12 @@ public class MilkCow extends SoloGame
|
||||
@Override
|
||||
public boolean CanJoinTeam(GameTeam team)
|
||||
{
|
||||
int cows = (int)(GetPlayers(true).size()/5);
|
||||
|
||||
if (team.GetColor() == ChatColor.RED)
|
||||
{
|
||||
return team.GetSize() == 0;
|
||||
}
|
||||
|
||||
return true;
|
||||
return team.GetSize() < cows;
|
||||
|
||||
return team.GetSize() < GetPlayers(true).size() - cows;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
@ -28,11 +28,11 @@ public class KitCow extends SmashKit
|
||||
|
||||
new Perk[]
|
||||
{
|
||||
new PerkDamageSet(5),
|
||||
new PerkDamageSet(4),
|
||||
new PerkKnockbackMultiplier(4),
|
||||
new PerkCharge(),
|
||||
new PerkCowBomb(),
|
||||
new PerkBodySlam(6, 5),
|
||||
new PerkSeismicCow(),
|
||||
},
|
||||
EntityType.COW,
|
||||
null);
|
||||
@ -42,7 +42,7 @@ public class KitCow extends SmashKit
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_SPADE, (byte)0, 1,
|
||||
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_AXE, (byte)0, 1,
|
||||
C.cYellow + C.Bold + "Right-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Cow Bomb",
|
||||
new String[]
|
||||
{
|
||||
@ -52,7 +52,7 @@ public class KitCow extends SmashKit
|
||||
}));
|
||||
|
||||
|
||||
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_AXE, (byte)0, 1,
|
||||
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_SPADE, (byte)0, 1,
|
||||
C.cYellow + C.Bold + "Right-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Body Slam",
|
||||
new String[]
|
||||
{
|
||||
|
@ -8,6 +8,7 @@ import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.block.BlockFadeEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.EntityDeathEvent;
|
||||
import org.bukkit.event.entity.EntityRegainHealthEvent;
|
||||
@ -59,6 +60,7 @@ public class SuperSmash extends SoloGame
|
||||
new KitKnight(manager),
|
||||
new KitSkySquid(manager),
|
||||
new KitWitherSkeleton(manager),
|
||||
//new KitWither(manager),
|
||||
|
||||
},
|
||||
|
||||
@ -305,4 +307,10 @@ public class SuperSmash extends SoloGame
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void BlockFade(BlockFadeEvent event)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,117 @@
|
||||
package nautilus.game.arcade.game.games.smash.kits;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Entity;
|
||||
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.UtilEnt;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
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.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.SmashKit;
|
||||
import nautilus.game.arcade.kit.perks.PerkDoubleJump;
|
||||
import nautilus.game.arcade.kit.perks.PerkSmashStats;
|
||||
import nautilus.game.arcade.kit.perks.PerkSkullShot;
|
||||
|
||||
public class KitWither extends SmashKit
|
||||
{
|
||||
public KitWither(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Wither", KitAvailability.Blue,
|
||||
|
||||
new String[]
|
||||
{
|
||||
},
|
||||
|
||||
new Perk[]
|
||||
{
|
||||
new PerkSmashStats(6, 1.2, 0.3, 6),
|
||||
new PerkDoubleJump("Double Jump", 0.9, 0.9, false),
|
||||
new PerkSkullShot(),
|
||||
},
|
||||
EntityType.ZOMBIE,
|
||||
new ItemStack(Material.BOW));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
|
||||
player.getInventory().addItem(new ItemStack(Material.ARROW));
|
||||
|
||||
ItemStack head = ItemStackFactory.Instance.CreateStack(Material.SKULL_ITEM, (byte)1, 1);
|
||||
player.getInventory().setHelmet(head);
|
||||
|
||||
ItemStack armor = new ItemStack(Material.LEATHER_CHESTPLATE);
|
||||
LeatherArmorMeta meta = (LeatherArmorMeta)armor.getItemMeta();
|
||||
meta.setColor(Color.BLACK);
|
||||
armor.setItemMeta(meta);
|
||||
player.getInventory().setChestplate(armor);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void InvisibilityUpdate(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.FAST)
|
||||
return;
|
||||
|
||||
for (Player player : UtilServer.getPlayers())
|
||||
{
|
||||
if (!HasKit(player))
|
||||
continue;
|
||||
|
||||
if (player.getInventory().getChestplate() == null)
|
||||
continue;
|
||||
|
||||
Manager.GetCondition().Factory().Invisible("Wither Invis", player, player, 1.9, 0, false, false, false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Entity SpawnEntity(Location loc)
|
||||
{
|
||||
EntityType type = _entityType;
|
||||
if (type == EntityType.PLAYER)
|
||||
type = EntityType.ZOMBIE;
|
||||
|
||||
LivingEntity entity = (LivingEntity) Manager.GetCreature().SpawnEntity(loc, type);
|
||||
|
||||
entity.setRemoveWhenFarAway(false);
|
||||
entity.setCustomName(GetAvailability().GetColor() + GetName() + " Kit" + (GetAvailability() == KitAvailability.Blue ? ChatColor.GRAY + " (" + ChatColor.WHITE + "Ultra" + ChatColor.GRAY + ")" : ""));
|
||||
entity.setCustomNameVisible(true);
|
||||
entity.getEquipment().setItemInHand(_itemInHand);
|
||||
|
||||
Manager.GetCondition().Factory().Invisible("Kit Invis", entity, entity, 7777, 0, false, false, false);
|
||||
|
||||
UtilEnt.Vegetate(entity);
|
||||
|
||||
SpawnCustom(entity);
|
||||
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void SpawnCustom(LivingEntity ent)
|
||||
{
|
||||
ItemStack head = ItemStackFactory.Instance.CreateStack(Material.SKULL_ITEM, (byte)1, 1);
|
||||
ent.getEquipment().setHelmet(head);
|
||||
|
||||
ItemStack armor = new ItemStack(Material.LEATHER_CHESTPLATE);
|
||||
LeatherArmorMeta meta = (LeatherArmorMeta)armor.getItemMeta();
|
||||
meta.setColor(Color.BLACK);
|
||||
armor.setItemMeta(meta);
|
||||
ent.getEquipment().setChestplate(armor);
|
||||
}
|
||||
}
|
@ -71,7 +71,7 @@ public class TurfForts extends TeamGame
|
||||
|
||||
public TurfForts(ArcadeManager manager)
|
||||
{
|
||||
super(manager, GameType.TurfForts,
|
||||
super(manager, GameType.TurfWars,
|
||||
|
||||
new Kit[]
|
||||
{
|
||||
@ -173,7 +173,8 @@ public class TurfForts extends TeamGame
|
||||
MapUtil.QuickChangeBlockAt(loc, 159, (byte)14);
|
||||
|
||||
for (int i=1 ; i<6 ; i++)
|
||||
MapUtil.QuickChangeBlockAt(loc.clone().add(0, i, 0), 0, (byte)0);
|
||||
if (loc.getBlock().getRelative(BlockFace.UP, i).getTypeId() == 35)
|
||||
MapUtil.QuickChangeBlockAt(loc.clone().add(0, i, 0), 0, (byte)0);
|
||||
}
|
||||
|
||||
|
||||
@ -184,7 +185,8 @@ public class TurfForts extends TeamGame
|
||||
MapUtil.QuickChangeBlockAt(loc, 159, (byte)14);
|
||||
|
||||
for (int i=1 ; i<6 ; i++)
|
||||
MapUtil.QuickChangeBlockAt(loc.clone().add(0, i, 0), 0, (byte)0);
|
||||
if (loc.getBlock().getRelative(BlockFace.UP, i).getTypeId() == 35)
|
||||
MapUtil.QuickChangeBlockAt(loc.clone().add(0, i, 0), 0, (byte)0);
|
||||
}
|
||||
|
||||
_red.subtract(xRed, 0, zRed);
|
||||
@ -199,7 +201,8 @@ public class TurfForts extends TeamGame
|
||||
MapUtil.QuickChangeBlockAt(loc, 159, (byte)3);
|
||||
|
||||
for (int i=1 ; i<6 ; i++)
|
||||
MapUtil.QuickChangeBlockAt(loc.clone().add(0, i, 0), 0, (byte)0);
|
||||
if (loc.getBlock().getRelative(BlockFace.UP, i).getTypeId() == 35)
|
||||
MapUtil.QuickChangeBlockAt(loc.clone().add(0, i, 0), 0, (byte)0);
|
||||
}
|
||||
|
||||
if (zRed != 0)
|
||||
@ -209,7 +212,8 @@ public class TurfForts extends TeamGame
|
||||
MapUtil.QuickChangeBlockAt(loc, 159, (byte)3);
|
||||
|
||||
for (int i=1 ; i<6 ; i++)
|
||||
MapUtil.QuickChangeBlockAt(loc.clone().add(0, i, 0), 0, (byte)0);
|
||||
if (loc.getBlock().getRelative(BlockFace.UP, i).getTypeId() == 35)
|
||||
MapUtil.QuickChangeBlockAt(loc.clone().add(0, i, 0), 0, (byte)0);
|
||||
}
|
||||
|
||||
_red.add(xRed, 0, zRed);
|
||||
@ -225,8 +229,8 @@ public class TurfForts extends TeamGame
|
||||
{
|
||||
if (!_fight)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
UtilPlayer.message(event.getEntity(), F.main("Game", "You cannot attack during Build Time!"));
|
||||
event.getProjectile().remove();
|
||||
}
|
||||
}
|
||||
|
||||
@ -243,13 +247,8 @@ public class TurfForts extends TeamGame
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getBlock().getLocation().getY() > _turf.get(0).getBlockY() + 5)
|
||||
{
|
||||
UtilPlayer.message(event.getPlayer(), F.main("Game", "You cannot build this high up."));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//On Own
|
||||
Block block = event.getBlock().getRelative(BlockFace.DOWN);
|
||||
while (block.getTypeId() == 0)
|
||||
block = block.getRelative(BlockFace.DOWN);
|
||||
@ -260,6 +259,24 @@ public class TurfForts extends TeamGame
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
//Height
|
||||
boolean aboveTurf = false;
|
||||
for (int i=1 ; i<=5 ; i++)
|
||||
{
|
||||
if (event.getBlock().getRelative(BlockFace.DOWN, i).getTypeId() != 159)
|
||||
continue;
|
||||
|
||||
aboveTurf = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!aboveTurf)
|
||||
{
|
||||
UtilPlayer.message(event.getPlayer(), F.main("Game", "You cannot build this high above Turf."));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@ -330,9 +347,16 @@ public class TurfForts extends TeamGame
|
||||
@EventHandler
|
||||
public void Damage(CustomDamageEvent event)
|
||||
{
|
||||
if (!_fight)
|
||||
if (event.GetCause() == DamageCause.FALL)
|
||||
{
|
||||
event.SetCancelled("No Fall");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_fight && (event.GetCause() == DamageCause.PROJECTILE || event.GetCause() == DamageCause.ENTITY_ATTACK))
|
||||
{
|
||||
event.SetCancelled("Build Time");
|
||||
return;
|
||||
}
|
||||
|
||||
Player damager = event.GetDamagerPlayer(true);
|
||||
@ -509,7 +533,7 @@ public class TurfForts extends TeamGame
|
||||
for (Player player : team.GetPlayers(true))
|
||||
{
|
||||
Block block = player.getLocation().getBlock().getRelative(BlockFace.DOWN);
|
||||
while (block.getTypeId() == 0 && block.getY() > 0)
|
||||
while (block.getTypeId() != 159 && block.getY() > 0)
|
||||
block = block.getRelative(BlockFace.DOWN);
|
||||
|
||||
if (block.getTypeId() == 0)
|
||||
@ -544,8 +568,6 @@ public class TurfForts extends TeamGame
|
||||
{
|
||||
UtilAction.velocity(player, UtilAlg.getTrajectory2d(player.getLocation(), team.GetSpawn()), 2, false, 0, 0.8, 1, true);
|
||||
|
||||
player.damage(10);
|
||||
|
||||
player.playSound(player.getLocation(), Sound.NOTE_BASS, 2f, 1f);
|
||||
UtilPlayer.message(player, F.main("Game", "You cannot walk on the enemies turf!"));
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ public class UHC extends TeamGame
|
||||
private NautHashMap<String, Long> _deathTime = new NautHashMap<String, Long>();
|
||||
|
||||
private NautHashMap<String, Long> _rejoinTime = new NautHashMap<String, Long>();
|
||||
|
||||
|
||||
private NautHashMap<Player, Long> _combatTime = new NautHashMap<Player, Long>();
|
||||
|
||||
private int _gameMinutes = 0;
|
||||
@ -133,7 +133,7 @@ public class UHC extends TeamGame
|
||||
this.IdleKick = false;
|
||||
|
||||
this.AutoStart = false;
|
||||
|
||||
|
||||
this.SoupEnabled = false;
|
||||
|
||||
CraftRecipes();
|
||||
@ -212,7 +212,7 @@ public class UHC extends TeamGame
|
||||
{
|
||||
if (event.GetState() != GameState.Prepare)
|
||||
return;
|
||||
|
||||
|
||||
//Disable Damage Manager
|
||||
Manager.GetDamage().SetEnabled(false);
|
||||
|
||||
@ -240,7 +240,26 @@ public class UHC extends TeamGame
|
||||
player.setExhaustion(0f);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void KillMobs(GameStateChangeEvent event)
|
||||
{
|
||||
if (event.GetState() != GameState.Live)
|
||||
return;
|
||||
|
||||
//Kill Mobs
|
||||
for (Entity ent : WorldData.World.getEntities())
|
||||
{
|
||||
if (!(ent instanceof LivingEntity))
|
||||
continue;
|
||||
|
||||
if (ent instanceof Player)
|
||||
continue;
|
||||
|
||||
ent.remove();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void WorldBoundaryCheck(PlayerMoveEvent event)
|
||||
{
|
||||
@ -538,7 +557,7 @@ public class UHC extends TeamGame
|
||||
team.RemovePlayer(player);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (player.isDead())
|
||||
return;
|
||||
|
||||
@ -554,10 +573,10 @@ public class UHC extends TeamGame
|
||||
|
||||
if (!team.IsAlive(player))
|
||||
{
|
||||
team.SetPlayerState(player, PlayerState.OUT);
|
||||
team.RemovePlayer(player);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
_rejoinTime.put(player.getName(), System.currentTimeMillis());
|
||||
GetLocationStore().put(player.getName(), player.getLocation());
|
||||
|
||||
@ -572,7 +591,7 @@ public class UHC extends TeamGame
|
||||
return;
|
||||
|
||||
LivingEntity damagerEnt = UtilEvent.GetDamagerEntity(event, true);
|
||||
|
||||
|
||||
//No PvP
|
||||
if (_gameMinutes < 20)
|
||||
{
|
||||
@ -582,7 +601,7 @@ public class UHC extends TeamGame
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Damager
|
||||
if (damagerEnt != null)
|
||||
{
|
||||
@ -608,7 +627,7 @@ public class UHC extends TeamGame
|
||||
if (event.getEntity() instanceof Player)
|
||||
{
|
||||
Player damagee = (Player)event.getEntity();
|
||||
|
||||
|
||||
if (!UtilTime.elapsed(GetStateTime(), 20000))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
@ -640,7 +659,7 @@ public class UHC extends TeamGame
|
||||
while (rejoinIterator.hasNext())
|
||||
{
|
||||
String name = rejoinIterator.next();
|
||||
|
||||
|
||||
if (!UtilTime.elapsed(_rejoinTime.get(name), 600000))
|
||||
continue;
|
||||
|
||||
@ -965,14 +984,14 @@ public class UHC extends TeamGame
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void RejoinCommand(PlayerCommandPreprocessEvent event)
|
||||
{
|
||||
if (event.getMessage().startsWith("/allowrejoin"))
|
||||
{
|
||||
String[] toks = event.getMessage().split(" ");
|
||||
|
||||
|
||||
if (toks.length <= 1)
|
||||
{
|
||||
event.getPlayer().sendMessage("Missing Param!");
|
||||
@ -982,7 +1001,7 @@ public class UHC extends TeamGame
|
||||
_rejoinTime.put(toks[1], System.currentTimeMillis());
|
||||
event.getPlayer().sendMessage("Allowed " + toks[1] + " to rejoin!");
|
||||
}
|
||||
|
||||
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
@ -992,7 +1011,7 @@ public class UHC extends TeamGame
|
||||
{
|
||||
if (event.isCancelled())
|
||||
return;
|
||||
|
||||
|
||||
//Damager
|
||||
LivingEntity damagerEnt = UtilEvent.GetDamagerEntity(event, true);
|
||||
if (damagerEnt != null)
|
||||
@ -1002,7 +1021,7 @@ public class UHC extends TeamGame
|
||||
Player damager = (Player)damagerEnt;
|
||||
|
||||
GameTeam team = GetTeam(damager);
|
||||
|
||||
|
||||
if (team != null && team.GetColor() == ChatColor.DARK_GRAY)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
@ -1017,7 +1036,7 @@ public class UHC extends TeamGame
|
||||
Player damagee = (Player)event.getEntity();
|
||||
|
||||
GameTeam team = GetTeam(damagee);
|
||||
|
||||
|
||||
if (team != null && team.GetColor() == ChatColor.DARK_GRAY)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
@ -1109,7 +1128,7 @@ public class UHC extends TeamGame
|
||||
String health = " - " + col;
|
||||
|
||||
int hp = (int)(player.getHealth() + 0.9999999999);
|
||||
|
||||
|
||||
if (hp % 2 == 0)
|
||||
health += (int)(hp/2);
|
||||
else
|
||||
@ -1121,7 +1140,7 @@ public class UHC extends TeamGame
|
||||
{
|
||||
while (name.length() + health.length() > 16)
|
||||
name = name.substring(0, name.length()-1);
|
||||
|
||||
|
||||
player.setPlayerListName(name + health);
|
||||
}
|
||||
catch (Exception e)
|
||||
|
@ -29,6 +29,7 @@ public class PerkArrowRebound extends Perk
|
||||
{
|
||||
super("Chain Arrows", new String[]
|
||||
{
|
||||
C.cGray + "On hit, arrows bounce to nearby enemies.",
|
||||
C.cGray + "Arrows bounce up to " + max + " times.",
|
||||
});
|
||||
|
||||
|
@ -30,7 +30,7 @@ public class PerkCowBomb extends Perk implements IThrown
|
||||
{
|
||||
super("Cow Bomb", new String[]
|
||||
{
|
||||
C.cYellow + "Right-Click" + C.cGray + " with Shovel to use " + C.cGreen + "Cow Bomb"
|
||||
C.cYellow + "Right-Click" + C.cGray + " with Axe to use " + C.cGreen + "Cow Bomb"
|
||||
});
|
||||
}
|
||||
|
||||
@ -50,7 +50,7 @@ public class PerkCowBomb extends Perk implements IThrown
|
||||
if (event.getPlayer().getItemInHand() == null)
|
||||
return;
|
||||
|
||||
if (!event.getPlayer().getItemInHand().getType().toString().contains("_SPADE"))
|
||||
if (!event.getPlayer().getItemInHand().getType().toString().contains("_AXE"))
|
||||
return;
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
@ -115,6 +115,7 @@ public class PerkLeap extends Perk
|
||||
ent = player.getVehicle();
|
||||
|
||||
UtilAction.velocity(ent, _power, 0.2, _heightMax, true);
|
||||
|
||||
player.setFallDistance(0);
|
||||
|
||||
UtilPlayer.message(player, F.main("Skill", "You used " + F.skill(_name) + "."));
|
||||
|
@ -0,0 +1,140 @@
|
||||
package nautilus.game.arcade.kit.perks;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Cow;
|
||||
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.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.F;
|
||||
import mineplex.core.common.util.UtilAction;
|
||||
import mineplex.core.common.util.UtilAlg;
|
||||
import mineplex.core.common.util.UtilBlock;
|
||||
import mineplex.core.common.util.UtilEnt;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.recharge.Recharge;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
|
||||
public class PerkSeismicCow extends Perk
|
||||
{
|
||||
private HashMap<LivingEntity, Long> _live = new HashMap<LivingEntity, Long>();
|
||||
|
||||
public PerkSeismicCow()
|
||||
{
|
||||
super("Seismic Slam", new String[]
|
||||
{
|
||||
C.cYellow + "Right-Click" + C.cGray + " with Shovel to " + C.cGreen + "Seismic Slam"
|
||||
});
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void Leap(PlayerInteractEvent event)
|
||||
{
|
||||
if (event.isCancelled())
|
||||
return;
|
||||
|
||||
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK)
|
||||
return;
|
||||
|
||||
if (UtilBlock.usable(event.getClickedBlock()))
|
||||
return;
|
||||
|
||||
if (event.getPlayer().getItemInHand() == null)
|
||||
return;
|
||||
|
||||
if (!event.getPlayer().getItemInHand().getType().toString().contains("_SPADE"))
|
||||
return;
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (!Kit.HasKit(player))
|
||||
return;
|
||||
|
||||
if (!Recharge.Instance.use(player, GetName(), 6000, true))
|
||||
return;
|
||||
|
||||
//Action
|
||||
Vector vec = player.getLocation().getDirection();
|
||||
if (vec.getY() < 0)
|
||||
vec.setY(vec.getY() * -1);
|
||||
|
||||
UtilAction.velocity(player, vec, 1, true, 1, 0, 1, true);
|
||||
|
||||
//Record
|
||||
_live.put(player, System.currentTimeMillis());
|
||||
|
||||
//Inform
|
||||
UtilPlayer.message(player, F.main("Game", "You used " + F.skill(GetName()) + "."));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void Slam(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.TICK)
|
||||
return;
|
||||
|
||||
for (Player player : Manager.GetGame().GetPlayers(true))
|
||||
{
|
||||
if (!UtilEnt.isGrounded(player))
|
||||
continue;
|
||||
|
||||
if (!_live.containsKey(player))
|
||||
continue;
|
||||
|
||||
if (!UtilTime.elapsed(_live.get(player), 1000))
|
||||
continue;
|
||||
|
||||
_live.remove(player);
|
||||
|
||||
//Action
|
||||
int damage = 4;
|
||||
double range = 6;
|
||||
|
||||
HashMap<LivingEntity, Double> targets = UtilEnt.getInRadius(player.getLocation(), range);
|
||||
for (LivingEntity cur : targets.keySet())
|
||||
{
|
||||
if (cur.equals(player))
|
||||
continue;
|
||||
|
||||
if (cur instanceof Cow)
|
||||
continue;
|
||||
|
||||
//Damage Event
|
||||
Manager.GetDamage().NewDamageEvent(cur, player, null,
|
||||
DamageCause.CUSTOM, damage * targets.get(cur) + 0.5, false, true, false,
|
||||
player.getName(), GetName());
|
||||
|
||||
//Velocity
|
||||
UtilAction.velocity(cur,
|
||||
UtilAlg.getTrajectory2d(player.getLocation().toVector(), cur.getLocation().toVector()),
|
||||
1.8 * targets.get(cur), true, 0, 0.4 + 1.0 * targets.get(cur), 1.6, true);
|
||||
|
||||
//Condition
|
||||
Manager.GetCondition().Factory().Falling(GetName(), cur, player, 10, false, true);
|
||||
|
||||
//Inform
|
||||
if (cur instanceof Player)
|
||||
UtilPlayer.message((Player)cur, F.main("Game", F.name(player.getName()) +" hit you with " + F.skill(GetName()) + "."));
|
||||
}
|
||||
|
||||
//Effect
|
||||
player.getWorld().playSound(player.getLocation(), Sound.ZOMBIE_WOOD, 2f, 0.2f);
|
||||
for (Block cur : UtilBlock.getInRadius(player.getLocation(), 4d).keySet())
|
||||
if (UtilBlock.airFoliage(cur.getRelative(BlockFace.UP)) && !UtilBlock.airFoliage(cur))
|
||||
cur.getWorld().playEffect(cur.getLocation(), Effect.STEP_SOUND, cur.getTypeId());
|
||||
}
|
||||
}
|
||||
}
|
@ -35,7 +35,7 @@ public class PerkSeismicSlam extends Perk
|
||||
{
|
||||
super("Seismic Slam", new String[]
|
||||
{
|
||||
C.cYellow + "Right-Click" + C.cGray + " with Shovel to " + C.cGreen + "Seismic Slam"
|
||||
C.cYellow + "Right-Click" + C.cGray + " with Axe to " + C.cGreen + "Seismic Slam"
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,123 @@
|
||||
package nautilus.game.arcade.kit.perks;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.WitherSkull;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.entity.EntityShootBowEvent;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
|
||||
public class PerkSkullShot extends Perk
|
||||
{
|
||||
private HashMap<Player, Long> _shootTime = new HashMap<Player, Long>();
|
||||
private HashMap<WitherSkull, Vector> _skullDir = new HashMap<WitherSkull, Vector>();
|
||||
|
||||
public PerkSkullShot()
|
||||
{
|
||||
super("Skull Shot", new String[]
|
||||
{
|
||||
C.cYellow + "Shoot Bow" + C.cGray + " to use " + C.cGreen + "Skull Shot"
|
||||
});
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void Fire(EntityShootBowEvent event)
|
||||
{
|
||||
if (!(event.getEntity() instanceof Player))
|
||||
return;
|
||||
|
||||
Player player = (Player)event.getEntity();
|
||||
|
||||
if (!Kit.HasKit(player))
|
||||
return;
|
||||
|
||||
Vector vel = event.getProjectile().getVelocity();
|
||||
event.getProjectile().remove();
|
||||
|
||||
WitherSkull skull = player.launchProjectile(WitherSkull.class);
|
||||
skull.setDirection(vel);
|
||||
skull.setVelocity(vel);
|
||||
|
||||
_skullDir.put(skull, vel.multiply(0.5));
|
||||
|
||||
_shootTime.put(player, System.currentTimeMillis());
|
||||
|
||||
//Helmet
|
||||
player.getInventory().setHelmet(null);
|
||||
player.getInventory().remove(Material.ARROW);
|
||||
|
||||
//Sound
|
||||
player.getWorld().playSound(player.getLocation(), Sound.WITHER_SHOOT, 1f, 1f);
|
||||
|
||||
//Inform
|
||||
UtilPlayer.message(player, F.main("Skill", "You used " + F.skill(GetName()) + "."));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void SkullDir(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.FASTER)
|
||||
return;
|
||||
|
||||
Iterator<WitherSkull> skullIterator = _skullDir.keySet().iterator();
|
||||
|
||||
while (skullIterator.hasNext())
|
||||
{
|
||||
WitherSkull skull = skullIterator.next();
|
||||
|
||||
if (!skull.isValid())
|
||||
{
|
||||
skullIterator.remove();
|
||||
continue;
|
||||
}
|
||||
|
||||
skull.setVelocity(_skullDir.get(skull));
|
||||
skull.setDirection(_skullDir.get(skull));
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void ArrowRespawn(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.FASTER)
|
||||
return;
|
||||
|
||||
Iterator<Player> playerIterator = _shootTime.keySet().iterator();
|
||||
|
||||
while (playerIterator.hasNext())
|
||||
{
|
||||
Player player = playerIterator.next();
|
||||
|
||||
if (!UtilTime.elapsed(_shootTime.get(player), 2000))
|
||||
continue;
|
||||
|
||||
playerIterator.remove();
|
||||
|
||||
//Helmet
|
||||
ItemStack head = ItemStackFactory.Instance.CreateStack(Material.SKULL_ITEM, (byte)1, 1);
|
||||
player.getInventory().setHelmet(head);
|
||||
player.getInventory().addItem(new ItemStack(Material.ARROW));
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void Death(PlayerDeathEvent event)
|
||||
{
|
||||
_shootTime.remove(event.getEntity());
|
||||
}
|
||||
}
|
@ -247,7 +247,7 @@ public class PerkSlimeRocket extends Perk implements IThrown
|
||||
|
||||
//Damage Event
|
||||
Manager.GetDamage().NewDamageEvent(target, data.GetThrower(), null,
|
||||
DamageCause.PROJECTILE, slime.getSize() * 4, true, true, false,
|
||||
DamageCause.PROJECTILE, slime.getSize() * 5, true, true, false,
|
||||
UtilEnt.getName(data.GetThrower()), GetName());
|
||||
}
|
||||
|
||||
@ -257,7 +257,7 @@ public class PerkSlimeRocket extends Perk implements IThrown
|
||||
if (event.GetReason() == null || !event.GetReason().contains(GetName()))
|
||||
return;
|
||||
|
||||
event.AddKnockback(GetName(), 2.5);
|
||||
event.AddKnockback(GetName(), 3.0);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -120,10 +120,10 @@ public class GameGemManager implements Listener
|
||||
|
||||
//Give Gems
|
||||
if (give)
|
||||
GiveGems(player, game.GetPlayerGems().remove(player));
|
||||
GiveGems(player, game.GetPlayerGems().remove(player), game.GemMultiplier);
|
||||
}
|
||||
|
||||
public void GiveGems(Player player, HashMap<String,GemData> gems)
|
||||
public void GiveGems(Player player, HashMap<String,GemData> gems, double gameMult)
|
||||
{
|
||||
if (gems == null)
|
||||
return;
|
||||
@ -138,6 +138,8 @@ public class GameGemManager implements Listener
|
||||
|
||||
if (Manager.GetClients().Get(player).GetRank().Has(Rank.ULTRA) || Manager.GetDonation().Get(player.getName()).OwnsUnknownPackage(Manager.GetServerConfig().ServerType + " ULTRA"))
|
||||
total = total * 2;
|
||||
|
||||
total = (int) (total * gameMult);
|
||||
|
||||
Manager.GetDonation().RewardGems(null, player.getName(), total);
|
||||
}
|
||||
@ -164,6 +166,8 @@ public class GameGemManager implements Listener
|
||||
gemCount = 1;
|
||||
|
||||
earnedGems += gemCount;
|
||||
|
||||
earnedGems = (int) (earnedGems * game.GemMultiplier);
|
||||
|
||||
int amount = gems.get(type).Amount;
|
||||
String amountStr = "";
|
||||
@ -194,9 +198,4 @@ public class GameGemManager implements Listener
|
||||
|
||||
UtilPlayer.message(player, ArcadeFormat.Line);
|
||||
}
|
||||
|
||||
public double GetScale(Game game)
|
||||
{
|
||||
return 0.25 + (0.75 * ((double)game.GetPlayerCountAtStart() / (double)Manager.GetPlayerFull()));
|
||||
}
|
||||
}
|
||||
|
@ -458,7 +458,7 @@ public class GameLobbyManager implements IPacketRunnable, Listener
|
||||
kits.add(kit);
|
||||
}
|
||||
|
||||
//Radial for smash
|
||||
//Smash
|
||||
if (game.GetType() == GameType.Smash)
|
||||
{
|
||||
WriteKitLine("Free", 0, 159, (byte)15);
|
||||
@ -469,8 +469,8 @@ public class GameLobbyManager implements IPacketRunnable, Listener
|
||||
|
||||
for (int i=0 ; i<kits.size() ; i++)
|
||||
{
|
||||
if (i < kits.size()/2) kitsA.add(kits.get(i));
|
||||
else kitsB.add(kits.get(i));
|
||||
if (kits.get(i).GetAvailability() != KitAvailability.Blue) kitsA.add(kits.get(i));
|
||||
else kitsB.add(kits.get(i));
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -14,6 +14,7 @@ import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
|
||||
public class MiscManager implements Listener
|
||||
@ -68,17 +69,20 @@ public class MiscManager implements Listener
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void EnsureHubClock(UpdateEvent event)
|
||||
public void HubClockUpdate(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.SLOW)
|
||||
return;
|
||||
|
||||
if (Manager.GetGame() != null && Manager.GetGame().GetType() == GameType.UHC)
|
||||
if (Manager.GetGame() == null)
|
||||
return;
|
||||
|
||||
if (Manager.GetGame().GetType() == GameType.UHC)
|
||||
return;
|
||||
|
||||
for (Player player : UtilServer.getPlayers())
|
||||
{
|
||||
if (Manager.GetGame() == null || !Manager.GetGame().IsAlive(player))
|
||||
if (!Manager.GetGame().IsAlive(player))
|
||||
{
|
||||
if (!player.getInventory().contains(Material.WATCH))
|
||||
{
|
||||
@ -87,4 +91,28 @@ public class MiscManager implements Listener
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void HubClockInteract(PlayerInteractEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (player.getItemInHand() == null)
|
||||
return;
|
||||
|
||||
if (player.getItemInHand().getType() != Material.WATCH)
|
||||
return;
|
||||
|
||||
Manager.GetPortal().SendPlayerToServer(player, "Lobby");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void HubCommand(PlayerCommandPreprocessEvent event)
|
||||
{
|
||||
if (event.getMessage().startsWith("/hub") || event.getMessage().startsWith("/leave"))
|
||||
{
|
||||
Manager.GetPortal().SendPlayerToServer(event.getPlayer(), "Lobby");
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user