add new gamemodes Tiny Winners, Random Kit SSM, UHC SW, UHC SG and improve OP SG, OP SW, OP Bridges, Dukes of decoration, OP Gladiators, Faster than Light, Bunny Hopper and Countdown

This commit is contained in:
xXVevzZXx 2016-05-13 20:23:04 +02:00
parent d75ba9d4c0
commit df5c628c35
23 changed files with 1091 additions and 139 deletions

View File

@ -5,6 +5,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import mineplex.core.MiniPlugin;
@ -770,7 +771,7 @@ public class ItemStackFactory extends MiniPlugin
public ItemStack CreateStack(Material type, byte data, int amount, String name, String[] lore, String owner, boolean unbreakable)
{
return CreateStack(type.getId(), data, amount, (short)0, name, ArrayToList(lore), owner, unbreakable);
return CreateStack(type.getId(), data, amount, (short)0, name, ArrayToList(lore), owner, unbreakable, 0, null);
}
public ItemStack CreateStack(int id, byte data, int amount, String name, String[] lore, String owner)
@ -790,7 +791,7 @@ public class ItemStackFactory extends MiniPlugin
public ItemStack CreateStack(int id, byte data, int amount, short damage, String name, String[] lore, String owner, boolean unbreakable)
{
return CreateStack(id, data, amount, damage, name, ArrayToList(lore), owner, unbreakable);
return CreateStack(id, data, amount, damage, name, ArrayToList(lore), owner, unbreakable, 0, null);
}
@ -801,14 +802,20 @@ public class ItemStackFactory extends MiniPlugin
public ItemStack CreateStack(int id, byte data, int amount, short damage, String name, List<String> lore, String owner)
{
return CreateStack(id, data, amount, damage, name, lore, owner, true);
return CreateStack(id, data, amount, damage, name, lore, owner, true, 0, null);
}
//XXX Owner Variant End
@SuppressWarnings("deprecation")
public ItemStack CreateStack(int id, byte data, int amount, short damage, String name, List<String> lore, String owner, boolean unbreakable)
{
return CreateStack(id, data, amount, damage, name, lore, owner, unbreakable, 0, null);
}
//XXX Owner Variant End
@SuppressWarnings("deprecation")
public ItemStack CreateStack(int id, byte data, int amount, short damage, String name, List<String> lore, String owner, boolean unbreakable, Integer enchLevel, Enchantment... enchantments)
{
ItemStack stack;
if (data == 0)
stack = new ItemStack(id, amount, damage);
@ -874,7 +881,15 @@ public class ItemStackFactory extends MiniPlugin
if (setMeta)
stack.setItemMeta(itemMeta);
if(enchantments != null)
{
for(Enchantment enchantment : enchantments)
{
stack.addEnchantment(enchantment, enchLevel);
}
}
//Unbreakable
if (unbreakable)
{

View File

@ -160,7 +160,7 @@ public class PersonalServerManager extends MiniPlugin
}
final ServerGroup serverGroup = new ServerGroup(serverName, serverName, host.getName(), ram, cpu, 1, 0, UtilMath.random.nextInt(250) + 19999, true, "arcade.zip", "Arcade.jar", "plugins/Arcade/", minPlayers, maxPlayers,
true, false, false, games, "Player", true, event, false, true, false, true, true, false, false, false, false, true, true, true, false, false, "", _us ? Region.US : Region.EU, "", "", "", "");
true, false, false, games, "", "Player", true, event, false, true, false, true, true, false, false, false, false, true, true, true, false, false, "", _us ? Region.US : Region.EU, "", "", "", "");
getPlugin().getServer().getScheduler().runTaskAsynchronously(getPlugin(), new Runnable()
{

View File

@ -42,6 +42,7 @@ import nautilus.game.arcade.game.games.holeinwall.HoleInTheWall;
import nautilus.game.arcade.game.games.horsecharge.Horse;
import nautilus.game.arcade.game.games.lobbers.BombLobbers;
import nautilus.game.arcade.game.games.micro.Micro;
import nautilus.game.arcade.game.games.micro.modes.TinnyWinners;
import nautilus.game.arcade.game.games.milkcow.MilkCow;
import nautilus.game.arcade.game.games.minecraftleague.MinecraftLeague;
import nautilus.game.arcade.game.games.minestrike.MineStrike;
@ -63,9 +64,11 @@ import nautilus.game.arcade.game.games.sheep.modes.EweHeroes;
import nautilus.game.arcade.game.games.skywars.SoloSkywars;
import nautilus.game.arcade.game.games.skywars.TeamSkywars;
import nautilus.game.arcade.game.games.skywars.modes.OverpoweredSkywars;
import nautilus.game.arcade.game.games.skywars.modes.UHCSkywars;
import nautilus.game.arcade.game.games.smash.SoloSuperSmash;
import nautilus.game.arcade.game.games.smash.SuperSmashDominate;
import nautilus.game.arcade.game.games.smash.TeamSuperSmash;
import nautilus.game.arcade.game.games.smash.modes.RandomKitSSM;
import nautilus.game.arcade.game.games.snake.Snake;
import nautilus.game.arcade.game.games.sneakyassassins.SneakyAssassins;
import nautilus.game.arcade.game.games.snowfight.SnowFight;
@ -78,6 +81,7 @@ import nautilus.game.arcade.game.games.stacker.Stacker;
import nautilus.game.arcade.game.games.survivalgames.SoloSurvivalGames;
import nautilus.game.arcade.game.games.survivalgames.TeamSurvivalGames;
import nautilus.game.arcade.game.games.survivalgames.modes.OverpoweredSurvival;
import nautilus.game.arcade.game.games.survivalgames.modes.UHCSurvivalgames;
import nautilus.game.arcade.game.games.tug.Tug;
import nautilus.game.arcade.game.games.turfforts.TurfForts;
import nautilus.game.arcade.game.games.typewars.TypeWars;
@ -127,7 +131,7 @@ public enum GameType
HoleInTheWall(HoleInTheWall.class, GameDisplay.HoleInTheWall),
Horse(Horse.class, GameDisplay.Horse),
Lobbers(BombLobbers.class, GameDisplay.Lobbers),
Micro(Micro.class, GameDisplay.Micro),
Micro(Micro.class, new GameMode[]{new GameMode(TinnyWinners.class, "Tinny Winners")}, GameDisplay.Micro),
MilkCow(MilkCow.class, GameDisplay.MilkCow),
MineStrike(MineStrike.class, GameDisplay.MineStrike, new Pair[]
{
@ -145,7 +149,7 @@ public enum GameType
Sheep(SheepGame.class, new GameMode[]{new GameMode(EweHeroes.class, "Heroes Of The Ewe")}, GameDisplay.Sheep),
TypeWars(TypeWars.class, GameDisplay.TypeWars),
Smash(SoloSuperSmash.class, GameDisplay.Smash),
Smash(SoloSuperSmash.class, new GameMode[]{new GameMode(RandomKitSSM.class, "Random Kit SSM")}, GameDisplay.Smash),
SmashDomination(SuperSmashDominate.class, GameDisplay.SmashDomination),
SmashTeams(TeamSuperSmash.class, GameDisplay.SmashTeams, new GameType[]{GameType.Smash}, false),
Snake(Snake.class, GameDisplay.Snake),
@ -156,7 +160,7 @@ public enum GameType
SpleefTeams(SpleefTeams.class, GameDisplay.SpleefTeams),
SquidShooter(SquidShooter.class, GameDisplay.SquidShooter),
Stacker(Stacker.class, GameDisplay.Stacker),
SurvivalGames(SoloSurvivalGames.class, new GameMode[]{new GameMode(OverpoweredSurvival.class, "OP Survival Games")}, GameDisplay.SurvivalGames),
SurvivalGames(SoloSurvivalGames.class, new GameMode[]{new GameMode(OverpoweredSurvival.class, "OP Survival Games"), new GameMode(UHCSurvivalgames.class, "UHC Survivalgames ")}, GameDisplay.SurvivalGames),
SurvivalGamesTeams(TeamSurvivalGames.class, GameDisplay.SurvivalGamesTeams, new GameType[]{GameType.SurvivalGames}, false),
Tug(Tug.class, GameDisplay.Tug),
TurfWars(TurfForts.class, GameDisplay.TurfWars),
@ -169,7 +173,7 @@ public enum GameType
ZombieSurvival(ZombieSurvival.class, GameDisplay.ZombieSurvival),
Build(Build.class, new GameMode[]{new GameMode(TeamBuild.class, "Team Master Builders"), new GameMode(DukesOfDecoration.class, "Dukes Of Decoration")}, GameDisplay.Build),
Cards(Cards.class, GameDisplay.Cards),
Skywars(SoloSkywars.class, GameDisplay.Skywars),
Skywars(SoloSkywars.class, new GameMode[]{new GameMode(UHCSkywars.class, "UHC Skywars")}, GameDisplay.Skywars),
SkywarsTeams(TeamSkywars.class, new GameMode[]{new GameMode(OverpoweredSkywars.class, "OP Skywars")}, GameDisplay.SkywarsTeams, new GameType[]{GameType.Skywars}, false),
MonsterMaze(MonsterMaze.class, GameDisplay.MonsterMaze),
MonsterLeague(MonsterLeague.class, GameDisplay.MonsterLeague),

View File

@ -1965,5 +1965,10 @@ public class Bridge extends TeamGame implements OreObsfucation
{
return _chestLoot;
}
public boolean bridgesDown()
{
return _bridgesDown;
}
}

View File

@ -1,23 +1,30 @@
package nautilus.game.arcade.game.games.bridge.modes;
import java.util.ArrayList ;
import java.util.ArrayList;
import java.util.HashMap;
import org.bukkit.Location ;
import org.bukkit.Material ;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.Chest;
import org.bukkit.block.Sign;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.PotionMeta;
import org.bukkit.material.MaterialData;
import org.bukkit.potion.Potion;
import org.bukkit.potion.Potion.Tier;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.potion.PotionType;
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
import mineplex.core.common.util.UtilMath ;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager ;
import nautilus.game.arcade.game.games.bridge.Bridge ;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.events.PlayerPrepareTeleportEvent;
import nautilus.game.arcade.game.games.bridge.Bridge;
import net.md_5.bungee.api.ChatColor;
/**
* OverpoweredBridge
@ -27,6 +34,9 @@ import nautilus.game.arcade.game.games.bridge.Bridge ;
public class OverpoweredBridge extends Bridge
{
private HashMap<Player, Location> _starterChests;
private HashMap<Material, Integer> _starterItems;
public OverpoweredBridge(ArcadeManager manager)
{
super(manager);
@ -35,6 +45,20 @@ public class OverpoweredBridge extends Bridge
@Override
public void ParseData()
{
_starterChests = new HashMap<>();
_starterItems = new HashMap<>();
_starterItems.put(Material.WOOD, 64);
_starterItems.put(Material.GOLDEN_APPLE, 10);
_starterItems.put(Material.DIAMOND_PICKAXE, 1);
_starterItems.put(Material.ENCHANTMENT_TABLE, 1);
_starterItems.put(Material.ANVIL, 1);
_starterItems.put(Material.BOOKSHELF, 64);
_starterItems.put(Material.BOOK, 64);
_starterItems.put(Material.EXP_BOTTLE, 64);
_starterItems.put(Material.COOKED_BEEF, 64);
_starterItems.put(Material.DIAMOND, 300);
ParseLavaBridge();
ParseWoodBridge();
ParseIceBridge();
@ -58,15 +82,123 @@ public class OverpoweredBridge extends Bridge
if (!WorldData.GetCustomLocs("86").isEmpty()) ParseOre(WorldData.GetCustomLocs("86"));
if (!WorldData.GetCustomLocs("103").isEmpty()) ParseOre(WorldData.GetCustomLocs("103"));
if (!WorldData.GetCustomLocs("22").isEmpty()) ParseOre(WorldData.GetCustomLocs("22"));
ParseEnchantTables();
}
private void ParseEnchantTables()
@EventHandler
public void informChest(GameStateChangeEvent event)
{
for(Location loc : WorldData.GetDataLocs("PINK"))
if (event.GetState() != GameState.Live)
return;
for (Player player : GetPlayers(true))
{
loc.getBlock().setType(Material.ENCHANTMENT_TABLE);
UtilPlayer.message(player, F.main("Game", ChatColor.AQUA + "A supply chest spawned near you. You should take a look into it"));
}
}
@EventHandler
public void supplyChest(PlayerPrepareTeleportEvent event)
{
Location chestLoc = event.GetPlayer().getLocation().clone().add(0, 0, 1);
_starterChests.put(event.GetPlayer(), chestLoc);
Block block = chestLoc.getBlock();
block.setType(Material.CHEST);
chestLoc.clone().add(0, 1, 0).getBlock().setType(Material.AIR);
Chest chest = (Chest) block.getState();
event.GetPlayer().getLocation().getBlock().setType(Material.WALL_SIGN);
Sign sign = (Sign) event.GetPlayer().getLocation().getBlock().getState();
sign.setLine(0, "§b=============");
sign.setLine(1, "§4§l" + event.GetPlayer().getName() + ChatColor.RESET + "§4's");
sign.setLine(2, "§4Supply Chest");
sign.setLine(3, "§b=============");
sign.update();
ArrayList<Integer> slots = new ArrayList<>();
for (int i = 0; i <= 27; i++)
slots.add(new Integer(i));
for (Material mat : _starterItems.keySet())
{
ItemStack stack = new ItemStack(mat);
int amount = _starterItems.get(mat);
if (amount > stack.getMaxStackSize())
{
while (amount > 0)
{
ItemStack item = new ItemStack(mat);
if (amount > stack.getMaxStackSize())
item.setAmount(stack.getMaxStackSize());
else
item.setAmount(amount);
int slot = slots.get(UtilMath.r(slots.size()));
slots.remove(new Integer(slot));
chest.getInventory().setItem(slot, item);
amount -= stack.getMaxStackSize();
}
}
else
{
ItemStack item = new ItemStack(mat, amount);
int slot = slots.get(UtilMath.r(slots.size()));
slots.remove(new Integer(slot));
chest.getInventory().setItem(slot, item);
}
}
}
@EventHandler
public void openChest(PlayerInteractEvent event)
{
if (event.getAction() == Action.RIGHT_CLICK_BLOCK)
{
if (event.getClickedBlock().getType() != Material.CHEST)
return;
for (Player player : _starterChests.keySet())
{
if (player == event.getPlayer())
continue;
if (_starterChests.get(player).getBlock().getLocation().equals(event.getClickedBlock().getLocation()))
{
event.setCancelled(true);
break;
}
}
}
}
@EventHandler
public void CheatChestBreak(BlockBreakEvent event)
{
if (event.getBlock().getType() != Material.CHEST)
return;
if (!IsAlive(event.getPlayer()))
return;
for (Player player : _starterChests.keySet())
{
if (player == event.getPlayer())
continue;
if (_starterChests.get(player).getBlock().getLocation().equals(event.getBlock().getLocation()))
{
event.setCancelled(true);
break;
}
}
}
@ -76,7 +208,7 @@ public class OverpoweredBridge extends Bridge
int coal = (int) ((teamOre.size() / 32d) * getOreDensity());
int iron = (int) ((teamOre.size() / 24d) * getOreDensity());
int gold = (int) ((teamOre.size() / 64d) * getOreDensity());
int diamond = 100 + (int) ((teamOre.size() / 32d) * getOreDensity());
int diamond = 500 + (int) ((teamOre.size() / 32d) * getOreDensity());
int gravel = (int) ((teamOre.size() / 64d) * getOreDensity());
@ -221,7 +353,7 @@ public class OverpoweredBridge extends Bridge
break;
}
CreateOre(teamOre.remove(id), Material.DIAMOND_ORE, 2);
CreateOre(teamOre.remove(id), Material.DIAMOND_ORE, 5);
}
}
@ -237,7 +369,7 @@ public class OverpoweredBridge extends Bridge
chest.getBlockInventory().clear();
int count = 12 + UtilMath.r(10);
int count = 22 + UtilMath.r(4);
for (int i = 0; i < count; i++)
{
chest.getBlockInventory().addItem(GetChestItem());
@ -250,23 +382,51 @@ public class OverpoweredBridge extends Bridge
{
if (getChestLoot().isEmpty())
{
for (int i = 0; i < 5; i++)
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_HELMET));
for (int i = 0; i < 5; i++)
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_CHESTPLATE));
for (int i = 0; i < 5; i++)
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_LEGGINGS));
for (int i = 0; i < 5; i++)
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_BOOTS));
for (int i = 0; i < 5; i++)
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_SWORD));
for (int i = 0; i < 5; i++)
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_AXE));
for (int i = 0; i < 5; i++)
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_PICKAXE));
for (int i = 0; i < 13; i++)
{
getChestLoot().add(new ItemStack(Material.GOLDEN_APPLE));
getChestLoot().add(new ItemStack(Material.ANVIL));
}
for (int i = 0; i < 5; i++)
{
ItemStack sharpness = new ItemStack(Material.ENCHANTED_BOOK);
EnchantmentStorageMeta sharpnessMeta = (EnchantmentStorageMeta) sharpness.getItemMeta();
sharpnessMeta.addStoredEnchant(Enchantment.DAMAGE_ALL, 1 + UtilMath.r(5), true);
sharpness.setItemMeta(sharpnessMeta);
getChestLoot().add(sharpness);
ItemStack protection = new ItemStack(Material.ENCHANTED_BOOK);
EnchantmentStorageMeta protectionMeta = (EnchantmentStorageMeta) protection.getItemMeta();
protectionMeta.addStoredEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 1 + UtilMath.r(4), true);
protection.setItemMeta(protectionMeta);
getChestLoot().add(protection);
ItemStack power = new ItemStack(Material.ENCHANTED_BOOK);
EnchantmentStorageMeta powerMeta = (EnchantmentStorageMeta) power.getItemMeta();
powerMeta.addStoredEnchant(Enchantment.ARROW_DAMAGE, 1 + UtilMath.r(5), true);
power.setItemMeta(powerMeta);
getChestLoot().add(power);
}
for (int i = 0; i < 10; i++)
getChestLoot().add(new ItemStack(Material.EXP_BOTTLE, 10));
for (int i = 0; i < 6; i++)
getChestLoot().add(new ItemStack(Material.BOW));
@ -286,7 +446,10 @@ public class OverpoweredBridge extends Bridge
if (stack.getType().getMaxStackSize() > 1)
amount = stack.getAmount() + UtilMath.r(stack.getAmount());
return ItemStackFactory.Instance.CreateStack(stack.getTypeId(), amount);
ItemStack item = stack.clone();
item.setAmount(amount);
return item;
}
@Override

View File

@ -5,44 +5,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map.Entry;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.NautHashMap;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTextBottom;
import mineplex.core.common.util.UtilTextMiddle;
import mineplex.core.common.util.UtilTime;
import mineplex.core.explosion.ExplosionEvent;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.recharge.Recharge;
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.events.PlayerPrepareTeleportEvent;
import nautilus.game.arcade.game.Game ;
import nautilus.game.arcade.game.SoloGame;
import nautilus.game.arcade.game.games.build.gui.MobShop;
import nautilus.game.arcade.game.games.build.gui.OptionsShop;
import nautilus.game.arcade.game.games.build.kits.KitBuilder;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.managers.chat.ChatStatData;
import nautilus.game.arcade.stats.BlockBreakStatTracker;
import nautilus.game.arcade.stats.BlockPlaceStatTracker;
import java.util.UUID;
import org.bukkit.ChatColor;
@ -107,6 +69,44 @@ import org.bukkit.event.vehicle.VehicleCreateEvent;
import org.bukkit.event.vehicle.VehicleDamageEvent;
import org.bukkit.inventory.ItemStack;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.NautHashMap;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTextBottom;
import mineplex.core.common.util.UtilTextMiddle;
import mineplex.core.common.util.UtilTime;
import mineplex.core.explosion.ExplosionEvent;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.recharge.Recharge;
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.events.PlayerPrepareTeleportEvent;
import nautilus.game.arcade.game.Game ;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.games.build.gui.MobShop;
import nautilus.game.arcade.game.games.build.gui.OptionsShop;
import nautilus.game.arcade.game.games.build.kits.KitBuilder;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.managers.chat.ChatStatData;
import nautilus.game.arcade.stats.BlockBreakStatTracker;
import nautilus.game.arcade.stats.BlockPlaceStatTracker;
public class Build extends Game
{
private NautHashMap<Player, BuildData> _data = new NautHashMap<Player, BuildData>();
@ -245,6 +245,17 @@ public class Build extends Game
event.GetPlayer().setFlySpeed(0.04f);
}
@EventHandler
public void CustomTeamGeneration(GameStateChangeEvent event)
{
if (event.GetState() != GameState.Recruit)
return;
GameTeam players = GetTeamList().get(0);
players.SetColor(ChatColor.YELLOW);
players.SetName("Players");
}
@EventHandler
public void prepare(GameStateChangeEvent event)
{
@ -1103,11 +1114,13 @@ public class Build extends Game
if (data == null)
return;
event.getItem().remove();
if(data.Player == null)
{
if (data.Team.HasPlayer(event.getPlayer()))
{
event.getItem().remove();
UtilParticle.PlayParticle(ParticleType.LARGE_EXPLODE, event.getItem().getLocation().add(0, 0.5, 0), 0, 0, 0, 0, 1,
ViewDist.LONG, UtilServer.getPlayers());
}
@ -1664,7 +1677,12 @@ public class Build extends Game
{
return _voteTime;
}
public ItemStack getShop()
{
return _shopItem;
}
@Override
public void EndCheck()
{

View File

@ -1,22 +1,37 @@
package nautilus.game.arcade.game.games.build.modes;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.Effect;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockDamageEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.inventory.InventoryAction;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCreativeEvent;
import org.bukkit.event.inventory.InventoryDragEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.recharge.Recharge;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.events.PlayerPrepareTeleportEvent;
import nautilus.game.arcade.game.games.build.Build;
import net.md_5.bungee.api.ChatColor;
/**
* DukesOfDecoration
@ -32,27 +47,110 @@ public class DukesOfDecoration extends Build
{
super(manager);
List<Material> notAllowed = Arrays.asList(new Material[]{
Material.COMMAND,
Material.COMMAND_MINECART,
Material.BARRIER,
Material.BURNING_FURNACE,
Material.MOB_SPAWNER,
Material.FURNACE,
Material.DRAGON_EGG,
Material.ENDER_PORTAL,
Material.ENDER_PORTAL_FRAME,
Material.SOIL,
Material.PORTAL,
Material.GLOWING_REDSTONE_ORE,
Material.SUGAR_CANE_BLOCK,
Material.IRON_DOOR_BLOCK,
Material.DOUBLE_STEP,
Material.DOUBLE_PLANT,
Material.DOUBLE_STONE_SLAB2,
Material.WOOD_DOUBLE_STEP,
Material.BREWING_STAND,
Material.WALL_SIGN,
Material.YELLOW_FLOWER,
Material.RED_ROSE,
Material.SAPLING,
Material.RED_MUSHROOM,
Material.BROWN_MUSHROOM,
Material.DIODE_BLOCK_ON,
Material.DIODE_BLOCK_OFF,
Material.WATER,
Material.STATIONARY_WATER,
Material.LAVA,
Material.STATIONARY_WATER,
Material.SIGN_POST,
Material.REDSTONE_LAMP_ON,
Material.PISTON_EXTENSION,
Material.MELON_STEM,
Material.BED_BLOCK,
Material.POTATO,
Material.CARROT,
Material.COCOA,
Material.REDSTONE_WIRE,
Material.SKULL,
Material.CROPS,
Material.FLOWER_POT,
Material.HUGE_MUSHROOM_1,
Material.HUGE_MUSHROOM_2,
Material.FIRE
});
_blocks = new ArrayList<>();
for (int i = 0; i < 22; i++)
for (int i = 0; i < 8; i++)
{
Material mat = Material.values()[1 + UtilMath.r(174)];
while (_blocks.contains(mat)
|| mat == Material.COMMAND
|| mat == Material.COMMAND_MINECART
|| mat == Material.BARRIER
|| mat == Material.BURNING_FURNACE
|| mat == Material.MOB_SPAWNER
|| mat == Material.FURNACE
|| mat == Material.DRAGON_EGG
|| mat == Material.ENDER_PORTAL
|| mat == Material.ENDER_PORTAL_FRAME)
while (_blocks.contains(mat) || notAllowed.contains(mat))
{
mat = Material.values()[1 + UtilMath.r(174)];
}
System.out.println(mat.toString());
_blocks.add(mat);
}
}
@Override
@EventHandler
public void prepare(PlayerPrepareTeleportEvent event)
{
event.GetPlayer().setGameMode(GameMode.SURVIVAL);
event.GetPlayer().setAllowFlight(true);
event.GetPlayer().setFlying(true);
event.GetPlayer().setFlySpeed(0.04f);
}
@EventHandler
public void blockDamage(BlockDamageEvent event)
{
if (!IsLive())
return;
if(!Recharge.Instance.usable(event.getPlayer(), "Block Break"))
return;
Block block = event.getBlock();
BlockBreakEvent breakEvent = new BlockBreakEvent(block, event.getPlayer());
Bukkit.getPluginManager().callEvent(breakEvent);
if (breakEvent.isCancelled())
return;
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getTypeId());
block.setTypeId(0);
Recharge.Instance.use(event.getPlayer(), "Block Break", 100, false, false);
}
@EventHandler
public void keepBlocks(BlockPlaceEvent event)
{
if (!IsLive())
return;
ItemStack item = event.getPlayer().getItemInHand().clone();
int slot = event.getPlayer().getInventory().getHeldItemSlot();
event.getPlayer().getInventory().setItem(slot, item);
}
@EventHandler
public void giveBlocks(GameStateChangeEvent event)
@ -94,7 +192,7 @@ public class DukesOfDecoration extends Build
{
for (Material mat : _blocks)
{
UtilInv.insert(player, new ItemStack(mat));
UtilInv.insert(player, buildingBlock(new ItemStack(mat)));
}
UtilPlayer.message(player, F.main("Game", "You have been given your building blocks. If you want to get them once again type " + F.game("/giveblocks")));
@ -107,15 +205,28 @@ public class DukesOfDecoration extends Build
public void placeBlock(BlockPlaceEvent event)
{
if (!_blocks.contains(event.getBlockPlaced().getType())
|| (event.getBlockPlaced().getType() == Material.WOOL
|| event.getBlockPlaced().getType() == Material.STAINED_CLAY
|| event.getBlockPlaced().getType() == Material.STAINED_GLASS
|| (event.getBlockPlaced().getType() == Material.WOOL && event.getBlock().getData() != 0
|| event.getBlockPlaced().getType() == Material.STAINED_CLAY && event.getBlock().getData() != 0
|| event.getBlockPlaced().getType() == Material.STAINED_GLASS && event.getBlock().getData() != 0
|| event.getBlockPlaced().getType() == Material.STAINED_GLASS_PANE && event.getBlock().getData() != 0))
{
event.setCancelled(true);
UtilPlayer.message(event.getPlayer(), F.main("Game", "You can not place this Block"));
}
}
private ItemStack buildingBlock(ItemStack item)
{
ItemMeta meta = item.getItemMeta();
ChatColor color = ChatColor.values()[UtilMath.r(14)];
if(color == ChatColor.BLACK || color == ChatColor.GRAY || color == ChatColor.DARK_GRAY || color == ChatColor.WHITE)
color = ChatColor.RED;
meta.setLore(Arrays.asList(new String[]{color + "" + ChatColor.BOLD + "Building block"}));
item.setItemMeta(meta);
return item;
}
@Override
public String GetMode()

View File

@ -54,11 +54,12 @@ public class OverpoweredGladiators extends Gladiators
p.getInventory().setArmorContents(null);
p.getInventory().setItem(layout.getRod(), UtilItem.makeUnbreakable(type.getLoadout().getRod()));
p.getInventory().setItem(layout.getBow(), type.getLoadout().getBow());
p.getInventory().setItem(layout.getArrows(), new ItemStack(Material.ARROW, round * 5));
ItemStack sword = new ItemStack(Material.DIAMOND_SWORD);
ItemStack bow = new ItemStack(Material.BOW);
ItemStack helmet = new ItemStack(Material.DIAMOND_HELMET);
ItemStack chest = new ItemStack(Material.DIAMOND_CHESTPLATE);
ItemStack leggings = new ItemStack(Material.DIAMOND_LEGGINGS);
@ -68,6 +69,7 @@ public class OverpoweredGladiators extends Gladiators
if (round != 0)
{
sword.addEnchantment(Enchantment.DAMAGE_ALL, round);
bow.addEnchantment(Enchantment.ARROW_DAMAGE, round);
helmet.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, round);
chest.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, round);
leggings.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, round);
@ -75,11 +77,13 @@ public class OverpoweredGladiators extends Gladiators
}
p.getInventory().setItem(layout.getSword(), UtilItem.makeUnbreakable(sword));
p.getInventory().setItem(layout.getBow(), UtilItem.makeUnbreakable(bow));
p.getInventory().setHelmet(helmet);
p.getInventory().setChestplate(chest);
p.getInventory().setLeggings(leggings);
p.getInventory().setBoots(boots);
p.getInventory().setHelmet(UtilItem.makeUnbreakable(helmet));
p.getInventory().setChestplate(UtilItem.makeUnbreakable(chest));
p.getInventory().setLeggings(UtilItem.makeUnbreakable(leggings));
p.getInventory().setBoots(UtilItem.makeUnbreakable(boots));
if (round >= 4)
{

View File

@ -285,16 +285,20 @@ public class HideSeek extends TeamGame
}
};
public HideSeek(ArcadeManager manager)
public HideSeek(ArcadeManager manager)
{
super(manager, GameType.HideSeek,
new Kit[]
{
new KitHiderSwapper(manager), new KitHiderQuick(manager), new KitHiderShocker(manager),
new KitHiderTeleporter(manager), new NullKit(manager), new KitSeekerLeaper(manager),
new KitSeekerTNT(manager), new KitSeekerRadar(manager),
},
this(manager,
new Kit[]
{
new KitHiderSwapper(manager), new KitHiderQuick(manager), new KitHiderShocker(manager),
new KitHiderTeleporter(manager), new NullKit(manager), new KitSeekerLeaper(manager),
new KitSeekerTNT(manager), new KitSeekerRadar(manager),
});
}
public HideSeek(ArcadeManager manager, Kit[] kits)
{
super(manager, GameType.HideSeek, kits,
new String[]
{

View File

@ -1,15 +1,14 @@
package nautilus.game.arcade.game.games.hideseek.modes;
import java.util.ArrayList;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.inventory.ItemStack;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTextBottom;
import mineplex.core.common.util.UtilTime;
@ -20,6 +19,12 @@ import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.games.hideseek.HideSeek;
import nautilus.game.arcade.game.games.hideseek.forms.BlockForm;
import nautilus.game.arcade.game.games.hideseek.forms.Form;
import nautilus.game.arcade.game.games.hideseek.kits.KitHiderSwapper;
import nautilus.game.arcade.game.games.hideseek.kits.KitSeekerLeaper;
import nautilus.game.arcade.game.games.hideseek.kits.KitSeekerRadar;
import nautilus.game.arcade.game.games.hideseek.kits.KitSeekerTNT;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.NullKit;
/**
* Countdown
@ -35,7 +40,12 @@ public class Countdown extends HideSeek
public Countdown(ArcadeManager manager)
{
super(manager);
super(manager,
new Kit[]
{
new KitHiderSwapper(manager), new NullKit(manager), new KitSeekerLeaper(manager),
new KitSeekerTNT(manager), new KitSeekerRadar(manager),
});
_changeInterval = 30;
}
@ -55,6 +65,17 @@ public class Countdown extends HideSeek
if(!IsLive())
return;
if (event.getType() == UpdateType.SEC)
{
if(System.currentTimeMillis() > _lastChanged + 25000)
{
for (Player player : UtilServer.getPlayers())
{
player.playSound(player.getLocation(), Sound.NOTE_PLING, 2F, 2F);
}
}
}
if (event.getType() != UpdateType.TICK)
return;
@ -85,7 +106,10 @@ public class Countdown extends HideSeek
for (Player player : GetPlayers(true))
{
if(!getForms().containsKey(player))
{
UtilPlayer.message(player, F.main("Game", "Hiders have changed forms!"));
continue;
}
getForms().get(player).Remove();

View File

@ -30,17 +30,9 @@ public class Micro extends TeamGame
private ArrayList<Block> _blocks = new ArrayList<Block>();
private ArrayList<Block> _glass = new ArrayList<Block>();
public Micro(ArcadeManager manager)
public Micro(ArcadeManager manager, Kit[] kits)
{
super(manager, GameType.Micro,
new Kit[]
{
new KitArcher(manager),
new KitWorker(manager),
new KitFighter(manager)
},
super(manager, GameType.Micro, kits,
new String[]
{
"Small game, big strategy!",
@ -72,6 +64,18 @@ public class Micro extends TeamGame
);
}
public Micro(ArcadeManager manager)
{
this(manager,
new Kit[]
{
new KitArcher(manager),
new KitWorker(manager),
new KitFighter(manager)
});
}
@Override
public void ParseData()
{

View File

@ -0,0 +1,79 @@
package nautilus.game.arcade.game.games.micro.modes;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.games.champions.ChampionsFixes;
import nautilus.game.arcade.game.games.champions.kits.KitAssassin;
import nautilus.game.arcade.game.games.champions.kits.KitBrute;
import nautilus.game.arcade.game.games.champions.kits.KitKnight;
import nautilus.game.arcade.game.games.champions.kits.KitMage;
import nautilus.game.arcade.game.games.champions.kits.KitRanger;
import nautilus.game.arcade.game.games.micro.Micro;
import nautilus.game.arcade.kit.Kit;
/**
* TinnyWinners
*
* @author xXVevzZXx
*/
public class TinnyWinners extends Micro
{
public TinnyWinners(ArcadeManager manager)
{
super(manager,
new Kit[]
{
new KitBrute(manager),
new KitRanger(manager),
new KitKnight(manager),
new KitMage(manager),
new KitAssassin(manager),
});
Manager.GetDamage().UseSimpleWeaponDamage = false;
Manager.getCosmeticManager().setHideParticles(true);
Manager.getClassManager().GetItemFactory().getProximityManager().setProxyLimit(6);
StrictAntiHack = true;
TeamArmor = false;
new ChampionsFixes(this);
manager.enableChampionsModules();
}
@EventHandler
public void end(GameStateChangeEvent event)
{
if (event.GetState() != GameState.End)
return;
Manager.disableChampionsModules();
}
@Override
@EventHandler
public void FoodUpdate(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
for (Player player : GetPlayers(true))
player.setFoodLevel(20);
}
@Override
public String GetMode()
{
return "Tinny Winners";
}
}

View File

@ -1,7 +1,19 @@
package nautilus.game.arcade.game.games.quiver.modes;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
import mineplex.minecraft.game.core.condition.Condition.ConditionType;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.games.quiver.Quiver;
import nautilus.game.arcade.game.games.quiver.kits.KitSlamShot;
import nautilus.game.arcade.game.games.quiver.modes.kits.KitModedLeaper;
import nautilus.game.arcade.kit.Kit;
@ -12,6 +24,8 @@ import nautilus.game.arcade.kit.Kit;
*/
public class BunnyHop extends Quiver
{
private int _arrowAmount;
public BunnyHop(ArcadeManager manager)
{
@ -19,6 +33,61 @@ public class BunnyHop extends Quiver
{
new KitModedLeaper(manager)
});
_arrowAmount = 2;
}
@Override
@EventHandler(priority = EventPriority.HIGH)
public void GameStateChange(GameStateChangeEvent event)
{
if (event.GetState() != GameState.Live)
return;
for (Player player : GetPlayers(true))
{
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(262, (byte)0, 2, F.item("Super Arrow")));
player.playSound(player.getLocation(), Sound.PISTON_EXTEND, 3f, 2f);
}
}
@Override
@EventHandler
public void Death(CombatDeathEvent event)
{
if (event.GetEvent().getEntity() instanceof Player)
{
getDeathTime().put((Player) event.GetEvent().getEntity(), System.currentTimeMillis());
}
if (event.GetLog().GetKiller() == null)
return;
if (!event.GetLog().GetKiller().IsPlayer())
return;
Player player = UtilPlayer.searchExact(event.GetLog().GetKiller().GetName());
if (player == null)
return;
int amount = _arrowAmount;
if (GetKit(player) instanceof KitSlamShot)
{
if (Manager.GetCondition().HasCondition(event.GetEvent().getEntity(),
ConditionType.FALLING, null))
{
amount = _arrowAmount * 2;
}
}
//New Arrow
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(262, (byte) 0, amount,
F.item("Super Arrow")));
player.playSound(player.getLocation(), Sound.PISTON_EXTEND, 3f, 2f);
//Score
AddKill(player);
}
@Override

View File

@ -323,6 +323,11 @@ public class Runner extends SoloGame implements IThrown
BlockSmash(data.GetThrown());
}
public HashMap<Block, Long> getBlocks()
{
return _blocks;
}
@Override
public void Idle(ProjectileUser data)

View File

@ -1,10 +1,18 @@
package nautilus.game.arcade.game.games.runner.modes;
import java.util.HashSet;
import java.util.Iterator;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.FallingBlock;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import mineplex.core.common.util.MapUtil;
import mineplex.core.common.util.UtilTime;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import nautilus.game.arcade.ArcadeManager;
@ -37,6 +45,71 @@ public class FasterThanLight extends Runner
player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 40, 2, true, true), true);
}
}
@Override
@EventHandler
public void BlockBreak(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
if (!IsLive())
return;
//Add Blocks
for (Player player : GetPlayers(true))
{
//Side Standing
double xMod = player.getLocation().getX() % 1;
if (player.getLocation().getX() < 0)
xMod += 1;
double zMod = player.getLocation().getZ() % 1;
if (player.getLocation().getZ() < 0)
zMod += 1;
int xMin = 0;
int xMax = 0;
int zMin = 0;
int zMax = 0;
if (xMod < 0.3) xMin = -1;
if (xMod > 0.7) xMax = 1;
if (zMod < 0.3) zMin = -1;
if (zMod > 0.7) zMax = 1;
for (int x=xMin ; x<=xMax ; x++)
{
for (int z=zMin ; z<=zMax ; z++)
{
AddBlock(player.getLocation().add(x, -0.5, z).getBlock());
}
}
}
//Decay
HashSet<Block> readd = new HashSet<Block>();
Iterator<Block> blockIterator = getBlocks().keySet().iterator();
while (blockIterator.hasNext())
{
Block block = blockIterator.next();
if (!UtilTime.elapsed(getBlocks().get(block), 250))
continue;
//Fall
int id = block.getTypeId();
byte data = block.getData();
MapUtil.QuickChangeBlockAt(block.getLocation(), Material.AIR);
FallingBlock ent = block.getWorld().spawnFallingBlock(block.getLocation(), id, data);
Manager.GetProjectile().AddThrow(ent, null, this, -1, true, false, false, false, 0.3f);
blockIterator.remove();
}
}
@Override
public String GetMode()

View File

@ -58,7 +58,6 @@ public class OverpoweredSkywars extends TeamSkywars
for (int i=0 ; i<1 + UtilMath.r(2) ; i++)
{
ItemStack item = _playerArmor.getLoot();
item.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1 + UtilMath.r(3));
chest.getBlockInventory().setItem(getIndex(used), item);
}
//Food
@ -155,6 +154,8 @@ public class OverpoweredSkywars extends TeamSkywars
_playerProjectile.addLoot(new RandomItem(Material.ARROW, 18, 2, 8));
_playerProjectile.addLoot(new RandomItem(Material.SNOW_BALL, 60, 2, 5));
_playerProjectile.addLoot(new RandomItem(Material.EGG, 60, 2, 5));
_playerProjectile.addLoot(new RandomItem(Material.ENDER_PEARL, 20, 2, 5));
_playerProjectile.addLoot(new RandomItem(Material.LAVA_BUCKET, 20, 1, 1));
//Block
_playerBlock.addLoot(new RandomItem(Material.COBBLESTONE, 30, 8, 16));

View File

@ -0,0 +1,63 @@
package nautilus.game.arcade.game.games.skywars.modes;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.game.games.skywars.SoloSkywars;
/**
* UHCSkywars
*
* @author xXVevzZXx
*/
public class UHCSkywars extends SoloSkywars
{
public UHCSkywars(ArcadeManager manager)
{
super(manager);
}
@EventHandler
public void registerObj(GameStateChangeEvent event)
{
if(event.GetState() != GameState.Prepare)
return;
Objective objective = Scoreboard.GetScoreboard().registerNewObjective("Health", "health");
objective.setDisplaySlot(DisplaySlot.PLAYER_LIST);
}
@EventHandler
public void regenHealth(EntityRegainHealthEvent event)
{
if(event.getRegainReason() == RegainReason.SATIATED)
event.setCancelled(true);
}
@EventHandler
public void gappleDrop(EntityDeathEvent event)
{
if(event.getEntity() instanceof Player)
{
event.getDrops().add(new ItemStack(Material.GOLDEN_APPLE));
}
}
@Override
public String GetMode()
{
return "UHC Skywars";
}
}

View File

@ -15,6 +15,7 @@ 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.kit.Kit;
import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.managers.chat.ChatStatData;
@ -47,6 +48,30 @@ public class SoloSuperSmash extends SuperSmash
);
}
public SoloSuperSmash(ArcadeManager manager, Kit[] kits)
{
super(manager, kits, GameType.Smash, new String[]
{
"Each player has 3 respawns",
"Attack to restore hunger!",
"Last player alive wins!"
});
this.DamageTeamSelf = true;
registerChatStats(
Kills,
Deaths,
KDRatio,
BlankLine,
Assists,
DamageTaken,
DamageDealt,
BlankLine,
new ChatStatData("kit", "Kit", true)
);
}
@EventHandler
public void CustomTeamGeneration(GameStateChangeEvent event)
{

View File

@ -85,7 +85,7 @@ public abstract class SuperSmash extends Game
public SuperSmash(ArcadeManager manager, GameType type, String[] description)
{
super(manager, type,
this(manager,
new Kit[]
{
@ -114,7 +114,12 @@ public abstract class SuperSmash extends Game
new KitSheep(manager)
},description);
}, type, description);
}
public SuperSmash(ArcadeManager manager, Kit[] kits, GameType type, String[] description)
{
super(manager, type, kits, description);
this.DeathOut = false;
@ -493,4 +498,9 @@ public abstract class SuperSmash extends Game
int amount = Math.max(1, (int)(event.GetDamage()/2));
UtilPlayer.hunger(damager, amount);
}
public HashMap<Player, Integer> getLiveMap()
{
return _lives;
}
}

View File

@ -0,0 +1,157 @@
package nautilus.game.arcade.game.games.smash.modes;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityDeathEvent;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilServer;
import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.games.smash.SoloSuperSmash;
import nautilus.game.arcade.game.games.smash.kits.KitBlaze;
import nautilus.game.arcade.game.games.smash.kits.KitChicken;
import nautilus.game.arcade.game.games.smash.kits.KitCow;
import nautilus.game.arcade.game.games.smash.kits.KitCreeper;
import nautilus.game.arcade.game.games.smash.kits.KitEnderman;
import nautilus.game.arcade.game.games.smash.kits.KitGolem;
import nautilus.game.arcade.game.games.smash.kits.KitMagmaCube;
import nautilus.game.arcade.game.games.smash.kits.KitPig;
import nautilus.game.arcade.game.games.smash.kits.KitSheep;
import nautilus.game.arcade.game.games.smash.kits.KitSkeletalHorse;
import nautilus.game.arcade.game.games.smash.kits.KitSkeleton;
import nautilus.game.arcade.game.games.smash.kits.KitSkySquid;
import nautilus.game.arcade.game.games.smash.kits.KitSlime;
import nautilus.game.arcade.game.games.smash.kits.KitSnowman;
import nautilus.game.arcade.game.games.smash.kits.KitSpider;
import nautilus.game.arcade.game.games.smash.kits.KitWitch;
import nautilus.game.arcade.game.games.smash.kits.KitWitherSkeleton;
import nautilus.game.arcade.game.games.smash.kits.KitWolf;
import nautilus.game.arcade.game.games.smash.kits.KitZombie;
import nautilus.game.arcade.game.games.smash.modes.kits.KitPlayer;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.SmashKit;
/**
* RandomKitSSM
*
* @author xXVevzZXx
*/
public class RandomKitSSM extends SoloSuperSmash
{
private Kit[] _kits;
private int _maxLives;
public RandomKitSSM(ArcadeManager manager)
{
super(manager, new Kit[]{new KitPlayer(manager)});
_maxLives = 10;
_kits = new Kit[]
{
new KitSkeleton(manager),
new KitGolem(manager),
new KitSpider(manager),
new KitSlime(manager),
new KitCreeper(manager),
new KitEnderman(manager),
new KitSnowman(manager),
new KitWolf(manager),
new KitBlaze(manager),
new KitWitch(manager),
new KitChicken(manager),
new KitSkeletalHorse(manager),
new KitPig(manager),
new KitSkySquid(manager),
new KitWitherSkeleton(manager),
new KitMagmaCube(manager),
new KitZombie(manager),
new KitCow(manager),
new KitSheep(manager)
};
}
@Override
@EventHandler(priority = EventPriority.HIGH)
public void GameStateChange(GameStateChangeEvent event)
{
super.GameStateChange(event);
if (event.GetState() != GameState.Prepare)
return;
for (Player player : GetPlayers(true))
{
getLiveMap().put(player, _maxLives);
Kit kit = _kits[UtilMath.r(_kits.length)];
SetKit(player, kit, true);
}
}
@EventHandler
public void KitRegister(GameStateChangeEvent event)
{
if (event.GetState() != event.GetGame().KitRegisterState)
return;
for (Kit kit : _kits)
{
UtilServer.getServer().getPluginManager().registerEvents(kit, Manager.getPlugin());
for (Perk perk : kit.GetPerks())
{
UtilServer.getServer().getPluginManager().registerEvents(perk, Manager.getPlugin());
perk.registeredEvents();
}
}
}
@EventHandler
public void end(GameStateChangeEvent event)
{
if (event.GetState() != GameState.Dead)
return;
for (Kit kit : _kits)
{
HandlerList.unregisterAll(kit);
for (Perk perk : kit.GetPerks())
{
HandlerList.unregisterAll(perk);
perk.unregisteredEvents();
}
}
}
@EventHandler
public void kitSwitch(EntityDeathEvent event)
{
if (!(event.getEntity() instanceof Player))
return;
Kit kit = _kits[UtilMath.r(_kits.length)];
SetKit((Player) event.getEntity(), kit, true);
}
@Override
public String GetMode()
{
return "Random Kit SSM";
}
}

View File

@ -0,0 +1,47 @@
package nautilus.game.arcade.game.games.smash.modes.kits;
import org.bukkit.Material;
import org.bukkit.Sound;
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.KitAvailability;
import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.SmashKit;
/**
* KitPlayer
*
* @author xXVevzZXx
*/
public class KitPlayer extends SmashKit
{
public KitPlayer(ArcadeManager manager)
{
super(manager, "Hipster", KitAvailability.Free, 0,
new String[]{"Always get another kit!"}, new Perk[]{}, EntityType.ZOMBIE, new ItemStack(Material.RECORD_10), "Super",
1, Sound.BURP);
}
@Override
public void giveCoreItems(Player player)
{
}
@Override
public void giveSuperItems(Player player)
{
}
@Override
public void GiveItems(Player player)
{
}
}

View File

@ -1,8 +1,13 @@
package nautilus.game.arcade.game.games.survivalgames.modes;
import java.util.Arrays;
import org.bukkit.Material ;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilMath;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.loot.RandomItem;
import nautilus.game.arcade.ArcadeManager;
@ -44,7 +49,7 @@ public class OverpoweredSurvival extends SoloSurvivalGames
// Throwable
getBaseLoot().addLoot(new RandomItem(Material.FISHING_ROD, 30));
getBaseLoot().addLoot(new RandomItem(Material.BOW, 20));
getBaseLoot().addLoot(new RandomItem(Material.ARROW, 20, 1, 3));
getBaseLoot().addLoot(new RandomItem(Material.ARROW, 40, 4, 12));
// Misc
getBaseLoot().addLoot(new RandomItem(Material.EXP_BOTTLE, 40, 5, 20));
@ -79,15 +84,19 @@ public class OverpoweredSurvival extends SoloSurvivalGames
// Supply crate loot
// Diamond gear
getCrateLoot().addLoot(new RandomItem(Material.DIAMOND_HELMET, 30));
getCrateLoot().addLoot(new RandomItem(Material.DIAMOND_CHESTPLATE, 30));
getCrateLoot().addLoot(new RandomItem(Material.DIAMOND_LEGGINGS, 30));
getCrateLoot().addLoot(new RandomItem(Material.DIAMOND_BOOTS, 30));
// Weapons
getCrateLoot().addLoot(new RandomItem(Material.DIAMOND_SWORD, 24));
getCrateLoot().addLoot(new RandomItem(Material.DIAMOND_AXE, 16));
int e = 4;
for (int i = 1; i < 4; i++)
{
getCrateLoot().addLoot(new RandomItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_HELMET.getId(), (byte )0, 1, (short) 0, null, Arrays.asList(new String[]{}), null, false, i, Enchantment.PROTECTION_ENVIRONMENTAL), e*10));
getCrateLoot().addLoot(new RandomItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_CHESTPLATE.getId(), (byte )0, 1, (short) 0, null, Arrays.asList(new String[]{}), null, false, i, Enchantment.PROTECTION_ENVIRONMENTAL), e*10));
getCrateLoot().addLoot(new RandomItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_LEGGINGS.getId(), (byte )0, 1, (short) 0, null, Arrays.asList(new String[]{}), null, false, i, Enchantment.PROTECTION_ENVIRONMENTAL), e*10));
getCrateLoot().addLoot(new RandomItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_BOOTS.getId(), (byte )0, 1, (short) 0, null, Arrays.asList(new String[]{}), null, false, i, Enchantment.PROTECTION_ENVIRONMENTAL), e*10));
// Weapons
getCrateLoot().addLoot(new RandomItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_SWORD.getId(), (byte )0, 1, (short) 0, null, Arrays.asList(new String[]{}), null, false, i, Enchantment.DAMAGE_ALL), e*10));
getCrateLoot().addLoot(new RandomItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_AXE.getId(), (byte )0, 1, (short) 0, null, Arrays.asList(new String[]{}), null, false, i, Enchantment.DAMAGE_ALL), e*10));
e--;
}
// Cooked furnace
getFurnace().addLoot(new RandomItem(Material.COOKED_BEEF, 3, 1, 2));
getFurnace()

View File

@ -0,0 +1,62 @@
package nautilus.game.arcade.game.games.survivalgames.modes;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.games.survivalgames.SoloSurvivalGames;
/**
* UHCSurvivalgames
*
* @author xXVevzZXx
*/
public class UHCSurvivalgames extends SoloSurvivalGames
{
public UHCSurvivalgames(ArcadeManager manager)
{
super(manager);
}
@EventHandler
public void registerObj(GameStateChangeEvent event)
{
if(event.GetState() != GameState.Prepare)
return;
Objective objective = Scoreboard.GetScoreboard().registerNewObjective("Health", "health");
objective.setDisplaySlot(DisplaySlot.PLAYER_LIST);
}
@EventHandler
public void regenHealth(EntityRegainHealthEvent event)
{
if(event.getRegainReason() == RegainReason.SATIATED)
event.setCancelled(true);
}
@EventHandler
public void gappleDrop(EntityDeathEvent event)
{
if(event.getEntity() instanceof Player)
{
event.getDrops().add(new ItemStack(Material.GOLDEN_APPLE));
}
}
@Override
public String GetMode()
{
return "UHC Survivalagmes";
}
}