Remove all Brawls and change how they work

This commit is contained in:
Sam 2018-07-10 16:25:11 +01:00 committed by Alexander Meech
parent f34bdd64d3
commit 4873ac7b74
43 changed files with 115 additions and 4823 deletions

View File

@ -48,15 +48,14 @@ public class ParticleFiveYear extends ParticleGadget
return;
}
Location location = player.getLocation().add(0, 1, 0);
if (Manager.isMoving(player))
{
new BabyFireworkEffect(location, Color.ORANGE, 1)
new BabyFireworkEffect(player.getLocation().add(0, 0.3, 0), Color.ORANGE, Color.BLACK)
.start();
}
else
{
Location location = player.getLocation().add(0, 1, 0);
location.setPitch(0);
Vector direction = location.getDirection();
location.add(UtilAlg.getRight(direction).multiply(0.3));

View File

@ -1,7 +1,6 @@
package nautilus.game.arcade;
import java.io.File;
import java.util.HashMap;
import net.minecraft.server.v1_8_R3.MinecraftServer;
@ -271,40 +270,22 @@ public class Arcade extends JavaPlugin
{
try
{
System.out.println(gameName);
System.out.println("Found GameType: " + gameName);
GameType type = GameType.valueOf(gameName);
config.GameList.add(type);
}
catch (Exception e)
catch (IllegalArgumentException e)
{
System.out.println("Error reading GameType values : " + gameName);
}
}
try
for (String gameMode : _serverConfiguration.getServerGroup().getModes().split(","))
{
if(_serverConfiguration.getServerGroup().getModes() != null)
{
if(_serverConfiguration.getServerGroup().getModes().contains(","))
{
for (String modeName : _serverConfiguration.getServerGroup().getModes().split(","))
{
addGamemode(modeName, config);
System.out.println("Found GameMode: " + gameMode);
config.GameModeList.add(gameMode);
}
}
else
{
addGamemode(_serverConfiguration.getServerGroup().getModes(), config);
}
}
}
catch (Exception ex)
{
System.out.println("Error reading Gamemode variable values : ");
ex.printStackTrace();
}
}
catch (Exception ex)
{
System.out.println("Error reading ServerConfiguration values : " + ex.getMessage());
@ -354,37 +335,4 @@ public class Arcade extends JavaPlugin
System.out.println("Deleted Old Game: " + file.getName());
}
}
private void addGamemode(String gamemode, GameServerConfig config)
{
String mode = gamemode.split("\\{")[0];
System.out.println(mode);
config.GameModeList.add(mode);
String mods = gamemode.split("\\{")[1];
mods = mods.replace("}", "");
config.GameModeMods.put(mode, new HashMap<>());
if (mods.contains(";"))
{
for (String varSet : mods.split(";"))
{
String var = varSet.split("=")[0];
String value = varSet.split("=")[1];
config.GameModeMods.get(mode).put(var, value);
}
}
else
{
String var = mods.split("=")[0];
String value = mods.split("=")[1];
config.GameModeMods.get(mode).put(var, value);
}
}
public ServerConfiguration getServerConfig()
{
return _serverConfiguration;
}
}

View File

@ -4,88 +4,42 @@ import mineplex.core.common.MinecraftVersion;
import mineplex.core.common.Pair;
import nautilus.game.arcade.game.Game;
/**
* This Object represents a Gamemode used in the GameType constructor
*
* @author xXVevzZXx
*/
public class GameMode
{
private Class<? extends Game> _gameMode;
private GameType _gameType;
private String _name;
private final Class<? extends Game> _gameMode;
private final String _name;
private final Pair<MinecraftVersion, String>[] _resourcePackUrls;
private final boolean _enforceResourcePack;
private Pair<MinecraftVersion, String>[] _resourcePackUrls;
private boolean _enforceResourcePack;
/**
*
* @param gameMode Game class that in most cases extends the host game class
* @param name Gamemode name
*/
public GameMode(Class<? extends Game> gameMode, GameType gameType, String name)
public GameMode(Class<? extends Game> gameMode, String name)
{
this(gameMode, gameType, name, null, false);
this(gameMode, name, null, false);
}
/**
*
* @param gameMode Game class that in most cases extends the host game class
* @param gameType original GameType of modded game
* @param name Gamemode name
* @param resourcePackUrls URLs to 1.8/1.9 resource pack
* @param enforceResourcePack enforece resource pack on players
*/
public GameMode(Class<? extends Game> gameMode, GameType gameType, String name, Pair<MinecraftVersion, String>[] resourcePackUrls, boolean enforceResourcePack)
public GameMode(Class<? extends Game> gameMode, String name, Pair<MinecraftVersion, String>[] resourcePackUrls, boolean enforceResourcePack)
{
_gameMode = gameMode;
_gameType = gameType;
_name = name;
_resourcePackUrls = resourcePackUrls;
_enforceResourcePack = enforceResourcePack;
}
/**
*
* @return Game class
*/
public Class<? extends Game> getGameClass()
{
return _gameMode;
}
/**
*
* @return Gamemode name
*/
public String getName()
{
return _name;
}
/**
*
* @return Gamemode gametype
*/
public GameType getType()
{
return _gameType;
}
/**
*
* @return Gamemode resource pack URLs
*/
public Pair<MinecraftVersion, String>[] getResPackURLs()
{
return _resourcePackUrls;
}
/**
*
* @return Gamemode enforcing of resource packs
*/
public boolean enforceResourcePack()
{
return _enforceResourcePack;

View File

@ -16,15 +16,8 @@ import nautilus.game.arcade.game.games.basketball.Basketball;
import nautilus.game.arcade.game.games.battleroyale.BattleRoyaleSolo;
import nautilus.game.arcade.game.games.bossbattles.BossBattles;
import nautilus.game.arcade.game.games.bridge.Bridge;
import nautilus.game.arcade.game.games.bridge.modes.AppleAttack;
import nautilus.game.arcade.game.games.bridge.modes.InsaneBridges;
import nautilus.game.arcade.game.games.bridge.modes.LuckyBridges;
import nautilus.game.arcade.game.games.bridge.modes.OverpoweredBridge;
import nautilus.game.arcade.game.games.bridge.modes.SpeedBridges;
import nautilus.game.arcade.game.games.bridge.modes.UHCBridges;
import nautilus.game.arcade.game.games.build.Build;
import nautilus.game.arcade.game.games.build.modes.DukesOfDecoration;
import nautilus.game.arcade.game.games.build.modes.TeamBuild;
import nautilus.game.arcade.game.games.buildmavericks.BuildMavericks;
import nautilus.game.arcade.game.games.cakewars.CakeWars;
import nautilus.game.arcade.game.games.cakewars.modes.CakeWarsDuos;
@ -34,7 +27,6 @@ import nautilus.game.arcade.game.games.castlesiegenew.CastleSiegeNew;
import nautilus.game.arcade.game.games.champions.ChampionsCTF;
import nautilus.game.arcade.game.games.champions.ChampionsDominate;
import nautilus.game.arcade.game.games.champions.ChampionsTDM;
import nautilus.game.arcade.game.games.champions.modes.SmashDom;
import nautilus.game.arcade.game.games.christmas.Christmas;
import nautilus.game.arcade.game.games.christmasnew.ChristmasNew;
import nautilus.game.arcade.game.games.deathtag.DeathTag;
@ -45,20 +37,15 @@ import nautilus.game.arcade.game.games.draw.Draw;
import nautilus.game.arcade.game.games.event.EventGame;
import nautilus.game.arcade.game.games.evolution.Evolution;
import nautilus.game.arcade.game.games.gladiators.Gladiators;
import nautilus.game.arcade.game.games.gladiators.modes.ChampionsGladiators;
import nautilus.game.arcade.game.games.gladiators.modes.OverpoweredGladiators;
import nautilus.game.arcade.game.games.gladiators.modes.SmashGladiators;
import nautilus.game.arcade.game.games.gravity.Gravity;
import nautilus.game.arcade.game.games.halloween.Halloween;
import nautilus.game.arcade.game.games.halloween2016.Halloween2016;
import nautilus.game.arcade.game.games.hideseek.HideSeek;
import nautilus.game.arcade.game.games.hideseek.modes.Countdown;
import nautilus.game.arcade.game.games.lobbers.BombLobbers;
import nautilus.game.arcade.game.games.micro.Micro;
import nautilus.game.arcade.game.games.milkcow.MilkCow;
import nautilus.game.arcade.game.games.minecraftleague.MinecraftLeague;
import nautilus.game.arcade.game.games.minestrike.Minestrike;
import nautilus.game.arcade.game.games.minestrike.modes.SuperPaintstrike;
import nautilus.game.arcade.game.games.mineware.BawkBawkBattles;
import nautilus.game.arcade.game.games.moba.MobaClassic;
import nautilus.game.arcade.game.games.monstermaze.MonsterMaze;
@ -67,26 +54,17 @@ import nautilus.game.arcade.game.games.paintball.Paintball;
import nautilus.game.arcade.game.games.quiver.Quiver;
import nautilus.game.arcade.game.games.quiver.QuiverTeamBase;
import nautilus.game.arcade.game.games.quiver.QuiverTeams;
import nautilus.game.arcade.game.games.quiver.modes.BunnyHop;
import nautilus.game.arcade.game.games.quiver.modes.UltimateOITQ;
import nautilus.game.arcade.game.games.rings.ElytraRings;
import nautilus.game.arcade.game.games.runner.Runner;
import nautilus.game.arcade.game.games.sheep.SheepGame;
import nautilus.game.arcade.game.games.sheep.modes.EweHeroes;
import nautilus.game.arcade.game.games.sheep.modes.OverpoweredSheepQuest;
import nautilus.game.arcade.game.games.sheep.modes.SheepMania;
import nautilus.game.arcade.game.games.sheep.modes.SmashSheep;
import nautilus.game.arcade.game.games.skyfall.SoloSkyfall;
import nautilus.game.arcade.game.games.skyfall.TeamSkyfall;
import nautilus.game.arcade.game.games.skywars.SoloSkywars;
import nautilus.game.arcade.game.games.skywars.TeamSkywars;
import nautilus.game.arcade.game.games.skywars.modes.SkySmash;
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.SuperSmashTraining;
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;
@ -101,9 +79,6 @@ import nautilus.game.arcade.game.games.uhc.UHCSolo;
import nautilus.game.arcade.game.games.uhc.UHCSoloSpeed;
import nautilus.game.arcade.game.games.uhc.UHCTeams;
import nautilus.game.arcade.game.games.uhc.UHCTeamsSpeed;
import nautilus.game.arcade.game.games.uhc.modes.Assassins;
import nautilus.game.arcade.game.games.uhc.modes.BloodDiamonds;
import nautilus.game.arcade.game.games.uhc.modes.GodBattles;
import nautilus.game.arcade.game.games.valentines.Valentines;
import nautilus.game.arcade.game.games.wither.WitherGame;
import nautilus.game.arcade.game.games.wizards.Wizards;
@ -117,7 +92,10 @@ public enum GameType implements Voteable
Barbarians(Barbarians.class, GameDisplay.Barbarians),
Basketball(Basketball.class, GameDisplay.Basketball),
BossBattles(BossBattles.class, GameDisplay.BossBattles),
Bridge(Bridge.class, GameDisplay.Bridge),
Bridge(Bridge.class, new GameMode[]
{
new GameMode(OverpoweredBridge.class, "OP Bridges"),
}, GameDisplay.Bridge),
CastleAssault(CastleAssault.class, GameDisplay.CastleAssault),
CastleAssaultTDM(CastleAssaultTDM.class, GameDisplay.CastleAssaultTDM),
CastleSiege(CastleSiegeNew.class, GameDisplay.CastleSiege),
@ -239,40 +217,7 @@ public enum GameType implements Voteable
GameType.SurvivalGames, GameType.SurvivalGamesTeams, GameType.TurfWars, GameType.UHC,
GameType.WitherAssault, GameType.Wizards, GameType.ZombieSurvival}, true),
Brawl(null, new GameMode[]{
new GameMode(OverpoweredBridge.class, GameType.Bridge, "OP Bridges"),
new GameMode(SpeedBridges.class, GameType.Bridge, "Speed Bridges"),
new GameMode(LuckyBridges.class, GameType.Bridge, "Lucky Bridges"),
new GameMode(AppleAttack.class, GameType.Bridge, "Apple Attack"),
new GameMode(UHCBridges.class, GameType.Bridge, "UHC Bridges"),
new GameMode(InsaneBridges.class, GameType.Bridge, "Insane Bridges"),
new GameMode(OverpoweredGladiators.class, GameType.Gladiators, "OP Gladiators"),
new GameMode(ChampionsGladiators.class, GameType.Gladiators, "Champions Gladiators"),
new GameMode(SmashGladiators.class, GameType.Gladiators, "Smash Gladiators"),
new GameMode(UHCSkywars.class, GameType.Skywars, "UHC Skywars"),
new GameMode(SkySmash.class, GameType.Skywars, "Sky Smash"),
new GameMode(TeamBuild.class, GameType.Build, "Team Master Builders"),
new GameMode(DukesOfDecoration.class, GameType.Build, "Dukes Of Decoration"),
new GameMode(GodBattles.class, GameType.UHC, "God Battles"),
new GameMode(BloodDiamonds.class, GameType.UHC, "Blood Diamonds"),
new GameMode(Assassins.class, GameType.UHC, "Assassins"),
new GameMode(RandomKitSSM.class, GameType.Smash, "Random Kit SSM"),
new GameMode(EweHeroes.class, GameType.Sheep, "Heroes Of The Ewe"),
new GameMode(SheepMania.class, GameType.Sheep, "Sheep Mania"),
new GameMode(SmashSheep.class, GameType.Sheep, "Smash Sheep"),
new GameMode(OverpoweredSheepQuest.class, GameType.Sheep, "OP Sheep Quest"),
new GameMode(BunnyHop.class, GameType.Quiver, "Bunny Hop"),
new GameMode(UltimateOITQ.class, GameType.Quiver, "Ultimate OITQ"),
new GameMode(Countdown.class, GameType.HideSeek, "Countdown"),
new GameMode(SmashDom.class, GameType.ChampionsDominate, "Smash Dominate"),
new GameMode(SuperPaintstrike.class, GameType.MineStrike, "Super Paintstrike", new Pair[]
{
//Pair.create(MinecraftVersion.Version1_8, "http://file.mineplex.com/ResMinestrike.zip"),
//Pair.create(MinecraftVersion.Version1_9, "http://file.mineplex.com/ResMinestrike19.zip")
Pair.create(MinecraftVersion.Version1_8, "http://198.20.72.74/ResMinestrike.zip"),
Pair.create(MinecraftVersion.Version1_9, "http://198.20.72.74/ResMinestrike19.zip")
}, true),
}, GameDisplay.Brawl, null, false, null, false, true);
;
GameDisplay _display;
boolean _enforceResourcePack;
@ -342,20 +287,16 @@ public enum GameType implements Voteable
public boolean isEnforceResourcePack(Game game)
{
if (hasGamemodes())
{
return getGameMode(game.getClass()).enforceResourcePack();
}
return _enforceResourcePack;
GameMode gameMode = getGameMode(game.getClass());
return gameMode == null ? _enforceResourcePack : gameMode.enforceResourcePack();
}
public Pair<MinecraftVersion, String>[] getResourcePackUrls(Game game)
{
if (hasGamemodes())
{
return getGameMode(game.getClass()).getResPackURLs();
}
return _resourcePacks;
GameMode gameMode = getGameMode(game.getClass());
return gameMode == null ? _resourcePacks : gameMode.getResPackURLs();
}
public GameType[] getMapSource()
@ -373,6 +314,7 @@ public enum GameType implements Voteable
return this._display;
}
@Override
public String getName()
{
return _display.getName();
@ -403,25 +345,16 @@ public enum GameType implements Voteable
{
for (GameMode mode : getGameModes())
{
if (mode.getGameClass() != null && mode.getGameClass().getName().contentEquals(game.getName()))
if (game.equals(mode.getGameClass()))
{
return mode;
}
}
return null;
}
public GameType getModeGameType(Class<? extends Game> game)
{
return getGameMode(game).getType();
}
public boolean isUsingGameModesMaps()
{
return _gameMaps;
}
public boolean hasGamemodes()
public boolean hasGameModes()
{
return _gameModes.length != 0;
}

View File

@ -81,7 +81,7 @@ public class SetCommand extends CommandBase<ArcadeManager>
if (gameModeStr != null)
{
if (!gameType.hasGamemodes())
if (!gameType.hasGameModes())
{
UtilPlayer.message(caller, F.main("Game", "The selected GameType, " + F.elem(game) + ", does not have any GameModes"));
return;
@ -103,14 +103,7 @@ public class SetCommand extends CommandBase<ArcadeManager>
if (mapSourceStr != null)
{
Class<? extends Game> gameClass = gameType.getGameClass();
if (selectedMode != null)
{
gameClass = selectedMode.getGameClass();
}
List<GameType> matchedGameTypes = getSources(gameType, gameClass, mapSourceStr, false);
List<GameType> matchedGameTypes = getSources(gameType, mapSourceStr, false);
if (matchedGameTypes.size() == 0)
{
UtilPlayer.message(caller, F.main("Game", "Could not find a MapSource matching " + F.elem(mapSourceStr)));
@ -127,18 +120,12 @@ public class SetCommand extends CommandBase<ArcadeManager>
if (mapStr != null)
{
Class<? extends Game> gameClass = gameType.getGameClass();
if (selectedMode != null)
{
gameClass = selectedMode.getGameClass();
}
List<String> matchedMaps;
// No particular source specified, we'll use all of them
if (selectedSource == null)
{
List<GameType> mapTypes = Arrays.asList(Game.getWorldHostNames(gameType, gameClass));
List<GameType> mapTypes = Arrays.asList(Game.getWorldHostNames(gameType));
matchedMaps = matchMaps(mapTypes, mapStr, false);
}
else
@ -241,7 +228,7 @@ public class SetCommand extends CommandBase<ArcadeManager>
{
input = input.toLowerCase();
if (!type.hasGamemodes()) return Collections.emptyList();
if (!type.hasGameModes()) return Collections.emptyList();
List<GameMode> matches = new ArrayList<>();
@ -261,9 +248,9 @@ public class SetCommand extends CommandBase<ArcadeManager>
return matches;
}
private List<GameType> getSources(GameType type, Class<? extends Game> gameClass, String input, boolean isTabCompletion)
private List<GameType> getSources(GameType type, String input, boolean isTabCompletion)
{
return matchGameType(input, Game.getWorldHostNames(type, gameClass), isTabCompletion);
return matchGameType(input, Game.getWorldHostNames(type), isTabCompletion);
}
private List<String> matchMaps(List<GameType> source, String input, boolean isTabCompletion)
@ -381,58 +368,25 @@ public class SetCommand extends CommandBase<ArcadeManager>
String lastArg = args[args.length - 1];
if (lastArg.startsWith(MODE_PREFIX))
{
if (gameType.hasGamemodes())
if (gameType.hasGameModes())
{
return matchGameMode(gameType, gameModeStr, true).stream().map(mode -> MODE_PREFIX + mode.getName().replaceAll(" ", "")).collect(Collectors.toList());
}
}
else if (lastArg.startsWith(SOURCE_PREFIX))
{
Class<? extends Game> gameClass = gameType.getGameClass();
if (gameType.hasGamemodes())
{
// If there are gamemodes, you must provide a gamemode type
if (gameModeStr == null)
return null;
List<GameMode> matchedModes = matchGameMode(gameType, gameModeStr, true);
// If more than one mode has been matched, we can't show sources
if (matchedModes.size() != 1)
return null;
gameClass = matchedModes.get(0).getGameClass();
}
return getSources(gameType, gameClass, gameSourceStr, true).stream().map(type -> SOURCE_PREFIX + type.name().replaceAll(" ", "")).collect(Collectors.toList());
return getSources(gameType, gameSourceStr, true).stream().map(type -> SOURCE_PREFIX + type.name().replaceAll(" ", "")).collect(Collectors.toList());
}
else if (lastArg.startsWith(MAP_PREFIX))
{
Class<? extends Game> gameClass = gameType.getGameClass();
if (gameType.hasGamemodes())
{
// If the game has a gamemode, the mode type must be set
if (gameModeStr == null)
return null;
List<GameMode> matchedModes = matchGameMode(gameType, gameModeStr, true);
// If more than one mode has been matched, we can't show maps
if (matchedModes.size() != 1)
return null;
gameClass = matchedModes.get(0).getGameClass();
}
// No particular source specified, we'll use all of them
if (gameSourceStr == null)
{
List<GameType> mapTypes = Arrays.asList(Game.getWorldHostNames(gameType, gameClass));
List<GameType> mapTypes = Arrays.asList(Game.getWorldHostNames(gameType));
return matchMaps(mapTypes, mapStr, true).stream().map(str -> MAP_PREFIX + str).collect(Collectors.toList());
}
List<GameType> sources = getSources(gameType, gameClass, gameSourceStr, true);
List<GameType> sources = getSources(gameType, gameSourceStr, true);
// If a source has been provided, it must be valid
if (sources.size() != 1)

View File

@ -562,7 +562,7 @@ public abstract class Game extends ListenerComponent implements Lifetimed
return _gameType.getName();
}
public static GameType[] getWorldHostNames(GameType targetType, Class<? extends Game> gameMode)
public static GameType[] getWorldHostNames(GameType targetType)
{
GameType[] mapSource = new GameType[]
{
@ -588,15 +588,6 @@ public abstract class Game extends ListenerComponent implements Lifetimed
}
}
if (targetType.isUsingGameModesMaps())
{
GameType mode = targetType.getModeGameType(gameMode);
if (mode.getMapSource() != null)
return mode.getMapSource();
else
return new GameType[]{mode};
}
return mapSource;
}

View File

@ -1,51 +0,0 @@
/*Every GameOption will have SetOption and GetOption methods
* However, since each GameOption class will have a different return type
* and take different parameters, there isn't much need to create any here at this time
*/
package nautilus.game.arcade.game;
import org.bukkit.material.MaterialData;
public class GameOption
{
//Store the name and Description of each option - Literally every GameOption should have these
private String _optionName;
private String _optionDescription;
private MaterialData _optionMaterialData;
public GameOption(String optName, String optDesc)
{
_optionName = optName;
_optionDescription = optDesc;
}
public GameOption(MaterialData _optMat, String optName, String optDesc)
{
_optionName = optName;
_optionDescription = optDesc;
_optionMaterialData = _optMat;
}
//Get methods for name of option and description
public String GetOptionName()
{
return _optionName;
}
public String GetOptionDescription()
{
return _optionDescription;
}
public MaterialData GetOptionMaterialData()
{
if(_optionMaterialData != null)
{
return _optionMaterialData;
}
return null;
}
}

View File

@ -15,10 +15,8 @@ public class GameServerConfig
public String Uptimes;
public ArrayList<GameType> GameList = new ArrayList<>();
public ArrayList<String> GameModeList = new ArrayList<>();
public HashMap<String, HashMap<String, String>> GameModeMods = new HashMap<>();
public final ArrayList<GameType> GameList = new ArrayList<>();
public final ArrayList<String> GameModeList = new ArrayList<>();
//Flags
public String HostName = "";

View File

@ -2118,7 +2118,7 @@ public class Bridge extends TeamGame implements OreObsfucation
}
}
public void setBridgeTime(int time)
public void setBridgeTime(long time)
{
_bridgeTime = time;
}

View File

@ -1,28 +0,0 @@
package nautilus.game.arcade.game.games.bridge.modes;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.game.games.bridge.Bridge;
import nautilus.game.arcade.game.games.bridge.modes.kits.KitBrawlAppler;
import nautilus.game.arcade.kit.Kit;
/**
* AppleAttack is a mode for [{@link Bridge} which will remove all kits except for a custom appler {@link KitBrawlAppler}
*
* @author xXVevzZXx
*/
public class AppleAttack extends Bridge
{
public AppleAttack(ArcadeManager manager)
{
super(manager, new Kit[]{new KitBrawlAppler(manager)}, GameType.Brawl);
}
@Override
public String GetMode()
{
return "Apple Attack";
}
}

View File

@ -1,198 +0,0 @@
package nautilus.game.arcade.game.games.bridge.modes;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Chest;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
import org.bukkit.potion.Potion;
import org.bukkit.potion.PotionType;
import mineplex.core.common.util.UtilMath;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.modules.AbsorptionFix;
import nautilus.game.arcade.game.games.bridge.Bridge;
/**
* InsaneBridges is a mode of {@link Bridge} which provides players with starting equipement, better loot and shorter bridge time
*
* @author xXVevzZXx
*/
public class InsaneBridges extends Bridge
{
private int _untilBridges;
public InsaneBridges(ArcadeManager manager)
{
super(manager, GameType.Brawl);
new AbsorptionFix()
.register(this);
Manager.GetDamage().SetEnabled(false);
_untilBridges = 60000; // 60 Seconds
WorldBoundaryKill = true;
}
@EventHandler
public void fallBridges(GameStateChangeEvent event)
{
if (event.GetState() == GameState.Live)
{
setBridgeTime(_untilBridges);
for (Player player : GetPlayers(true))
{
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_SWORD, 4, Enchantment.DAMAGE_ALL));
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_HELMET, 2, Enchantment.PROTECTION_ENVIRONMENTAL));
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_CHESTPLATE, 2, Enchantment.PROTECTION_ENVIRONMENTAL));
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_LEGGINGS, 2, Enchantment.PROTECTION_ENVIRONMENTAL));
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_BOOTS, 2, Enchantment.PROTECTION_ENVIRONMENTAL));
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.BOW, 2, Enchantment.ARROW_DAMAGE));
player.getInventory().addItem(new ItemStack(Material.ARROW, 64));
player.getInventory().addItem(new ItemStack(Material.GOLDEN_APPLE, 5));
player.getInventory().addItem(new ItemStack(Material.FISHING_ROD));
player.getInventory().addItem(new ItemStack(Material.COOKED_BEEF, 32));
player.getInventory().addItem(new ItemStack(Material.IRON_PICKAXE));
player.getInventory().addItem(new ItemStack(Material.COBBLESTONE, 32));
}
}
}
@Override
protected void ParseChests()
{
for (Location loc : WorldData.GetCustomLocs("54"))
{
if (loc.getBlock().getType() != Material.CHEST)
loc.getBlock().setType(Material.CHEST);
Chest chest = (Chest) loc.getBlock().getState();
chest.getBlockInventory().clear();
int count = 22 + UtilMath.r(4);
for (int i = 0; i < count; i++)
{
chest.getBlockInventory().addItem(GetChestItem());
}
}
}
@Override
protected ItemStack GetChestItem()
{
if (getChestLoot().isEmpty())
{
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_HELMET));
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_CHESTPLATE));
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_LEGGINGS));
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_BOOTS));
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_SWORD));
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_AXE));
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++)
{
Potion potionHealth = new Potion(PotionType.INSTANT_HEAL);
potionHealth.setLevel(2);
potionHealth.setSplash(true);
getChestLoot().add(potionHealth.toItemStack(1));
Potion potionDamage = new Potion(PotionType.INSTANT_DAMAGE);
potionDamage.setLevel(2);
potionDamage.setSplash(true);
getChestLoot().add(potionDamage.toItemStack(1));
Potion potionStrenght = new Potion(PotionType.STRENGTH);
potionStrenght.setLevel(1);
potionStrenght.setSplash(true);
getChestLoot().add(potionStrenght.toItemStack(1));
}
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));
for (int i = 0; i < 8; i++)
getChestLoot().add(new ItemStack(Material.ARROW, 8));
for (int i = 0; i < 12; i++)
getChestLoot().add(new ItemStack(Material.MUSHROOM_SOUP));
for (int i = 0; i < 12; i++)
getChestLoot().add(new ItemStack(Material.COOKED_CHICKEN, 2));
}
ItemStack stack = getChestLoot().get(UtilMath.r(getChestLoot().size()));
int amount = 1;
if (stack.getType().getMaxStackSize() > 1)
amount = stack.getAmount() + UtilMath.r(stack.getAmount());
ItemStack item = stack.clone();
item.setAmount(amount);
return item;
}
@Override
public String GetMode()
{
return "Insane Bridges";
}
}

View File

@ -1,75 +0,0 @@
package nautilus.game.arcade.game.games.bridge.modes;
import mineplex.core.common.util.UtilMath;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.game.modules.AbsorptionFix;
import nautilus.game.arcade.game.games.bridge.Bridge;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.inventory.ItemStack;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
/**
* LuckyBridges gamemode for Bridges
*
* @author xXVevzZXx
*/
public class LuckyBridges extends Bridge
{
private HashMap<Material, List<Material>> _drops;
public LuckyBridges(ArcadeManager manager)
{
super(manager, GameType.Brawl);
_drops = new HashMap<>();
_drops.put(Material.DIAMOND_ORE, Arrays.asList(
Material.DIAMOND_HELMET, Material.DIAMOND_CHESTPLATE, Material.DIAMOND_LEGGINGS, Material.DIAMOND_BOOTS,
Material.DIAMOND_PICKAXE, Material.DIAMOND_AXE, Material.DIAMOND_SWORD));
_drops.put(Material.IRON_ORE, Arrays.asList(
Material.IRON_HELMET, Material.IRON_CHESTPLATE, Material.IRON_LEGGINGS, Material.IRON_BOOTS,
Material.IRON_PICKAXE, Material.IRON_AXE, Material.IRON_SWORD));
_drops.put(Material.GOLD_ORE, Arrays.asList(
Material.GOLD_HELMET, Material.GOLD_CHESTPLATE, Material.GOLD_LEGGINGS, Material.GOLD_BOOTS,
Material.GOLD_PICKAXE, Material.GOLD_AXE, Material.GOLD_SWORD, Material.GOLDEN_APPLE));
new AbsorptionFix()
.register(this);
}
@EventHandler
public void mine(BlockBreakEvent event)
{
List<Material> blockDrops = _drops.get(event.getBlock().getType());
if (blockDrops != null)
{
event.setCancelled(true);
event.getBlock().setType(Material.AIR);
Bukkit.getScheduler().runTask(Manager.getPlugin(), () ->
event.getBlock().getWorld().dropItem(
event.getBlock().getLocation().add(0.5, 0.2, 0.5),
new ItemStack(blockDrops.get(UtilMath.r(blockDrops.size()))))
);
}
}
@Override
public String GetMode()
{
return "Lucky Bridges";
}
}

View File

@ -1,493 +1,54 @@
package nautilus.game.arcade.game.games.bridge.modes;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;
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.block.BlockPlaceEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.EventPriority;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
import org.bukkit.potion.Potion;
import org.bukkit.potion.PotionType;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer;
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.modules.AbsorptionFix;
import nautilus.game.arcade.game.games.bridge.Bridge;
import net.md_5.bungee.api.ChatColor;
import nautilus.game.arcade.game.modules.AbsorptionFix;
/**
* OverpoweredBridge gamemode for Bridges
*
* @author xXVevzZXx
*/
public class OverpoweredBridge extends Bridge
{
private HashMap<Player, Location> _starterChests;
private HashMap<Material, Integer> _starterItems;
private final ItemStack[] _items =
{
new ItemStack(Material.DIAMOND, 64),
new ItemStack(Material.DIAMOND, 64),
new ItemStack(Material.WOOD, 128),
new ItemStack(Material.GOLDEN_APPLE, 10),
new ItemStack(Material.ENCHANTMENT_TABLE),
new ItemStack(Material.BOOKSHELF, 32),
new ItemStack(Material.EXP_BOTTLE, 64),
new ItemStack(Material.COOKED_BEEF, 64),
new ItemStack(Material.MUSHROOM_SOUP),
new ItemStack(Material.MUSHROOM_SOUP),
new ItemStack(Material.MUSHROOM_SOUP),
new ItemStack(Material.MUSHROOM_SOUP)
};
public OverpoweredBridge(ArcadeManager manager)
{
super(manager, GameType.Brawl);
WorldBoundaryKill = true;
Manager.GetDamage().SetEnabled(false);
super(manager, GameType.Bridge);
new AbsorptionFix()
.register(this);
_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);
setBridgeTime(TimeUnit.MINUTES.toMillis(3));
}
@Override
public void ParseData()
@EventHandler(priority = EventPriority.MONITOR)
public void playerTeleportIn(PlayerPrepareTeleportEvent event)
{
_starterChests = new HashMap<>();
Player player = event.GetPlayer();
super.ParseData();
}
@EventHandler
public void fallBridges(GameStateChangeEvent event)
{
if (event.GetState() == GameState.Live)
{
setBridgeTime(1000*60*8);
}
}
@EventHandler
public void informChest(GameStateChangeEvent event)
{
if (event.GetState() != GameState.Live)
return;
for (Player player : GetPlayers(true))
{
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);
while (chestLoc.getBlock().getType() == Material.CHEST)
chestLoc.add(2, 0, 0);
_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();
Block signBlock = chestLoc.clone().add(0, 0, -1).getBlock();
signBlock.setType(Material.WALL_SIGN);
Sign sign = (Sign) signBlock.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();
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);
chest.getInventory().addItem(item);
amount -= stack.getMaxStackSize();
}
}
else
{
ItemStack item = new ItemStack(mat, amount);
chest.getInventory().addItem(item);
}
}
}
@EventHandler
public void openChest(PlayerInteractEvent event)
{
if (event.getAction() == Action.RIGHT_CLICK_BLOCK)
{
if (event.getClickedBlock().getType() != Material.CHEST)
return;
if (disallow(event.getPlayer(), event.getClickedBlock()))
event.setCancelled(true);
}
}
@EventHandler
public void placeChest(BlockPlaceEvent event)
{
if (event.getBlockPlaced().getType() != Material.CHEST)
return;
if (disallow(event.getPlayer(), event.getBlock()))
event.setCancelled(true);
}
@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;
}
}
}
private boolean disallow(Player clicker, Block block)
{
for (Player player : _starterChests.keySet())
{
if (player == clicker)
continue;
Location chest = _starterChests.get(player);
if (chest.getBlock().getLocation().equals(block.getLocation()))
{
return true;
}
for (Block surround : UtilBlock.getSurrounding(block, false))
{
if(chest.getBlock().getLocation().equals(surround.getLocation()))
return true;
}
}
return false;
}
@Override
public void ParseOre(ArrayList<Location> teamOre)
{
int coal = (int) ((teamOre.size() / 32d) * getOreDensity());
int iron = (int) ((teamOre.size() / 24d) * getOreDensity());
int gold = (int) ((teamOre.size() / 64d) * getOreDensity());
int diamond = 500 + (int) ((teamOre.size() / 32d) * getOreDensity());
int gravel = (int) ((teamOre.size() / 64d) * getOreDensity());
int lowY = 256;
int highY = 0;
for (Location loc : teamOre)
{
if (loc.getBlockY() < lowY)
lowY = loc.getBlockY();
if (loc.getBlockY() > highY)
highY = loc.getBlockY();
loc.getBlock().setTypeId(1);
}
int varY = highY - lowY;
//Gravel
for (int i = 0; i < gravel && !teamOre.isEmpty(); i++)
{
int attempts = 20;
int id = 0;
while (attempts > 0)
{
id = UtilMath.r(teamOre.size());
double height = (double) (teamOre.get(id).getBlockY() - lowY) / (double) varY;
if (height > 0.8)
break;
else if (height > 0.6 && Math.random() > 0.4)
break;
else if (height > 0.4 && Math.random() > 0.6)
break;
else if (height > 0.2 && Math.random() > 0.8)
break;
}
CreateOre(teamOre.remove(id), Material.GRAVEL, 6);
}
//Coal
for (int i = 0; i < coal && !teamOre.isEmpty(); i++)
{
int attempts = 20;
int id = 0;
while (attempts > 0)
{
id = UtilMath.r(teamOre.size());
double height = (double) (teamOre.get(id).getBlockY() - lowY) / (double) varY;
if (height > 0.8)
break;
else if (height > 0.6 && Math.random() > 0.4)
break;
else if (height > 0.4 && Math.random() > 0.6)
break;
else if (height > 0.2 && Math.random() > 0.8)
break;
}
CreateOre(teamOre.remove(id), Material.COAL_ORE, 6);
}
//Iron
for (int i = 0; i < iron && !teamOre.isEmpty(); i++)
{
int id = UtilMath.r(teamOre.size());
CreateOre(teamOre.remove(id), Material.IRON_ORE, 3);
}
//Gold
for (int i = 0; i < gold && !teamOre.isEmpty(); i++)
{
int attempts = 20;
int id = 0;
while (attempts > 0)
{
id = UtilMath.r(teamOre.size());
double height = (double) (teamOre.get(id).getBlockY() - lowY) / (double) varY;
if (height > 0.8 && Math.random() > 0.8)
break;
else if (height > 0.6 && Math.random() > 0.7)
break;
else if (height > 0.4 && Math.random() > 0.6)
break;
else if (height > 0.2 && Math.random() > 0.4)
break;
else if (Math.random() > 0.2)
break;
}
CreateOre(teamOre.remove(id), Material.GOLD_ORE, 3);
}
//Diamond
for (int i = 0; i < diamond && !teamOre.isEmpty(); i++)
{
int attempts = 20;
int id = 0;
while (attempts > 0)
{
id = UtilMath.r(teamOre.size());
double height = (double) (teamOre.get(id).getBlockY() - lowY) / (double) varY;
if (height > 0.8)
continue;
else if (height > 0.6 && Math.random() > 0.9)
break;
else if (height > 0.4 && Math.random() > 0.7)
break;
else if (height > 0.2 && Math.random() > 0.5)
break;
else
break;
}
CreateOre(teamOre.remove(id), Material.DIAMOND_ORE, 5);
}
}
@Override
protected void ParseChests()
{
for (Location loc : WorldData.GetCustomLocs("54"))
{
if (loc.getBlock().getType() != Material.CHEST)
loc.getBlock().setType(Material.CHEST);
Chest chest = (Chest) loc.getBlock().getState();
chest.getBlockInventory().clear();
int count = 22 + UtilMath.r(4);
for (int i = 0; i < count; i++)
{
chest.getBlockInventory().addItem(GetChestItem());
}
}
}
@Override
protected ItemStack GetChestItem()
{
if (getChestLoot().isEmpty())
{
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_HELMET));
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_CHESTPLATE));
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_LEGGINGS));
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_BOOTS));
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_SWORD));
for (int i = 0; i < 2; i++)
getChestLoot().add(new ItemStack(Material.DIAMOND_AXE));
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++)
{
Potion potionHealth = new Potion(PotionType.INSTANT_HEAL);
potionHealth.setLevel(2);
potionHealth.setSplash(true);
getChestLoot().add(potionHealth.toItemStack(1));
Potion potionDamage = new Potion(PotionType.INSTANT_DAMAGE);
potionDamage.setLevel(2);
potionDamage.setSplash(true);
getChestLoot().add(potionDamage.toItemStack(1));
Potion potionStrenght = new Potion(PotionType.STRENGTH);
potionStrenght.setLevel(1);
potionStrenght.setSplash(true);
getChestLoot().add(potionStrenght.toItemStack(1));
}
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));
for (int i = 0; i < 8; i++)
getChestLoot().add(new ItemStack(Material.ARROW, 8));
for (int i = 0; i < 12; i++)
getChestLoot().add(new ItemStack(Material.MUSHROOM_SOUP));
for (int i = 0; i < 12; i++)
getChestLoot().add(new ItemStack(Material.COOKED_CHICKEN, 2));
}
ItemStack stack = getChestLoot().get(UtilMath.r(getChestLoot().size()));
int amount = 1;
if (stack.getType().getMaxStackSize() > 1)
amount = stack.getAmount() + UtilMath.r(stack.getAmount());
ItemStack item = stack.clone();
item.setAmount(amount);
return item;
player.getInventory().addItem(_items);
}
@Override

View File

@ -1,60 +0,0 @@
package nautilus.game.arcade.game.games.bridge.modes;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.inventory.ItemStack;
import mineplex.minecraft.game.core.condition.ConditionManager;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.games.bridge.Bridge;
/**
* SpeedBridges gamemode for Bridges
*
* @author xXVevzZXx
*/
public class SpeedBridges extends Bridge
{
private int _untilBridges;
public SpeedBridges(ArcadeManager manager)
{
super(manager, GameType.Brawl);
_untilBridges = 10000;
}
@EventHandler
public void fallBridges(GameStateChangeEvent event)
{
if (event.GetState() == GameState.Live)
{
setBridgeTime(_untilBridges);
for (Player player : GetPlayers(true))
{
player.getInventory().addItem(new ItemStack(Material.IRON_SWORD));
player.getInventory().addItem(new ItemStack(Material.IRON_HELMET));
player.getInventory().addItem(new ItemStack(Material.IRON_CHESTPLATE));
player.getInventory().addItem(new ItemStack(Material.IRON_LEGGINGS));
player.getInventory().addItem(new ItemStack(Material.IRON_BOOTS));
player.getInventory().addItem(new ItemStack(Material.COOKED_BEEF, 10));
Manager.GetCondition().Factory().Speed("Game", player, player, GameTimeout, 2, true, true, true);
}
}
}
@Override
public String GetMode()
{
return "Speed Bridges";
}
}

View File

@ -1,147 +0,0 @@
package nautilus.game.arcade.game.games.bridge.modes;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
import org.bukkit.event.inventory.PrepareItemCraftEvent;
import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.inventory.CraftingInventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.ShapedRecipe;
import org.bukkit.material.MaterialData;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.modules.AbsorptionFix;
import nautilus.game.arcade.game.games.bridge.Bridge;
/**
* UHCBridges is a mode of {@link Bridge} which is a UHC like gamemode
*
* @author xXVevzZXx
*/
public class UHCBridges extends Bridge
{
public UHCBridges(ArcadeManager manager)
{
super(manager, GameType.Brawl);
SoupEnabled = false;
new AbsorptionFix()
.register(this);
ShapedRecipe headApple = new ShapedRecipe(new ItemStack(Material.GOLDEN_APPLE, 1));
headApple.shape("GGG", "GHG", "GGG");
headApple.setIngredient('G', Material.GOLD_INGOT);
headApple.setIngredient('H', new MaterialData(Material.SKULL_ITEM, (byte) 3));
UtilServer.getServer().addRecipe(headApple);
}
@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, 1));
}
}
@EventHandler
public void giveItems(GameStateChangeEvent event)
{
if (event.GetState() == GameState.Live)
{
for (Player player : GetPlayers(true))
{
player.getInventory().addItem(new ItemStack(Material.GOLDEN_APPLE, 3));
}
}
}
@EventHandler
public void headPlaceCancel(BlockPlaceEvent event)
{
if (event.getItemInHand().getType() == Material.SKULL || event.getItemInHand().getType() == Material.SKULL_ITEM)
event.setCancelled(true);
}
@EventHandler(priority = EventPriority.MONITOR)
public void headPickup(PlayerPickupItemEvent event)
{
if (!IsLive())
return;
if (event.isCancelled())
return;
if (event.getItem().getItemStack().getType() == Material.SKULL_ITEM)
{
UtilPlayer.message(event.getPlayer(), " ");
UtilPlayer.message(event.getPlayer(), C.cGreen + C.Bold + "You picked up a Player Head!");
UtilPlayer.message(event.getPlayer(), C.cWhite + "Use the recipe for Golden Apple, but Head replaces Apple.");
UtilPlayer.message(event.getPlayer(), " ");
}
}
@EventHandler(priority = EventPriority.HIGH)
public void craftGoldenAppleDeny(PrepareItemCraftEvent event)
{
if (event.getRecipe().getResult() == null)
return;
Material type = event.getRecipe().getResult().getType();
if (type != Material.GOLDEN_APPLE)
return;
if (!(event.getInventory() instanceof CraftingInventory))
return;
CraftingInventory inv = (CraftingInventory) event.getInventory();
for (ItemStack item : inv.getMatrix())
if (item != null && item.getType() != Material.AIR)
if (item.getType() == Material.GOLD_INGOT)
return;
inv.setResult(null);
}
@Override
public String GetMode()
{
return "UHC Bridges";
}
}

View File

@ -1,36 +0,0 @@
package nautilus.game.arcade.game.games.bridge.modes.kits;
import org.bukkit.entity.Player;
import mineplex.core.game.kit.GameKit;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.game.games.bridge.kits.KitApple;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.perks.PerkApple;
/**
* KitBrawlAppler is a variation of the Kit [{@link KitApple} which has a shorter delay of spawning apples
*
* @author xXVevzZXx
*/
public class KitBrawlAppler extends Kit
{
private static final Perk[] PERKS =
{
new PerkApple(3000)
};
public KitBrawlAppler(ArcadeManager manager)
{
super(manager, GameKit.BRIDGES_APPLER, PERKS);
}
@Override
public void GiveItems(Player player)
{
}
}

View File

@ -1,232 +0,0 @@
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.player.PlayerCommandPreprocessEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import mineplex.core.common.util.F;
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.GameType;
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 gamemode for Master Builders
*
* @author xXVevzZXx
*/
public class DukesOfDecoration extends Build
{
private List<Material> _blocks;
public DukesOfDecoration(ArcadeManager manager)
{
super(manager, GameType.Brawl);
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 < 8; i++)
{
Material mat = Material.values()[1 + UtilMath.r(174)];
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)
{
if (event.GetState() != GameState.Live)
return;
for (Player player : GetPlayers(true))
{
giveBlocks(player);
}
}
@EventHandler
public void giveBlockCommand(PlayerCommandPreprocessEvent event)
{
if(!IsLive())
return;
if (!IsPlaying(event.getPlayer()))
return;
if (!event.getMessage().equalsIgnoreCase("/giveblocks"))
return;
event.setCancelled(true);
UtilInv.Clear(event.getPlayer());
giveBlocks(event.getPlayer());
}
public void giveBlocks(Player player)
{
Manager.runSyncLater(new Runnable()
{
@Override
public void run()
{
for (Material mat : _blocks)
{
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")));
}
}, 10);
}
@EventHandler
public void placeBlock(BlockPlaceEvent event)
{
if (!_blocks.contains(event.getBlockPlaced().getType())
|| (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()
{
return "Dukes Of Decoration";
}
}

View File

@ -1,190 +0,0 @@
package nautilus.game.arcade.game.games.build.modes;
import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilTextMiddle;
import mineplex.core.common.util.UtilTime;
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.games.build.Build;
import nautilus.game.arcade.game.games.build.BuildData;
import nautilus.game.arcade.game.games.build.BuildQuality;
import nautilus.game.arcade.game.team.NamedTeamsModule;
import nautilus.game.arcade.game.team.TeamRequestsModule;
import nautilus.game.arcade.game.team.selectors.FillToSelector;
/**
* TeamBuild gamemode for Master builders
*
* @author xXVevzZXx
*/
public class TeamBuild extends Build
{
private List<Player> _winners;
private List<Entry<GameTeam,Double>> _scoreboardPlaces = new ArrayList<>();
public TeamBuild(ArcadeManager manager)
{
super(manager, GameType.Brawl);
_teamSelector = new FillToSelector(this, 2);
new NamedTeamsModule()
.setTeamPerSpawn(true)
.register(this);
new TeamRequestsModule()
.register(this);
_winners = new ArrayList<>();
}
@Override
@EventHandler
public void prepare(GameStateChangeEvent event)
{
if (event.GetState() == GameState.Live)
{
for (GameTeam team : GetTeamList())
{
Location spawn = team.GetSpawns().get(0);
BuildData data = new BuildData(team, spawn, WorldData.GetDataLocs("YELLOW"));
for (Player player : team.GetPlayers(true))
{
getData().put(player, data);
player.setFlySpeed(0.1f);
}
}
setWord(getNextWord());
UtilTextMiddle.display(null, C.cYellow + "Build " + C.cWhite + getWord(), 0, 80, 5);
this.WorldTimeSet = -1;
}
}
public void writeScoreboard()
{
//Wipe Last
Scoreboard.reset();
Scoreboard.writeNewLine();
Scoreboard.write(C.cYellow + C.Bold + "Build Theme");
Scoreboard.write(getWord());
Scoreboard.writeNewLine();
if (getBuildGameState() == 0)
{
Scoreboard.write(C.cYellow + C.Bold + "Build Time");
Scoreboard.write(UtilTime.MakeStr(Math.max(0, getBuildTime() - (System.currentTimeMillis() - this.GetStateTime())), 0));
}
else if (getBuildGameState() == 2)
{
Scoreboard.write(C.cYellow + C.Bold + "Vote Time");
Scoreboard.write(UtilTime.MakeStr(Math.max(0, getVoteTime() - (System.currentTimeMillis() - getBuildStateTime())), 0));
}
else if (getBuildGameState() == 4)
{
for (Entry<GameTeam, Double> score : _scoreboardPlaces)
{
Scoreboard.write(BuildQuality.getFinalQuality(score.getValue()).getColor() + (int)(score.getValue().intValue()/10) + " " + ChatColor.RESET + score.getKey().getDisplayName());
}
}
Scoreboard.draw();
}
@Override
public void calculatePlaces()
{
List<GameTeam> places = new ArrayList<>();
//Calculate Places
boolean first = true;
while (!getData().isEmpty())
{
GameTeam bestTeam = null;
double bestPoints = 0;
for (Player player : getData().keySet())
{
double points = getData().get(player).getPoints();
if (bestTeam == null || points > bestPoints)
{
bestTeam = getData().get(player).Team;
bestPoints = points;
}
}
BuildData data = null;
//Average points per player is 1000, so divided by 50 = 20 gems
for (Player player : bestTeam.GetPlayers(true))
{
AddGems(player, bestPoints / 50, "Build Votes", false, false);
data = getData().remove(player);
}
//Teleport to winner
if (first)
{
teleportPlayers(data);
first = false;
}
places.add(bestTeam);
_scoreboardPlaces.add(new AbstractMap.SimpleEntry<GameTeam, Double>(bestTeam, bestPoints));
}
//Announce
AnnounceEnd(places.get(0));
//Gems
if (places.size() >= 1)
{
for (Player player : places.get(0).GetPlayers(true))
{
_winners.add(player);
AddGems(player, 20, "1st Place", false, false);
}
}
for (Player player : GetPlayers(false))
{
if (player.isOnline())
{
AddGems(player, 10, "Participation", false, false);
}
}
}
@Override
public List<Player> getWinners()
{
return _winners;
}
@Override
public String GetMode()
{
return "Team Master Builders";
}
}

View File

@ -1,107 +0,0 @@
package nautilus.game.arcade.game.games.champions.modes;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.game.games.common.Domination;
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.kit.Kit;
/**
* SmashDom
*
* @author xXVevzZXx
*/
public class SmashDom extends Domination
{
public SmashDom(ArcadeManager manager)
{
super(manager, GameType.Brawl, 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)
});
Manager.GetDamage().UseSimpleWeaponDamage = false;
Manager.getCosmeticManager().setHideParticles(true);
Manager.getClassManager().GetItemFactory().getProximityManager().setProxyLimit(6);
Manager.getClassManager().deregisterSelf();
InventoryOpenChest = true;
EnableSupply = false;
}
@EventHandler(priority = EventPriority.LOWEST)
public void noFallDamage(CustomDamageEvent event)
{
if (event.IsCancelled())
return;
if (event.GetCause() == DamageCause.FALL)
event.SetCancelled("No Fall Damage");
}
@EventHandler(priority = EventPriority.HIGH)
public void customKnockback(CustomDamageEvent event)
{
if (event.IsCancelled())
return;
if (event.GetDamageePlayer() != null)
event.AddKnockback("Smash Knockback", 1 + 0.1 * (20 - event.GetDamageePlayer().getHealth()));
}
@Override
public String GetMode()
{
return "Smash Dominate";
}
}

View File

@ -1,99 +0,0 @@
package nautilus.game.arcade.game.games.gladiators.modes;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityRegainHealthEvent;
import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
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.gladiators.Arena;
import nautilus.game.arcade.game.games.gladiators.ArenaType;
import nautilus.game.arcade.game.games.gladiators.Gladiators;
import nautilus.game.arcade.game.games.gladiators.RoundState;
import nautilus.game.arcade.game.modules.ChampionsModule;
import nautilus.game.arcade.kit.Kit;
/**
* ChampionsGladiators gamemode for Gladiators
*
* @author xXVevzZXx
*/
public class ChampionsGladiators extends Gladiators
{
public ChampionsGladiators(ArcadeManager manager)
{
super(manager, new Kit[]
{
new KitBrute(manager),
new KitRanger(manager),
new KitKnight(manager),
new KitMage(manager),
new KitAssassin(manager),
}, GameType.Brawl);
Manager.GetDamage().UseSimpleWeaponDamage = false;
Manager.getCosmeticManager().setHideParticles(true);
Manager.getClassManager().GetItemFactory().getProximityManager().setProxyLimit(6);
new ChampionsModule().register(this);
manager.enableChampionsModules();
}
@Override
protected void giveLoadout(Player p, ArenaType type)
{
if (!GetPlayers(true).contains(p))
return;
GetKit(p).ApplyKit(p);
p.playSound(p.getLocation(), Sound.LEVEL_UP, 1f, 1f);
}
@EventHandler
public void end(GameStateChangeEvent event)
{
if (event.GetState() != GameState.End)
return;
Manager.disableChampionsModules();
}
@EventHandler
public void healthDisable(EntityRegainHealthEvent event)
{
if(!(event.getEntity() instanceof Player))
return;
Player player = (Player) event.getEntity();
Arena arena = getPlayerArenas().get(player);
if(arena.isPoisoned())
event.setCancelled(true);
}
@Override
public String GetMode()
{
return "Champions Gladiators";
}
@EventHandler
public void skill(SkillTriggerEvent event)
{
if (getRoundState() != RoundState.FIGHTING)
event.SetCancelled(true);
}
}

View File

@ -1,109 +0,0 @@
package nautilus.game.arcade.game.games.gladiators.modes;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerChatEvent;
import org.bukkit.inventory.ItemStack;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilItem;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.game.games.gladiators.Arena;
import nautilus.game.arcade.game.games.gladiators.ArenaType;
import nautilus.game.arcade.game.games.gladiators.Gladiators;
import nautilus.game.arcade.game.games.gladiators.hotbar.HotbarLayout;
import nautilus.game.arcade.game.games.gladiators.kits.KitGladiator;
import nautilus.game.arcade.kit.Kit;
/**
* OverpoweredGladiators gamemode for Gladiators
*
* @author xXVevzZXx
*/
public class OverpoweredGladiators extends Gladiators
{
public OverpoweredGladiators(ArcadeManager manager)
{
super(manager, new Kit[]
{
new KitGladiator(manager)
},
GameType.Brawl);
}
@Override
protected void giveLoadout(Player p, ArenaType type)
{
if (!GetPlayers(true).contains(p))
return;
HotbarLayout layout = getHotbarEditor().getLayout(p);
int round = 0;
if (type == ArenaType.GREEN)
round = 1;
else if (type == ArenaType.YELLOW)
round = 2;
else if (type == ArenaType.ORANGE)
round = 3;
else if(type == ArenaType.RED)
round = 4;
UtilInv.Clear(p);
p.getInventory().clear();
p.getInventory().setArmorContents(null);
p.getInventory().setItem(layout.getRod(), UtilItem.makeUnbreakable(type.getLoadout().getRod()));
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);
ItemStack boots = new ItemStack(Material.DIAMOND_BOOTS);
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);
boots.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, round);
}
p.getInventory().setItem(layout.getSword(), UtilItem.makeUnbreakable(sword));
p.getInventory().setItem(layout.getBow(), UtilItem.makeUnbreakable(bow));
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)
{
UtilInv.insert(p, new ItemStack(Material.GOLDEN_APPLE,1 , (short) 1));
}
p.playSound(p.getLocation(), Sound.LEVEL_UP, 1f, 1f);
}
@Override
public String GetMode()
{
return "OP Gladiators";
}
}

View File

@ -1,109 +0,0 @@
package nautilus.game.arcade.game.games.gladiators.modes;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.game.games.gladiators.ArenaType;
import nautilus.game.arcade.game.games.gladiators.Gladiators;
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.kit.Kit;
/**
* SmashGladiators
*
* @author xXVevzZXx
*/
public class SmashGladiators extends Gladiators
{
public SmashGladiators(ArcadeManager manager)
{
super(manager, 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)
}, GameType.Brawl);
}
@EventHandler(priority = EventPriority.LOWEST)
public void noFallDamage(CustomDamageEvent event)
{
if (event.IsCancelled())
return;
if (event.GetCause() == DamageCause.FALL)
event.SetCancelled("No Fall Damage");
}
@EventHandler(priority = EventPriority.HIGH)
public void customKnockback(CustomDamageEvent event)
{
if (event.IsCancelled())
return;
if (event.GetDamageePlayer() != null)
event.AddKnockback("Smash Knockback", 1 + 0.1 * (20 - event.GetDamageePlayer().getHealth()));
}
@Override
protected void giveLoadout(Player p, ArenaType type)
{
if (!GetPlayers(true).contains(p))
return;
GetKit(p).ApplyKit(p);
p.playSound(p.getLocation(), Sound.LEVEL_UP, 1f, 1f);
}
@Override
public String GetMode()
{
return "Smash Gladiators";
}
}

View File

@ -1,138 +0,0 @@
package nautilus.game.arcade.game.games.hideseek.modes;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
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;
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.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.*;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.NullKit;
/**
* Countdown gammeode for Blockhunt
*
* @author xXVevzZXx
*/
public class Countdown extends HideSeek
{
private int _changeInterval;
private long _lastChanged = 0;
public Countdown(ArcadeManager manager)
{
super(manager,
new Kit[]
{
new KitHiderQuick(manager), new KitHiderSwapper(manager), new KitHiderInfestor(manager),
new KitHiderShocker(manager), new NullKit(manager), new KitSeekerLeaper(manager),
new KitSeekerTNT(manager), new KitSeekerRadar(manager),
});
_changeInterval = 30;
}
@EventHandler
public void gameState(GameStateChangeEvent event)
{
if (event.GetState() != GameState.Live)
return;
_lastChanged = System.currentTimeMillis();
}
@EventHandler
public void countdown(UpdateEvent event)
{
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;
double percentage = (double) (System.currentTimeMillis() - _lastChanged) / (_changeInterval*1000);
for (Player player : UtilServer.getPlayers())
{
UtilTextBottom.displayProgress("Block change", percentage,
UtilTime.MakeStr(Math.max(0, (_changeInterval*1000) - (System.currentTimeMillis() - _lastChanged))), player);
}
}
@EventHandler
public void changeForms(UpdateEvent event)
{
if (!IsLive())
return;
if (event.getType() != UpdateType.SEC)
return;
if (UtilTime.elapsed(_lastChanged, _changeInterval*1000))
{
_lastChanged = System.currentTimeMillis();
Material mat = getAllowedBlocks().get(UtilMath.r(getAllowedBlocks().size()));
for (Player player : GetPlayers(true))
{
if (!getForms().containsKey(player))
{
UtilPlayer.message(player, F.main("Game", "Hiders have changed forms!"));
continue;
}
getForms().get(player).Remove();
Form form = new BlockForm(this, player, mat);
getForms().put(player, form);
form.Apply();
Bukkit.getPluginManager().callEvent(new PlayerChangeFormEvent(player, form));
}
}
}
@Override
public boolean inform()
{
return false;
}
@Override
public String GetMode()
{
return "Countdown";
}
}

View File

@ -299,7 +299,7 @@ public class MilkCow extends SoloGame
}
event.setCancelled(true);
itemStack.setType(Material.MILK_BUCKET);
player.setItemInHand(new ItemStack(Material.MILK_BUCKET));
player.updateInventory();
}

View File

@ -1,657 +0,0 @@
package nautilus.game.arcade.game.games.minestrike.modes;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import net.minecraft.server.v1_8_R3.PacketPlayOutEntityDestroy;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.Effect;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.EnderPearl;
import org.bukkit.entity.Player;
import org.bukkit.entity.Snowball;
import org.bukkit.entity.ThrownPotion;
import org.bukkit.event.Cancellable;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityRegainHealthEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scoreboard.NameTagVisibility;
import org.bukkit.scoreboard.Team;
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.UtilBlock;
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.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.hologram.Hologram.HologramTarget;
import mineplex.core.recharge.Recharge;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.core.condition.Condition.ConditionType;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.events.PlayerKitGiveEvent;
import nautilus.game.arcade.events.PlayerPrepareTeleportEvent;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.GameTeam.PlayerState;
import nautilus.game.arcade.game.games.minestrike.Minestrike;
import nautilus.game.arcade.game.games.paintball.Paintball;
import nautilus.game.arcade.game.games.paintball.PlayerCopyPaintball;
import nautilus.game.arcade.game.games.paintball.events.PaintballEvent;
import nautilus.game.arcade.game.games.paintball.events.ReviveEvent;
import nautilus.game.arcade.game.games.paintball.kits.KitMachineGun;
import nautilus.game.arcade.game.games.paintball.kits.KitRifle;
import nautilus.game.arcade.game.games.paintball.kits.KitShotgun;
import nautilus.game.arcade.game.games.paintball.kits.KitSniper;
import nautilus.game.arcade.kit.Kit;
/**
* SuperPaintstrike is a mode of {@link Minestrike} which implements {@link Paintball} kits
*
* @author xXVevzZXx
*/
public class SuperPaintstrike extends Minestrike
{
private HashMap<Player, PlayerCopyPaintball> _doubles = new HashMap<Player, PlayerCopyPaintball>();
public SuperPaintstrike(ArcadeManager manager)
{
super(manager, new Kit[]
{
new KitRifle(manager),
new KitShotgun(manager),
new KitMachineGun(manager),
new KitSniper(manager),
}, GameType.Brawl);
getShopManager().setDisabled(true);
getGunModule().setDisableDamage(true);
getGunModule().setEnableCleaning(false);
}
@Override
@EventHandler
public void giveStartEquipment(PlayerKitGiveEvent event)
{
GameTeam team = GetTeam(event.getPlayer());
if (team == null)
return;
if (team.GetColor() == ChatColor.RED)
{
if (IsAlive(event.getPlayer()))
{
//Armor
giveTeamArmor(event.getPlayer(), Color.RED);
}
}
else if (team.GetColor() == ChatColor.AQUA)
{
if (IsAlive(event.getPlayer()))
{
//Armor
giveTeamArmor(event.getPlayer(), Color.AQUA);
}
}
}
@EventHandler
public void onHeal(PlayerInteractEvent event)
{
if (!UtilEvent.isAction(event, ActionType.R))
return;
LaunchPotion(event.getPlayer(), event);
}
@EventHandler
public void onHeal(PlayerInteractEntityEvent event)
{
LaunchPotion(event.getPlayer(), event);
}
@EventHandler(ignoreCancelled = false)
public void onHeal(PlayerInteractAtEntityEvent event)
{
LaunchPotion(event.getPlayer(), event);
}
public void LaunchPotion(Player player, Cancellable event)
{
if (!IsLive())
return;
if (!UtilGear.isMat(player.getItemInHand(), Material.POTION))
return;
event.setCancelled(true);
if (!IsAlive(player) || UtilPlayer.isSpectator(player))
return;
if (!Recharge.Instance.use(player, "Water Potion", 250, false, false))
return;
UtilInv.UseItemInHand(player);
ThrownPotion potion = player.launchProjectile(ThrownPotion.class);
potion.getEffects().clear();
potion.getEffects().add(new PotionEffect(PotionEffectType.WATER_BREATHING, 100, 100));
Manager.runAsync(new Runnable()
{
@Override
public void run()
{
UtilInv.Update(player);
}
});
}
@EventHandler
public void removePotionEffect(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
for (Player player : GetPlayers(true))
player.removePotionEffect(PotionEffectType.WATER_BREATHING);
}
public void cleanColorArmor(Player player)
{
Color color = Color.RED;
if (Manager.GetColor(player) != ChatColor.RED)
color = Color.AQUA;
for (ItemStack stack : player.getEquipment().getArmorContents())
{
if (!(stack.getItemMeta() instanceof LeatherArmorMeta))
continue;
LeatherArmorMeta meta = (LeatherArmorMeta)stack.getItemMeta();
meta.setColor(color);
stack.setItemMeta(meta);
}
}
@EventHandler
public void cleanHit(ProjectileHitEvent event)
{
if (!IsLive())
return;
if (!(event.getEntity() instanceof ThrownPotion))
return;
if (event.getEntity().getShooter() == null)
return;
if (!(event.getEntity().getShooter() instanceof Player))
return;
Player thrower = (Player)event.getEntity().getShooter();
if (!IsAlive(thrower))
return;
GameTeam throwerTeam = GetTeam(thrower);
if (throwerTeam == null) return;
//Revive
Iterator<PlayerCopyPaintball> copyIterator = _doubles.values().iterator();
while (copyIterator.hasNext())
{
PlayerCopyPaintball copy = copyIterator.next();
GameTeam otherTeam = GetTeam(copy.GetPlayer());
if (otherTeam == null || !otherTeam.equals(throwerTeam))
continue;
if (UtilMath.offset(copy.GetEntity().getLocation().add(0,1,0), event.getEntity().getLocation()) > 3)
continue;
playerIn(copy.GetPlayer(), copy);
copyIterator.remove();
AddGems(thrower, 3, "Revived Ally", true, true);
Bukkit.getPluginManager().callEvent(new ReviveEvent(thrower, copy.GetPlayer()));
}
//Clean
for (Player player : GetPlayers(true))
{
GameTeam otherTeam = GetTeam(player);
if (otherTeam == null || !otherTeam.equals(throwerTeam))
continue;
if (UtilMath.offset(player.getLocation().add(0,1,0), event.getEntity().getLocation()) > 3)
continue;
playerIn(player, null);
}
}
public void playerIn(final Player player, final PlayerCopyPaintball copy)
{
//State
SetPlayerState(player, PlayerState.IN);
player.setHealth(20);
//Teleport
if (copy != null)
{
Location loc = player.getLocation();
loc.setX(copy.GetEntity().getLocation().getX());
loc.setY(copy.GetEntity().getLocation().getY());
loc.setZ(copy.GetEntity().getLocation().getZ());
player.teleport(loc);
}
//Settings
if (player.getGameMode() == GameMode.SPECTATOR)
player.setSpectatorTarget(null);
player.setGameMode(GameMode.SURVIVAL);
player.setAllowFlight(false);
player.setFlying(false);
((CraftPlayer)player).getHandle().spectating = false;
((CraftPlayer)player).getHandle().k = true;
//Items
player.getInventory().remove(Material.WATCH);
player.getInventory().remove(Material.COMPASS);
//Clean Armor
cleanColorArmor(player);
//Inform
UtilPlayer.message(player, F.main("Game", "You have been cleaned!"));
//Delayed Visibility
if (copy != null)
{
UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(Manager.getPlugin(), new Runnable()
{
public void run()
{
//Remove Invis
if (IsAlive(player))
Manager.GetCondition().EndCondition(player, ConditionType.CLOAK, null);
//Remove Copy
copy.GetEntity().remove();
copy.GetHolo().stop();
copy.GetSaveMe().stop();
}
}, 4);
}
}
@EventHandler
public void updateCloneHolograms(UpdateEvent event)
{
if (event.getType() != UpdateType.FAST)
return;
for (PlayerCopyPaintball clone : _doubles.values())
{
if (clone.GetHolo().getHologramTarget() == HologramTarget.WHITELIST)
{
//Other team blacklist
clone.GetHolo().setHologramTarget(HologramTarget.BLACKLIST);
for (Player cur : GetPlayers(false))
{
if (!IsAlive(cur))
{
if (clone.GetHolo().containsPlayer(cur))
clone.GetHolo().removePlayer(cur);
}
}
clone.GetHolo().start();
}
clone.setSaveMeFlop(!clone.getSaveMeFlop());
clone.GetSaveMe().setText((clone.getSaveMeFlop() ? C.cRedB : C.cWhiteB) + "SAVE ME!");
for (Player player : GetTeam(clone.GetPlayer()).GetPlayers(false))
{
if (!IsAlive(player)) // Remove if it's not alive
{
if (clone.GetSaveMe().containsPlayer(player))
clone.GetSaveMe().removePlayer(player);
}
else
{
boolean hasPotion = UtilInv.contains(player, Material.POTION, (byte) -1, 1);
if (clone.GetSaveMe().containsPlayer(player))
{
if (!hasPotion) // No potions left
{
clone.GetSaveMe().removePlayer(player);
}
}
else if (hasPotion)
{
clone.GetSaveMe().addPlayer(player);
}
}
}
}
}
@EventHandler
public void CustomTeamGeneration(GameStateChangeEvent event)
{
if (event.GetState() != GameState.Recruit)
return;
this.GetTeamList().get(0).SetColor(ChatColor.AQUA);
this.GetTeamList().get(0).SetName("Frost");
this.GetTeamList().get(1).SetColor(ChatColor.RED);
this.GetTeamList().get(1).SetName("Nether");
}
@EventHandler
public void onNameTag(GameStateChangeEvent event)
{
if (event.GetState() == GameState.Prepare)
for (Team team : Scoreboard.getScoreboard().getTeams())
team.setNameTagVisibility(NameTagVisibility.HIDE_FOR_OTHER_TEAMS);
}
@EventHandler(priority = EventPriority.HIGHEST)
public void colorArmor(PlayerPrepareTeleportEvent event)
{
cleanColorArmor(event.GetPlayer());
}
@EventHandler
public void healthRegen(EntityRegainHealthEvent event)
{
if (event.getRegainReason() == RegainReason.SATIATED)
event.setCancelled(true);
}
@EventHandler
public void teleport(PlayerTeleportEvent event)
{
if (event.getCause() == TeleportCause.ENDER_PEARL)
event.setCancelled(true);
}
@SuppressWarnings("deprecation")
@EventHandler
public void paint(final ProjectileHitEvent event)
{
if (IsLive() || GetState() == GameState.End)
{
if (event.getEntity() instanceof ThrownPotion)
return;
final byte color = (byte) (event.getEntity() instanceof EnderPearl || (event.getEntity() instanceof Arrow && event.getEntity().hasMetadata("color") && ChatColor.values()[event.getEntity().getMetadata("color").get(0).asInt()] == ChatColor.RED) ? 14 : 3);
event.getEntity().setVelocity(event.getEntity().getVelocity().normalize().multiply(1.2));
PacketPlayOutEntityDestroy destroy = new PacketPlayOutEntityDestroy(new int[]{event.getEntity().getEntityId()});
for (Player player : UtilServer.getPlayers())
UtilPlayer.sendPacket(player, destroy);
Manager.runSyncLater(new Runnable() // Stupid thing I have to do to make sure the arrow's location is accounted for. Stupid mojang. - Myst
{
@Override
public void run()
{
Location loc = event.getEntity().getLocation();
// loc.add(event.getEntity().getVelocity().clone().normalize().multiply(.5));
for (Block block : UtilBlock.getInRadius(loc, 1.5d).keySet())
{
if (block.getType() != Material.WOOL && block.getType() != Material.STAINED_CLAY && block.getType() != Material.HARD_CLAY)
continue;
if (block.getType() == Material.HARD_CLAY)
block.setType(Material.STAINED_CLAY);
block.setData(color);
}
if (color == 3) loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 8);
else loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 10);
event.getEntity().remove();
}
}, 0);
}
}
@EventHandler
public void onQuit(PlayerQuitEvent event)
{
Player player = event.getPlayer();
if (_doubles.containsKey(player))
{
PlayerCopyPaintball copy = _doubles.remove(player);
copy.GetEntity().remove();
copy.GetHolo().stop();
copy.GetSaveMe().stop();
}
}
@EventHandler
public void damageCancel(CustomDamageEvent event)
{
if (event.GetDamageePlayer() == null)
event.SetCancelled("Not Player");
// Fixed void damage being blocked from this check.
if (event.GetProjectile() == null && event.GetCause() != DamageCause.VOID)
event.SetCancelled("No Projectile");
}
@EventHandler(priority = EventPriority.LOW)
public void paintballDamage(CustomDamageEvent event)
{
if (!IsLive())
return;
if (event.GetProjectile() == null)
return;
if (!(event.GetProjectile() instanceof Snowball) && !(event.GetProjectile() instanceof EnderPearl) && !(event.GetProjectile() instanceof Arrow))
return;
//Negate
event.AddMod("Negate", "Negate", -event.GetDamageInitial(), false);
event.AddMod("Paintball", "Paintball", 2, true);
event.AddKnockback("Paintball", 2);
event.setShowArrows(false);
Player damagee = event.GetDamageePlayer();
if (damagee == null)
return;
Player damager = event.GetDamagerPlayer(true);
if (damager == null)
return;
GameTeam damageeTeam = GetTeam(damagee);
if (damageeTeam == null)
return;
GameTeam damagerTeam = GetTeam(damager);
if (damagerTeam == null)
return;
if (damagerTeam.equals(damageeTeam))
return;
//Count
int count = 1;
if (GetKit(damager) != null)
{
if (GetKit(damager) instanceof KitRifle)
{
count = 3;
}
if (GetKit(damager) instanceof KitSniper && event.GetProjectile() instanceof Arrow)
{
count = ((KitSniper) GetKit(damager)).getPaintDamage((Arrow) event.GetProjectile());
if (count == -1)
count = 1;
}
}
//Out
if (color(damagee, count))
{
for (Player player : UtilServer.getPlayers())
UtilPlayer.message(player, damageeTeam.GetColor() + damagee.getName() + ChatColor.RESET + " was painted by " +
damagerTeam.GetColor() + damager.getName() + ChatColor.RESET + "!");
playerOut(damagee, damager);
AddGems(damager, 2, "Kills", true, true);
AddStat(damager, "Kills", 1, false, false);
AddStat(damagee, "Deaths", 1, false, false);
Bukkit.getPluginManager().callEvent(new PaintballEvent(damagee, damager));
}
//Hit Sound
Player player = event.GetDamagerPlayer(true);
if (player != null)
player.playSound(player.getLocation(), Sound.ORB_PICKUP, 1f, 3f);
}
@EventHandler
public void armorRemoveCancel(InventoryClickEvent event)
{
if (IsLive())
event.setCancelled(true);
}
public boolean color(Player player, int amount)
{
//Get Non-Coloured
ArrayList<ItemStack> nonColored = new ArrayList<ItemStack>();
for (ItemStack stack : player.getInventory().getArmorContents())
{
if (!(stack.getItemMeta() instanceof LeatherArmorMeta))
continue;
LeatherArmorMeta meta = (LeatherArmorMeta)stack.getItemMeta();
if (meta.getColor().equals(Color.RED) || meta.getColor().equals(Color.AQUA))
nonColored.add(stack);
}
//Color Piece
for (int i=0 ; i<amount ; i++)
{
if (nonColored.isEmpty())
break;
ItemStack armor = nonColored.remove(UtilMath.r(nonColored.size()));
LeatherArmorMeta meta = (LeatherArmorMeta)armor.getItemMeta();
meta.setColor(Color.PURPLE);
armor.setItemMeta(meta);
}
player.setHealth(Math.min(20, Math.max(2, nonColored.size() * 5 + 1)));
return nonColored.isEmpty();
}
public void playerOut(Player player, Player killer)
{
//State
SetPlayerState(player, PlayerState.OUT);
player.setHealth(20);
//Conditions
Manager.GetCondition().Factory().Blind("Hit", player, player, 1.5, 0, false, false, false);
Manager.GetCondition().Factory().Cloak("Hit", player, player, 9999, false, false);
_doubles.put(player, new PlayerCopyPaintball(this, player, killer, GetTeam(player).GetColor()));
//Settings
player.setAllowFlight(true);
player.setFlying(true);
((CraftPlayer)player).getHandle().spectating = true;
((CraftPlayer)player).getHandle().k = false;
UtilAction.velocity(player, new Vector(0,1.2,0));
}
@Override
public void restartRound()
{
super.restartRound();
Iterator<PlayerCopyPaintball> copyIterator = _doubles.values().iterator();
while (copyIterator.hasNext())
{
PlayerCopyPaintball copy = copyIterator.next();
copy.GetEntity().remove();
copy.GetHolo().stop();
copy.GetSaveMe().stop();
copyIterator.remove();
}
}
@Override
public String GetMode()
{
return "Super Paintstrike";
}
}

View File

@ -1,100 +0,0 @@
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.GameType;
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;
/**
* BunnyHop gamemode for One in the quiver
*
* @author xXVevzZXx
*/
public class BunnyHop extends Quiver
{
private int _arrowAmount;
public BunnyHop(ArcadeManager manager)
{
super(manager, new Kit[]
{
new KitModedLeaper(manager)
}, GameType.Brawl);
_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
public String GetMode()
{
return "Bunny Hop";
}
}

View File

@ -1,81 +0,0 @@
package nautilus.game.arcade.game.games.quiver.modes;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.inventory.ItemStack;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.game.games.quiver.Quiver;
import nautilus.game.arcade.game.games.quiver.QuiverTeamBase;
import nautilus.game.arcade.game.games.quiver.kits.KitBarrage;
import nautilus.game.arcade.game.games.quiver.kits.KitBeserker;
import nautilus.game.arcade.game.games.quiver.kits.KitNecromancer;
import nautilus.game.arcade.game.games.quiver.kits.KitNewNinja;
import nautilus.game.arcade.game.games.quiver.kits.KitPyromancer;
import nautilus.game.arcade.game.games.quiver.kits.KitSkyWarrior;
import nautilus.game.arcade.game.games.quiver.modes.module.ModuleStandaloneUltimate;
import nautilus.game.arcade.kit.Kit;
/**
* UltimateOITQ is a mode of {@link Quiver} which implements the ultimate kits from {@link QuiverTeamBase}
*
* @author xXVevzZXx
*/
public class UltimateOITQ extends Quiver
{
public UltimateOITQ(ArcadeManager manager)
{
super(manager, new Kit[]
{
new KitBeserker(manager),
new KitNewNinja(manager),
new KitBarrage(manager),
new KitSkyWarrior(manager),
new KitPyromancer(manager),
new KitNecromancer(manager)
}, GameType.Brawl);
registerModule(new ModuleStandaloneUltimate(30F));
}
@EventHandler
public void clearArmor(UpdateEvent event)
{
if (!IsLive())
return;
if (Manager.GetGame() == null)
return;
if (event.getType() != UpdateType.FASTER)
return;
for (Player player : GetPlayers(true))
{
if (player.getInventory().getBoots() != null && player.getInventory().getBoots().getType() == Material.LEATHER_BOOTS)
player.getInventory().setBoots(null);
if (player.getInventory().getLeggings() != null && player.getInventory().getLeggings().getType() == Material.LEATHER_LEGGINGS)
player.getInventory().setLeggings(null);
if (player.getInventory().getChestplate() != null && player.getInventory().getChestplate().getType() == Material.LEATHER_CHESTPLATE)
player.getInventory().setChestplate(null);
if (player.getInventory().getHelmet() != null && player.getInventory().getHelmet().getType() == Material.LEATHER_HELMET)
player.getInventory().setHelmet(null);
}
}
@Override
public String GetMode()
{
return "Ultimate OITQ";
}
}

View File

@ -1,46 +0,0 @@
package nautilus.game.arcade.game.games.quiver.modes.kits;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilServer;
import mineplex.core.game.kit.GameKit;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.perks.PerkTripleJump;
public class KitModedLeaper extends Kit
{
public KitModedLeaper(ArcadeManager manager)
{
super(manager, GameKit.OITQ_LEAPER, new PerkTripleJump("Triple Jump", 1.2, 0.9, true));
}
@Override
public void GiveItems(Player player)
{
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_AXE));
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.BOW));
if (Manager.GetGame().GetState() == GameState.Live)
{
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(262, (byte)0, 2, F.item("Super Arrow")));
final Player fPlayer = player;
UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(Manager.getPlugin(), new Runnable()
{
public void run()
{
UtilInv.Update(fPlayer);
}
}, 10);
}
}
}

View File

@ -1,241 +0,0 @@
package nautilus.game.arcade.game.games.quiver.modes.module;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTextBottom;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.core.combat.CombatComponent;
import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
import nautilus.game.arcade.game.games.quiver.QuiverTeamBase;
import nautilus.game.arcade.game.games.quiver.module.ModuleUltimate;
import nautilus.game.arcade.game.games.quiver.ultimates.UltimatePerk;
import nautilus.game.arcade.game.modules.Module;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.Perk;
/**
* Stanalone version of the QuiverTeamBase Module {@link ModuleUltimate}
* This needed to be done because the {@link QuiverTeamBase} Module
* is made for QuiverTeamBase only
*
* @author xXVevzZXx
*/
public class ModuleStandaloneUltimate extends Module
{
private static final int ULTIMATE_PERCENTAGE_INCREASE_KILL = 5;
private static final int ULTIMATE_PERCENTAGE_INCREASE_ASSIST = 2;
private float _percentage;
private Map<UUID, Float> _ultimatePercentage = new HashMap<>();
private boolean _colouredMessage;
public ModuleStandaloneUltimate(float percentage)
{
_percentage = percentage;
}
@EventHandler
public void update(UpdateEvent event)
{
if (event.getType() != UpdateType.SEC)
{
return;
}
_colouredMessage = !_colouredMessage;
for (Player player : getGame().GetPlayers(true))
{
Kit kit = getGame().GetKit(player);
if (kit == null || UtilPlayer.isSpectator(player))
{
continue;
}
if (!_ultimatePercentage.containsKey(player.getUniqueId()))
{
_ultimatePercentage.put(player.getUniqueId(), 0F);
}
double percentage = _ultimatePercentage.get(player.getUniqueId());
if (percentage >= _percentage)
{
UtilTextBottom.display((_colouredMessage ? C.cWhiteB : C.cAquaB) + "ULTIMATE READY (PRESS SNEAK)", player);
player.setExp(0.999F);
player.setLevel(100);
continue;
}
String percentageFormatted = new DecimalFormat("0.0").format(percentage/_percentage*100);
UtilTextBottom.displayProgress("Ultimate", percentage / _percentage, percentageFormatted + "%", player);
player.setExp((float) percentage / _percentage);
player.setLevel((int) Math.round(percentage/_percentage*100));
for (Perk perk : kit.GetPerks())
{
if (perk instanceof UltimatePerk)
{
UltimatePerk ultimate = (UltimatePerk) perk;
if (ultimate.isUsingUltimate(player))
{
continue;
}
incrementUltimate(player, ultimate.getChargePassive());
}
}
}
}
@EventHandler
public void onCombatDeath(CombatDeathEvent event)
{
if (event.GetEvent().getEntity() == null || event.GetLog().GetKiller() == null)
{
return;
}
if (!(event.GetEvent().getEntity() instanceof Player))
{
return;
}
Player player = UtilPlayer.searchExact(event.GetLog().GetKiller().GetName());
if (player == null)
{
return;
}
incrementUltimate(player, ULTIMATE_PERCENTAGE_INCREASE_KILL);
for (CombatComponent combatComponent : event.GetLog().GetAttackers())
{
if (event.GetLog().GetKiller() != null && combatComponent.equals(event.GetLog().GetKiller()))
{
continue;
}
if (combatComponent.IsPlayer())
{
Player assitedPlayer = UtilPlayer.searchExact(event.GetLog().GetKiller().GetName());
if (assitedPlayer != null)
{
incrementUltimate(assitedPlayer, ULTIMATE_PERCENTAGE_INCREASE_ASSIST);
}
}
}
}
public void incrementUltimate(Player player, float percentage)
{
Kit kit = getGame().GetKit(player);
for (Perk perk : kit.GetPerks())
{
if (perk instanceof UltimatePerk)
{
UltimatePerk ultimate = (UltimatePerk) perk;
if (ultimate.isUsingUltimate(player))
{
return;
}
}
}
_ultimatePercentage.put(player.getUniqueId(), _ultimatePercentage.get(player.getUniqueId()) + percentage);
}
public void resetUltimate(Player player, boolean inform)
{
if (inform)
{
player.sendMessage(F.main("Game", "Your Ultimate charge has been reset!"));
}
_ultimatePercentage.put(player.getUniqueId(), 0F);
}
@EventHandler
public void onPlayerToggleSneak(PlayerToggleSneakEvent event)
{
if (!getGame().IsLive())
{
return;
}
Player player = event.getPlayer();
Kit kit = getGame().GetKit(player);
if (!event.isSneaking() || kit == null || UtilPlayer.isSpectator(player))
{
return;
}
if (_ultimatePercentage.get(player.getUniqueId()) < _percentage)
{
return;
}
for (Perk perk : kit.GetPerks())
{
if (perk instanceof UltimatePerk)
{
UltimatePerk ultimate = (UltimatePerk) perk;
if (ultimate.isUsable(player))
{
ultimate.activate(player);
resetUltimate(player, false);
}
}
}
}
@Override
public void cleanup()
{
UtilServer.Unregister(this);
for (UUID uuid : _ultimatePercentage.keySet())
{
Player player = UtilPlayer.searchExact(uuid);
for (Perk perk : getGame().GetKit(player).GetPerks())
{
if (!(perk instanceof UltimatePerk))
{
continue;
}
UltimatePerk ultimate = (UltimatePerk) perk;
if (ultimate.isUsingUltimate(player))
{
ultimate.cancel(player);
}
}
}
}
}

View File

@ -1,94 +0,0 @@
package nautilus.game.arcade.game.games.sheep.modes;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.inventory.ItemStack;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
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.sheep.SheepGame;
import nautilus.game.arcade.game.modules.ChampionsModule;
import nautilus.game.arcade.game.modules.TeamArmorModule;
import nautilus.game.arcade.kit.Kit;
/**
* EweHeroes gaemode for Sheep quest
*
* @author xXVevzZXx
*/
public class EweHeroes extends SheepGame
{
public EweHeroes(ArcadeManager manager)
{
super(manager,
new Kit[]
{
new KitBrute(manager),
new KitRanger(manager),
new KitKnight(manager),
new KitMage(manager),
new KitAssassin(manager),
}, GameType.Brawl);
Manager.GetDamage().UseSimpleWeaponDamage = false;
Manager.getCosmeticManager().setHideParticles(true);
Manager.getClassManager().GetItemFactory().getProximityManager().setProxyLimit(6);
getModule(TeamArmorModule.class)
.dontGiveTeamArmor();
new ChampionsModule().register(this);
manager.enableChampionsModules();
}
@EventHandler
public void saddle(UpdateEvent event)
{
if (event.getType() != UpdateType.FASTER)
return;
if (!IsLive())
return;
for (Player player : GetPlayers(true))
{
player.getInventory().setItem(7, new ItemStack(Material.SADDLE));
}
}
@EventHandler
public void end(GameStateChangeEvent event)
{
if (event.GetState() != GameState.End)
return;
Manager.disableChampionsModules();
}
@Override
public void inventoryWool(Player player, int count, Entity sheep)
{
}
@Override
public String GetMode()
{
return "Heroes Of The Ewe";
}
}

View File

@ -1,39 +0,0 @@
package nautilus.game.arcade.game.games.sheep.modes;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.game.modules.AbsorptionFix;
import nautilus.game.arcade.game.games.sheep.SheepGame;
import nautilus.game.arcade.game.games.sheep.modes.kits.KitShepherd;
import nautilus.game.arcade.game.modules.TeamArmorModule;
import nautilus.game.arcade.kit.Kit;
/**
* OverpoweredSheepQuest
*
* @author xXVevzZXx
*/
public class OverpoweredSheepQuest extends SheepGame
{
public OverpoweredSheepQuest(ArcadeManager manager)
{
super(manager, new Kit[]
{
new KitShepherd(manager)
}, GameType.Brawl);
getModule(TeamArmorModule.class)
.dontGiveTeamArmor();
new AbsorptionFix()
.register(this);
}
@Override
public String GetMode()
{
return "OP Sheep Quest";
}
}

View File

@ -1,77 +0,0 @@
package nautilus.game.arcade.game.games.sheep.modes;
import org.bukkit.event.EventHandler;
import mineplex.core.common.Pair;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilTime;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.games.sheep.SheepGame;
/**
* SheepMania is a mode of {@link SheepGame} in which only one Sheep will spawn
*
* @author xXVevzZXx
*/
public class SheepMania extends SheepGame
{
public SheepMania(ArcadeManager manager)
{
super(manager, GameType.Brawl);
setSheepDelay(GameTimeout);
}
@Override
@EventHandler
public void ScoreboardUpdate(UpdateEvent event)
{
if (event.getType() != UpdateType.FAST)
return;
if (!InProgress())
return;
Scoreboard.reset();
Scoreboard.writeNewLine();
Scoreboard.writeGroup(getSheepPens().keySet(), team ->
{
getTeamScores().put(team, getSheepCount(team));
return Pair.create(team.GetColor() + team.GetName(), getSheepCount(team));
}, true);
if (!IsLive())
return;
long time = getGameTime()
- (System.currentTimeMillis() - this.GetStateTime());
Scoreboard.writeNewLine();
Scoreboard.write(C.cYellow + C.Bold + "Time Left");
Scoreboard.write(UtilTime.MakeStr(Math.max(0, time), 0));
Scoreboard.draw();
}
@Override
@EventHandler
public void SheepSpawnStart(GameStateChangeEvent event)
{
if (event.GetState() == GameState.Live)
SheepSpawn();
}
@Override
public String GetMode()
{
return "Sheep Mania";
}
}

View File

@ -1,116 +0,0 @@
package nautilus.game.arcade.game.games.sheep.modes;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.inventory.ItemStack;
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.game.games.sheep.SheepGame;
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.kit.Kit;
/**
* SheepSmash
*
* @author xXVevzZXx
*/
public class SmashSheep extends SheepGame
{
public SmashSheep(ArcadeManager manager)
{
super(manager, 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)
}, GameType.Brawl);
}
@EventHandler
public void saddle(UpdateEvent event)
{
if (event.getType() != UpdateType.FASTER)
return;
if (!IsLive())
return;
for (Player player : GetPlayers(true))
{
player.getInventory().setItem(7, new ItemStack(Material.SADDLE));
}
}
@EventHandler(priority = EventPriority.LOWEST)
public void noFallDamage(CustomDamageEvent event)
{
if (event.IsCancelled())
return;
if (event.GetCause() == DamageCause.FALL)
event.SetCancelled("No Fall Damage");
}
@EventHandler(priority = EventPriority.HIGH)
public void customKnockback(CustomDamageEvent event)
{
if (event.IsCancelled())
return;
if (event.GetDamageePlayer() != null)
event.AddKnockback("Smash Knockback", 1 + 0.1 * (20 - event.GetDamageePlayer().getHealth()));
}
@Override
public String GetMode()
{
return "Smash Sheep";
}
}

View File

@ -1,49 +0,0 @@
package nautilus.game.arcade.game.games.sheep.modes.kits;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import mineplex.core.common.util.C;
import mineplex.core.game.kit.GameKit;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.perks.PerkDoubleJump;
import nautilus.game.arcade.kit.perks.PerkFletcher;
public class KitShepherd extends Kit
{
private static final Perk[] PERKS =
{
new PerkDoubleJump("Double Jump", 1.2, 1.2, true, 8000, true),
new PerkFletcher(4, 10, true)
};
private static final ItemStack[] PLAYER_ITEMS = {
ItemStackFactory.Instance.CreateStack(Material.DIAMOND_SWORD),
ItemStackFactory.Instance.CreateStack(Material.GOLDEN_APPLE, 2),
ItemStackFactory.Instance.CreateStack(Material.BOW),
ItemStackFactory.Instance.CreateStack(Material.SADDLE, (byte) 0, 1,
C.cYellow + C.Bold + "Hold This" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Grab/Hold Sheep")
};
public KitShepherd(ArcadeManager manager)
{
super(manager, GameKit.SHEEP_QUEST_BRUTE, PERKS);
}
@Override
public void GiveItems(Player player)
{
player.getInventory().addItem(PLAYER_ITEMS);
player.getInventory().setHelmet(new ItemStack(Material.DIAMOND_HELMET));
player.getInventory().setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE));
player.getInventory().setLeggings(new ItemStack(Material.DIAMOND_LEGGINGS));
player.getInventory().setBoots(new ItemStack(Material.DIAMOND_BOOTS));
}
}

View File

@ -1,30 +0,0 @@
package nautilus.game.arcade.game.games.skywars.modes;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.game.modules.AbsorptionFix;
import nautilus.game.arcade.game.games.skywars.TeamSkywars;
/**
* OverpoweredSkywars gamemode for Skywars
*
* @author xXVevzZXx
*/
public class OverpoweredSkywars extends TeamSkywars
{
public OverpoweredSkywars(ArcadeManager manager)
{
super(manager, GameType.Brawl);
new AbsorptionFix()
.register(this);
}
@Override
public String GetMode()
{
return "OP Skywars";
}
}

View File

@ -1,121 +0,0 @@
package nautilus.game.arcade.game.games.skywars.modes;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.recharge.Recharge;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.game.games.skywars.SoloSkywars;
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.kit.Kit;
/**
* SkySmash
*
* @author xXVevzZXx
*/
public class SkySmash extends SoloSkywars
{
public SkySmash(ArcadeManager manager)
{
super(manager, 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)
}, GameType.Brawl);
}
@EventHandler(priority = EventPriority.LOWEST)
public void noFallDamage(CustomDamageEvent event)
{
if (event.IsCancelled())
return;
if (event.GetCause() == DamageCause.FALL)
event.SetCancelled("No Fall Damage");
}
@EventHandler(priority = EventPriority.HIGH)
public void customKnockback(CustomDamageEvent event)
{
if (event.IsCancelled())
return;
if (event.GetDamageePlayer() != null)
event.AddKnockback("Smash Knockback", 1 + 0.1 * (20 - event.GetDamageePlayer().getHealth()));
}
@EventHandler(priority = EventPriority.MONITOR)
public void hungerOnHit(CustomDamageEvent event)
{
if (event.IsCancelled())
return;
Player damager = event.GetDamagerPlayer(true);
if (damager == null)
return;
if (damager.equals(event.GetDamageeEntity()))
return;
if (!(event.GetDamageeEntity() instanceof Player))
return;
if (!Recharge.Instance.use(damager, "Hunger Restore", 250, false, false))
return;
int amount = Math.max(1, (int)(event.GetDamage()/2));
UtilPlayer.hunger(damager, amount);
}
@Override
public String GetMode()
{
return "Sky Smash";
}
}

View File

@ -1,89 +0,0 @@
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.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.modules.AbsorptionFix;
import nautilus.game.arcade.game.games.skywars.SoloSkywars;
/**
* UHCSkywars gamemode for Skywars
*
* @author xXVevzZXx
*/
public class UHCSkywars extends SoloSkywars
{
public UHCSkywars(ArcadeManager manager)
{
super(manager, GameType.Brawl);
SoupEnabled = false;
new AbsorptionFix()
.register(this);
}
@EventHandler
public void registerObj(GameStateChangeEvent event)
{
if(event.GetState() == GameState.Prepare)
{
Objective objective = Scoreboard.getScoreboard().registerNewObjective("Health", "health");
objective.setDisplaySlot(DisplaySlot.PLAYER_LIST);
}
if(event.GetState() == GameState.Live)
{
for(Player player : GetPlayers(true))
{
player.damage(2);
}
Manager.runSyncLater(new Runnable()
{
@Override
public void run()
{
for(Player player : GetPlayers(true))
{
player.setHealth(player.getMaxHealth());
}
}
}, 10);
}
}
@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

@ -1,154 +0,0 @@
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 nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
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.KitGuardian;
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.KitHipster;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.Perk;
/**
* RandomKitSSM gamemode for SSM
*
* @author xXVevzZXx
*/
public class RandomKitSSM extends SoloSuperSmash
{
private Kit[] _kits;
private int _maxLives;
public RandomKitSSM(ArcadeManager manager)
{
super(manager, new Kit[]{new KitHipster(manager)}, GameType.Brawl);
_maxLives = 5;
_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),
new KitGuardian(manager)
};
}
@Override
@EventHandler(priority = EventPriority.HIGH)
public void gameStart(GameStateChangeEvent event)
{
super.gameStart(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

@ -1,30 +0,0 @@
package nautilus.game.arcade.game.games.smash.modes.kits;
import org.bukkit.entity.Player;
import mineplex.core.game.kit.GameKit;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.game.games.smash.perks.SmashKit;
import nautilus.game.arcade.kit.Perk;
/**
* KitPlayer
*
* @author xXVevzZXx
*/
public class KitHipster extends SmashKit
{
public KitHipster(ArcadeManager manager)
{
super(manager, GameKit.NULL_PLAYER, new Perk[0], null);
}
@Override
public void GiveItems(Player player)
{
}
}

View File

@ -1,121 +0,0 @@
package nautilus.game.arcade.game.games.uhc.modes;
import java.util.HashMap;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.PlayerDeathEvent;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.game.games.uhc.UHCSolo;
/**
* Assassins gamemode for UHC
*
* @author xXVevzZXx
*/
public class Assassins extends UHCSolo
{
private HashMap<Player, Player> _assassins;
public Assassins(ArcadeManager manager)
{
super(manager, GameType.Brawl);
}
@EventHandler
public void setTargets(GameStateChangeEvent event)
{
if (event.GetState() != GameState.Live)
return;
for (Player player : GetPlayers(true))
{
for (Player other : GetPlayers(true))
{
if (GetTeam(player) == GetTeam(other))
continue;
if (_assassins.containsValue(other))
continue;
_assassins.put(player, other);
UtilPlayer.message(player, F.main("Game", "Your target is " + F.game(other.getName()) + ". If you kill another Player no loot will drop."));
}
}
for (Player player : GetPlayers(true))
{
if (!_assassins.containsKey(player))
{
getNewTarget(player);
}
}
}
@EventHandler
public void killPlayer(PlayerDeathEvent event)
{
Player player = event.getEntity();
for (Player other : _assassins.keySet())
{
if (_assassins.get(other) == player)
{
UtilPlayer.message(other, F.main("Game", "Your target has died."));
Player newTarget = _assassins.get(player);
if (GetTeam(newTarget) != GetTeam(other))
{
_assassins.put(other, newTarget);
}
else
{
getNewTarget(other);
}
}
}
if (event.getEntity().getKiller() instanceof Player)
{
Player killer = event.getEntity().getKiller();
if (_assassins.get(killer) != event.getEntity())
{
event.getDrops().clear();
event.setDroppedExp(0);
}
}
}
public void getNewTarget(Player player)
{
Player other = GetPlayers(true).get(UtilMath.r(GetPlayers(true).size()));
while (other == player || GetTeam(player) == GetTeam(other))
{
other = GetPlayers(true).get(UtilMath.r(GetPlayers(true).size()));
}
_assassins.put(player, other);
UtilPlayer.message(player, F.main("Game", "Your target is " + F.game(other.getName()) + ". If you kill another Player no loot will drop."));
UtilInv.insert(player, ItemStackFactory.Instance.CreateStack(Material.PAPER, (byte) 0, 1, "Your target is: " + F.game(other.getName())));
}
@Override
public String GetMode()
{
return "Assassins";
}
}

View File

@ -1,49 +0,0 @@
package nautilus.game.arcade.game.games.uhc.modes;
import java.util.HashMap;
import org.bukkit.Material;
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.games.uhc.UHCSolo;
/**
* BloodDiamonds gamemode for UHC
*
* @author xXVevzZXx
*/
public class BloodDiamonds extends UHCSolo
{
private HashMap<Material, Double> _oreDamage;
public BloodDiamonds(ArcadeManager manager)
{
super(manager, GameType.Brawl);
_oreDamage = new HashMap<>();
_oreDamage.put(Material.DIAMOND_ORE, 1D);
}
@EventHandler
public void damageOres(BlockBreakEvent event)
{
for (Material mat : _oreDamage.keySet())
{
if (event.getBlock().getType() == mat)
{
event.getPlayer().damage(_oreDamage.get(mat));
}
}
}
@Override
public String GetMode()
{
return "Blood Diamonds";
}
}

View File

@ -1,82 +0,0 @@
package nautilus.game.arcade.game.games.uhc.modes;
import java.util.List;
import java.util.Set;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.inventory.ItemStack;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilItem;
import mineplex.core.common.util.UtilMath;
import mineplex.core.itemstack.ItemBuilder;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.game.games.uhc.UHCSolo;
import nautilus.game.arcade.game.modules.CutCleanModule;
import nautilus.game.arcade.game.modules.ItemGiverModule;
import nautilus.game.arcade.game.modules.OreVeinEditorModule;
/**
* GodBattles gamemode for UHC
*/
public class GodBattles extends UHCSolo
{
// The set of materials which will be considered as an ore
private static final Set<Material> ORE_MATERIALS = Sets.newHashSet(
Material.COAL_ORE,
Material.REDSTONE_ORE,
Material.IRON_ORE,
Material.GOLD_ORE,
Material.DIAMOND_ORE
);
// The set of materials which will act as replacements
private static final List<Material> ORE_REPLACEMENTS = Lists.newArrayList(
Material.GOLD_ORE,
Material.DIAMOND_ORE
);
public GodBattles(ArcadeManager manager)
{
super(manager, GameType.Brawl);
new CutCleanModule()
.associateBlockDrop(
Material.GOLD_ORE,
new ItemBuilder(Material.GOLD_BLOCK).build()
)
.register(this);
new ItemGiverModule()
.withItem(UtilItem.makeUnbreakable(new ItemStack(Material.DIAMOND_PICKAXE)))
.register(this);
new OreVeinEditorModule()
.useFilter(block -> ORE_MATERIALS.contains(block.getType()))
.useEditor(vein ->
{
Material ore = ORE_REPLACEMENTS.get(UtilMath.r(ORE_REPLACEMENTS.size()));
for (Block block : vein)
{
if(!ORE_REPLACEMENTS.contains(block.getType()))
{
if(!UtilBlock.isVisible(block))
block.setType(ore);
}
}
})
.register(this);
}
@Override
public String GetMode()
{
return "God Battles";
}
}

View File

@ -1,11 +1,8 @@
package nautilus.game.arcade.managers;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
@ -14,8 +11,6 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Collectors;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@ -52,7 +47,7 @@ public class GameCreationManager implements Listener
private GameType _nextGame = null;
private GameMode _lastMode = null;
private String _lastMode = null;
private final List<GameType> _lastGames = new ArrayList<>();
private Map<GameType, List<String>> _maps;
@ -245,11 +240,6 @@ public class GameCreationManager implements Listener
}
}
if (gameType == null)
{
return;
}
Class<? extends Game> gameClass = gameType.getGameClass();
// If map voting and ONLY map voting is enabled
@ -282,43 +272,38 @@ public class GameCreationManager implements Listener
_lastGames.add(0, gameType);
boolean setVars = false;
try
// GameModes
if (gameType.hasGameModes())
{
List<String> gameModes = Manager.GetServerConfig().GameModeList;
GameMode mode = null;
// First check if there is an overriding preference
if (ModePref != null)
{
for (GameMode modes : gameType.getGameModes())
{
if (modes.equals(ModePref))
{
_lastMode = ModePref;
mode = modes;
gameClass = modes.getGameClass();
setVars = true;
break;
}
mode = getModeByName(gameType.getGameModes(), ModePref.getName());
}
else if (!gameModes.isEmpty())
{
mode = randomGameMode(gameType);
}
if (gameClass == null)
if (mode != null)
{
gameClass = UtilMath.randomElement(gameType.getGameModes()).getGameClass();
gameClass = mode.getGameClass();
_lastMode = mode.getName();
}
}
// Maps
loadMaps(gameType);
ModePref = null;
Game game = gameClass.getConstructor(ArcadeManager.class).newInstance(Manager);
if (setVars)
try
{
modifyGameConfiguration(gameClass, mode, game);
}
// Maps
loadMaps(gameType);
// Create Game instance
Game game = gameClass.getConstructor(ArcadeManager.class).newInstance(Manager);
Manager.SetGame(game);
}
@ -358,7 +343,7 @@ public class GameCreationManager implements Listener
_maps = new HashMap<>();
// Map
for (GameType type : Game.getWorldHostNames(gameType, gameType.getGameClass()))
for (GameType type : Game.getWorldHostNames(gameType))
{
_maps.put(type, Manager.LoadFiles(type.getName()));
}
@ -452,45 +437,23 @@ public class GameCreationManager implements Listener
private GameMode randomGameMode(GameType type)
{
ArrayList<String> modes = Manager.GetServerConfig().GameModeList;
if (modes.size() == 0)
return null;
List<String> modes = Manager.GetServerConfig().GameModeList;
GameMode[] gameModes = type.getGameModes();
String mode = modes.get(UtilMath.r(modes.size()));
int i = 0;
while ((_lastMode == null || mode.equalsIgnoreCase(_lastMode.getName())) && !containsMode(gameModes, mode) && i != 25)
{
mode = modes.get(UtilMath.r(modes.size()));
i++;
return UtilAlg.Random(Arrays.stream(type.getGameModes())
.filter(gameMode -> modes.contains(gameMode.getName()) && (_lastMode == null || _lastMode.equals(gameMode.getName())))
.collect(Collectors.toList()));
}
return getMode(gameModes, mode);
private GameMode getModeByName(GameMode[] gameModes, String gameModeName)
{
for (GameMode modes : gameModes)
{
if (modes.getName().equals(gameModeName))
{
return modes;
}
}
private boolean containsMode(GameMode[] modes, String mode)
{
for (GameMode otherMode : modes)
{
if (otherMode.getName().equalsIgnoreCase(mode))
{
return true;
}
}
return false;
}
private GameMode getMode(GameMode[] modes, String mode)
{
for (GameMode otherMode : modes)
{
if (otherMode.getName().equalsIgnoreCase(mode))
{
return otherMode;
}
}
return null;
}
@ -505,260 +468,6 @@ public class GameCreationManager implements Listener
return _nextGame;
}
@SuppressWarnings("unchecked")
private void modifyGameConfiguration(Class<? extends Game> gameClass, GameMode mode, Game game)
{
ArrayList<Class<? extends Game>> classes = new ArrayList<>();
Class<? extends Game> superClass = gameClass;
while (superClass != Game.class)
{
classes.add(superClass);
superClass = (Class<? extends Game>) superClass.getSuperclass();
}
classes.add(Game.class);
HashMap<String, String> varSet = Manager.GetServerConfig().GameModeMods.get(mode.getName().replaceAll(" ", ""));
if (varSet == null)
return;
for (Class<? extends Game> clazz : classes)
{
for (String var : varSet.keySet())
{
String value = varSet.get(var);
if (value.contains("("))
{
boolean add = value.contains("+");
boolean remove = value.contains("-");
value = value.split("\\(")[1];
value = value.replace(")", "");
Field f = getField(clazz, var);
if (f == null)
continue;
processList(clazz, game, var, value.contains(":") ? value.split("\\:") : new String[]
{
value
},
add, remove, !List.class.isAssignableFrom(f.getType()));
}
else if (value.contains("["))
{
value = value.split("\\[")[1];
value = value.replace("]", "");
Map<String, String> varMap = new HashMap<>();
String[] values = value.contains(":") ? value.split(":") : new String[]
{value};
for (String keyValueSet : values)
{
String key = keyValueSet.split("\\$")[0];
String val = keyValueSet.split("\\$")[1];
varMap.put(key, val);
}
processMap(clazz, game, var, varMap);
}
else
{
processVariable(clazz, game, var, value);
}
}
}
}
@SuppressWarnings("unchecked")
private void processMap(Class<? extends Game> clazz, Game game, String var,
Map<String, String> map)
{
Field f = getField(clazz, var);
if (f == null)
return;
try
{
f.setAccessible(true);
ParameterizedType type = (ParameterizedType) f.getGenericType();
Type keyGeneric = type.getActualTypeArguments()[0];
Class<?> keyGenericClazz = Class.forName(keyGeneric.getTypeName());
Type valueGeneric = type.getActualTypeArguments()[1];
Class<?> valueGenericClazz = Class.forName(valueGeneric.getTypeName());
Map<Object, Object> currentMap = (Map<Object, Object>) f.get(game);
for (String key : map.keySet())
{
currentMap.put(parseValue(keyGenericClazz, key, game),
parseValue(valueGenericClazz, map.get(key), game));
}
f.setAccessible(false);
}
catch (Exception ex)
{
System.out.println("Error while editing map");
}
}
@SuppressWarnings("unchecked")
private void processList(Class<? extends Game> clazz, Game game, String var, String[] value,
boolean add, boolean remove, boolean array)
{
Field f = getField(clazz, var);
if (f == null)
return;
try
{
f.setAccessible(true);
if (array)
{
f.set(game, Array.newInstance(f.getType().getComponentType(), value.length));
for (int i = 0; i < value.length; i++)
{
((Object[]) f.get(game))[i] = parseValue(f.getType().getComponentType(), value[i], game);
}
}
else
{
ParameterizedType type = (ParameterizedType) f.getGenericType();
Type generic = type.getActualTypeArguments()[0];
Class<?> genericClazz = Class.forName(generic.getTypeName());
ArrayList<Object> currentList = (ArrayList<Object>) f.get(game);
if (!add && !remove)
{
add = true;
currentList.clear();
}
for (String finalValue : value)
{
if (add)
{
currentList.add(parseValue(genericClazz, finalValue, game));
}
else if (remove)
{
currentList.remove(parseValue(genericClazz, finalValue, game));
}
}
}
f.setAccessible(false);
}
catch (Exception ex)
{
System.out.println("Error while editing list");
ex.printStackTrace();
}
}
private void processVariable(Class<? extends Game> clazz, Game game, String var, String value)
{
Field f = getField(clazz, var);
if (f == null)
return;
try
{
f.setAccessible(true);
Object finalValue = parseValue(f.getType(), value, game);
if (value != null)
{
f.set(game, finalValue);
}
f.setAccessible(false);
}
catch (Exception ex)
{
ex.printStackTrace();
System.out.println("Error while setting variable");
}
}
private Object parseValue(Class<?> clazz, String value, Game game)
{
try
{
if (clazz == boolean.class)
{
return Boolean.parseBoolean(value);
}
else if (clazz == String.class)
{
return value;
}
else if (clazz == int.class || clazz == Integer.class)
{
return Integer.parseInt(value);
}
else if (clazz == float.class || clazz == Float.class)
{
return Float.parseFloat(value);
}
else if (clazz == double.class || clazz == Double.class)
{
return Double.parseDouble(value);
}
else if (clazz == long.class || clazz == Long.class)
{
return Long.parseLong(value);
}
else if (clazz == byte.class || clazz == Byte.class)
{
return Byte.parseByte(value);
}
else if (clazz == short.class || clazz == Short.class)
{
return Short.parseShort(value);
}
else if (clazz == Material.class)
{
return Material.valueOf(value);
}
else if (clazz == ChatColor.class)
{
return ChatColor.getByChar(value);
}
return null;
}
catch (Exception ex)
{
System.out.println("Error while parsing value");
return null;
}
}
private Field getField(Class<? extends Game> clazz, String var)
{
Field f = null;
try
{
f = clazz.getDeclaredField(var);
}
catch (Exception e)
{
try
{
f = clazz.getDeclaredField("_" + var);
}
catch (Exception ex)
{
}
}
return f;
}
public VotingManager getVotingManager()
{
return _votingManager;