Remove all Brawls and change how they work
This commit is contained in:
parent
f34bdd64d3
commit
4873ac7b74
|
@ -48,15 +48,14 @@ public class ParticleFiveYear extends ParticleGadget
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Location location = player.getLocation().add(0, 1, 0);
|
|
||||||
|
|
||||||
if (Manager.isMoving(player))
|
if (Manager.isMoving(player))
|
||||||
{
|
{
|
||||||
new BabyFireworkEffect(location, Color.ORANGE, 1)
|
new BabyFireworkEffect(player.getLocation().add(0, 0.3, 0), Color.ORANGE, Color.BLACK)
|
||||||
.start();
|
.start();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Location location = player.getLocation().add(0, 1, 0);
|
||||||
location.setPitch(0);
|
location.setPitch(0);
|
||||||
Vector direction = location.getDirection();
|
Vector direction = location.getDirection();
|
||||||
location.add(UtilAlg.getRight(direction).multiply(0.3));
|
location.add(UtilAlg.getRight(direction).multiply(0.3));
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package nautilus.game.arcade;
|
package nautilus.game.arcade;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import net.minecraft.server.v1_8_R3.MinecraftServer;
|
import net.minecraft.server.v1_8_R3.MinecraftServer;
|
||||||
|
|
||||||
|
@ -271,40 +270,22 @@ public class Arcade extends JavaPlugin
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
System.out.println(gameName);
|
System.out.println("Found GameType: " + gameName);
|
||||||
GameType type = GameType.valueOf(gameName);
|
GameType type = GameType.valueOf(gameName);
|
||||||
config.GameList.add(type);
|
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)
|
System.out.println("Found GameMode: " + gameMode);
|
||||||
{
|
config.GameModeList.add(gameMode);
|
||||||
if(_serverConfiguration.getServerGroup().getModes().contains(","))
|
|
||||||
{
|
|
||||||
for (String modeName : _serverConfiguration.getServerGroup().getModes().split(","))
|
|
||||||
{
|
|
||||||
addGamemode(modeName, config);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
addGamemode(_serverConfiguration.getServerGroup().getModes(), config);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
System.out.println("Error reading Gamemode variable values : ");
|
|
||||||
ex.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.out.println("Error reading ServerConfiguration values : " + ex.getMessage());
|
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());
|
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,88 +4,42 @@ import mineplex.core.common.MinecraftVersion;
|
||||||
import mineplex.core.common.Pair;
|
import mineplex.core.common.Pair;
|
||||||
import nautilus.game.arcade.game.Game;
|
import nautilus.game.arcade.game.Game;
|
||||||
|
|
||||||
/**
|
|
||||||
* This Object represents a Gamemode used in the GameType constructor
|
|
||||||
*
|
|
||||||
* @author xXVevzZXx
|
|
||||||
*/
|
|
||||||
public class GameMode
|
public class GameMode
|
||||||
{
|
{
|
||||||
|
|
||||||
private Class<? extends Game> _gameMode;
|
private final Class<? extends Game> _gameMode;
|
||||||
private GameType _gameType;
|
private final String _name;
|
||||||
private String _name;
|
private final Pair<MinecraftVersion, String>[] _resourcePackUrls;
|
||||||
|
private final boolean _enforceResourcePack;
|
||||||
|
|
||||||
private Pair<MinecraftVersion, String>[] _resourcePackUrls;
|
public GameMode(Class<? extends Game> gameMode, String name)
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
this(gameMode, gameType, name, null, false);
|
this(gameMode, name, null, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public GameMode(Class<? extends Game> gameMode, String name, Pair<MinecraftVersion, String>[] resourcePackUrls, boolean enforceResourcePack)
|
||||||
*
|
|
||||||
* @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)
|
|
||||||
{
|
{
|
||||||
_gameMode = gameMode;
|
_gameMode = gameMode;
|
||||||
_gameType = gameType;
|
|
||||||
_name = name;
|
_name = name;
|
||||||
_resourcePackUrls = resourcePackUrls;
|
_resourcePackUrls = resourcePackUrls;
|
||||||
_enforceResourcePack = enforceResourcePack;
|
_enforceResourcePack = enforceResourcePack;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @return Game class
|
|
||||||
*/
|
|
||||||
public Class<? extends Game> getGameClass()
|
public Class<? extends Game> getGameClass()
|
||||||
{
|
{
|
||||||
return _gameMode;
|
return _gameMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @return Gamemode name
|
|
||||||
*/
|
|
||||||
public String getName()
|
public String getName()
|
||||||
{
|
{
|
||||||
return _name;
|
return _name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @return Gamemode gametype
|
|
||||||
*/
|
|
||||||
public GameType getType()
|
|
||||||
{
|
|
||||||
return _gameType;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @return Gamemode resource pack URLs
|
|
||||||
*/
|
|
||||||
public Pair<MinecraftVersion, String>[] getResPackURLs()
|
public Pair<MinecraftVersion, String>[] getResPackURLs()
|
||||||
{
|
{
|
||||||
return _resourcePackUrls;
|
return _resourcePackUrls;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @return Gamemode enforcing of resource packs
|
|
||||||
*/
|
|
||||||
public boolean enforceResourcePack()
|
public boolean enforceResourcePack()
|
||||||
{
|
{
|
||||||
return _enforceResourcePack;
|
return _enforceResourcePack;
|
||||||
|
|
|
@ -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.battleroyale.BattleRoyaleSolo;
|
||||||
import nautilus.game.arcade.game.games.bossbattles.BossBattles;
|
import nautilus.game.arcade.game.games.bossbattles.BossBattles;
|
||||||
import nautilus.game.arcade.game.games.bridge.Bridge;
|
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.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.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.buildmavericks.BuildMavericks;
|
||||||
import nautilus.game.arcade.game.games.cakewars.CakeWars;
|
import nautilus.game.arcade.game.games.cakewars.CakeWars;
|
||||||
import nautilus.game.arcade.game.games.cakewars.modes.CakeWarsDuos;
|
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.ChampionsCTF;
|
||||||
import nautilus.game.arcade.game.games.champions.ChampionsDominate;
|
import nautilus.game.arcade.game.games.champions.ChampionsDominate;
|
||||||
import nautilus.game.arcade.game.games.champions.ChampionsTDM;
|
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.christmas.Christmas;
|
||||||
import nautilus.game.arcade.game.games.christmasnew.ChristmasNew;
|
import nautilus.game.arcade.game.games.christmasnew.ChristmasNew;
|
||||||
import nautilus.game.arcade.game.games.deathtag.DeathTag;
|
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.event.EventGame;
|
||||||
import nautilus.game.arcade.game.games.evolution.Evolution;
|
import nautilus.game.arcade.game.games.evolution.Evolution;
|
||||||
import nautilus.game.arcade.game.games.gladiators.Gladiators;
|
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.gravity.Gravity;
|
||||||
import nautilus.game.arcade.game.games.halloween.Halloween;
|
import nautilus.game.arcade.game.games.halloween.Halloween;
|
||||||
import nautilus.game.arcade.game.games.halloween2016.Halloween2016;
|
import nautilus.game.arcade.game.games.halloween2016.Halloween2016;
|
||||||
import nautilus.game.arcade.game.games.hideseek.HideSeek;
|
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.lobbers.BombLobbers;
|
||||||
import nautilus.game.arcade.game.games.micro.Micro;
|
import nautilus.game.arcade.game.games.micro.Micro;
|
||||||
import nautilus.game.arcade.game.games.milkcow.MilkCow;
|
import nautilus.game.arcade.game.games.milkcow.MilkCow;
|
||||||
import nautilus.game.arcade.game.games.minecraftleague.MinecraftLeague;
|
import nautilus.game.arcade.game.games.minecraftleague.MinecraftLeague;
|
||||||
import nautilus.game.arcade.game.games.minestrike.Minestrike;
|
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.mineware.BawkBawkBattles;
|
||||||
import nautilus.game.arcade.game.games.moba.MobaClassic;
|
import nautilus.game.arcade.game.games.moba.MobaClassic;
|
||||||
import nautilus.game.arcade.game.games.monstermaze.MonsterMaze;
|
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.Quiver;
|
||||||
import nautilus.game.arcade.game.games.quiver.QuiverTeamBase;
|
import nautilus.game.arcade.game.games.quiver.QuiverTeamBase;
|
||||||
import nautilus.game.arcade.game.games.quiver.QuiverTeams;
|
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.rings.ElytraRings;
|
||||||
import nautilus.game.arcade.game.games.runner.Runner;
|
import nautilus.game.arcade.game.games.runner.Runner;
|
||||||
import nautilus.game.arcade.game.games.sheep.SheepGame;
|
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.SoloSkyfall;
|
||||||
import nautilus.game.arcade.game.games.skyfall.TeamSkyfall;
|
import nautilus.game.arcade.game.games.skyfall.TeamSkyfall;
|
||||||
import nautilus.game.arcade.game.games.skywars.SoloSkywars;
|
import nautilus.game.arcade.game.games.skywars.SoloSkywars;
|
||||||
import nautilus.game.arcade.game.games.skywars.TeamSkywars;
|
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.SoloSuperSmash;
|
||||||
import nautilus.game.arcade.game.games.smash.SuperSmashDominate;
|
import nautilus.game.arcade.game.games.smash.SuperSmashDominate;
|
||||||
import nautilus.game.arcade.game.games.smash.SuperSmashTraining;
|
import nautilus.game.arcade.game.games.smash.SuperSmashTraining;
|
||||||
import nautilus.game.arcade.game.games.smash.TeamSuperSmash;
|
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.snake.Snake;
|
||||||
import nautilus.game.arcade.game.games.sneakyassassins.SneakyAssassins;
|
import nautilus.game.arcade.game.games.sneakyassassins.SneakyAssassins;
|
||||||
import nautilus.game.arcade.game.games.snowfight.SnowFight;
|
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.UHCSoloSpeed;
|
||||||
import nautilus.game.arcade.game.games.uhc.UHCTeams;
|
import nautilus.game.arcade.game.games.uhc.UHCTeams;
|
||||||
import nautilus.game.arcade.game.games.uhc.UHCTeamsSpeed;
|
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.valentines.Valentines;
|
||||||
import nautilus.game.arcade.game.games.wither.WitherGame;
|
import nautilus.game.arcade.game.games.wither.WitherGame;
|
||||||
import nautilus.game.arcade.game.games.wizards.Wizards;
|
import nautilus.game.arcade.game.games.wizards.Wizards;
|
||||||
|
@ -117,7 +92,10 @@ public enum GameType implements Voteable
|
||||||
Barbarians(Barbarians.class, GameDisplay.Barbarians),
|
Barbarians(Barbarians.class, GameDisplay.Barbarians),
|
||||||
Basketball(Basketball.class, GameDisplay.Basketball),
|
Basketball(Basketball.class, GameDisplay.Basketball),
|
||||||
BossBattles(BossBattles.class, GameDisplay.BossBattles),
|
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),
|
CastleAssault(CastleAssault.class, GameDisplay.CastleAssault),
|
||||||
CastleAssaultTDM(CastleAssaultTDM.class, GameDisplay.CastleAssaultTDM),
|
CastleAssaultTDM(CastleAssaultTDM.class, GameDisplay.CastleAssaultTDM),
|
||||||
CastleSiege(CastleSiegeNew.class, GameDisplay.CastleSiege),
|
CastleSiege(CastleSiegeNew.class, GameDisplay.CastleSiege),
|
||||||
|
@ -239,40 +217,7 @@ public enum GameType implements Voteable
|
||||||
GameType.SurvivalGames, GameType.SurvivalGamesTeams, GameType.TurfWars, GameType.UHC,
|
GameType.SurvivalGames, GameType.SurvivalGamesTeams, GameType.TurfWars, GameType.UHC,
|
||||||
GameType.WitherAssault, GameType.Wizards, GameType.ZombieSurvival}, true),
|
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;
|
GameDisplay _display;
|
||||||
boolean _enforceResourcePack;
|
boolean _enforceResourcePack;
|
||||||
|
@ -342,20 +287,16 @@ public enum GameType implements Voteable
|
||||||
|
|
||||||
public boolean isEnforceResourcePack(Game game)
|
public boolean isEnforceResourcePack(Game game)
|
||||||
{
|
{
|
||||||
if (hasGamemodes())
|
GameMode gameMode = getGameMode(game.getClass());
|
||||||
{
|
|
||||||
return getGameMode(game.getClass()).enforceResourcePack();
|
return gameMode == null ? _enforceResourcePack : gameMode.enforceResourcePack();
|
||||||
}
|
|
||||||
return _enforceResourcePack;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Pair<MinecraftVersion, String>[] getResourcePackUrls(Game game)
|
public Pair<MinecraftVersion, String>[] getResourcePackUrls(Game game)
|
||||||
{
|
{
|
||||||
if (hasGamemodes())
|
GameMode gameMode = getGameMode(game.getClass());
|
||||||
{
|
|
||||||
return getGameMode(game.getClass()).getResPackURLs();
|
return gameMode == null ? _resourcePacks : gameMode.getResPackURLs();
|
||||||
}
|
|
||||||
return _resourcePacks;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameType[] getMapSource()
|
public GameType[] getMapSource()
|
||||||
|
@ -373,6 +314,7 @@ public enum GameType implements Voteable
|
||||||
return this._display;
|
return this._display;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getName()
|
public String getName()
|
||||||
{
|
{
|
||||||
return _display.getName();
|
return _display.getName();
|
||||||
|
@ -403,25 +345,16 @@ public enum GameType implements Voteable
|
||||||
{
|
{
|
||||||
for (GameMode mode : getGameModes())
|
for (GameMode mode : getGameModes())
|
||||||
{
|
{
|
||||||
if (mode.getGameClass() != null && mode.getGameClass().getName().contentEquals(game.getName()))
|
if (game.equals(mode.getGameClass()))
|
||||||
{
|
{
|
||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameType getModeGameType(Class<? extends Game> game)
|
public boolean hasGameModes()
|
||||||
{
|
|
||||||
return getGameMode(game).getType();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isUsingGameModesMaps()
|
|
||||||
{
|
|
||||||
return _gameMaps;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasGamemodes()
|
|
||||||
{
|
{
|
||||||
return _gameModes.length != 0;
|
return _gameModes.length != 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,7 +81,7 @@ public class SetCommand extends CommandBase<ArcadeManager>
|
||||||
|
|
||||||
if (gameModeStr != null)
|
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"));
|
UtilPlayer.message(caller, F.main("Game", "The selected GameType, " + F.elem(game) + ", does not have any GameModes"));
|
||||||
return;
|
return;
|
||||||
|
@ -103,14 +103,7 @@ public class SetCommand extends CommandBase<ArcadeManager>
|
||||||
|
|
||||||
if (mapSourceStr != null)
|
if (mapSourceStr != null)
|
||||||
{
|
{
|
||||||
Class<? extends Game> gameClass = gameType.getGameClass();
|
List<GameType> matchedGameTypes = getSources(gameType, mapSourceStr, false);
|
||||||
|
|
||||||
if (selectedMode != null)
|
|
||||||
{
|
|
||||||
gameClass = selectedMode.getGameClass();
|
|
||||||
}
|
|
||||||
|
|
||||||
List<GameType> matchedGameTypes = getSources(gameType, gameClass, mapSourceStr, false);
|
|
||||||
if (matchedGameTypes.size() == 0)
|
if (matchedGameTypes.size() == 0)
|
||||||
{
|
{
|
||||||
UtilPlayer.message(caller, F.main("Game", "Could not find a MapSource matching " + F.elem(mapSourceStr)));
|
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)
|
if (mapStr != null)
|
||||||
{
|
{
|
||||||
Class<? extends Game> gameClass = gameType.getGameClass();
|
|
||||||
if (selectedMode != null)
|
|
||||||
{
|
|
||||||
gameClass = selectedMode.getGameClass();
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String> matchedMaps;
|
List<String> matchedMaps;
|
||||||
|
|
||||||
// No particular source specified, we'll use all of them
|
// No particular source specified, we'll use all of them
|
||||||
if (selectedSource == null)
|
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);
|
matchedMaps = matchMaps(mapTypes, mapStr, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -241,7 +228,7 @@ public class SetCommand extends CommandBase<ArcadeManager>
|
||||||
{
|
{
|
||||||
input = input.toLowerCase();
|
input = input.toLowerCase();
|
||||||
|
|
||||||
if (!type.hasGamemodes()) return Collections.emptyList();
|
if (!type.hasGameModes()) return Collections.emptyList();
|
||||||
|
|
||||||
List<GameMode> matches = new ArrayList<>();
|
List<GameMode> matches = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -261,9 +248,9 @@ public class SetCommand extends CommandBase<ArcadeManager>
|
||||||
return matches;
|
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)
|
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];
|
String lastArg = args[args.length - 1];
|
||||||
if (lastArg.startsWith(MODE_PREFIX))
|
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());
|
return matchGameMode(gameType, gameModeStr, true).stream().map(mode -> MODE_PREFIX + mode.getName().replaceAll(" ", "")).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (lastArg.startsWith(SOURCE_PREFIX))
|
else if (lastArg.startsWith(SOURCE_PREFIX))
|
||||||
{
|
{
|
||||||
Class<? extends Game> gameClass = gameType.getGameClass();
|
return getSources(gameType, gameSourceStr, true).stream().map(type -> SOURCE_PREFIX + type.name().replaceAll(" ", "")).collect(Collectors.toList());
|
||||||
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());
|
|
||||||
}
|
}
|
||||||
else if (lastArg.startsWith(MAP_PREFIX))
|
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
|
// No particular source specified, we'll use all of them
|
||||||
if (gameSourceStr == null)
|
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());
|
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 a source has been provided, it must be valid
|
||||||
if (sources.size() != 1)
|
if (sources.size() != 1)
|
||||||
|
|
|
@ -562,7 +562,7 @@ public abstract class Game extends ListenerComponent implements Lifetimed
|
||||||
return _gameType.getName();
|
return _gameType.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static GameType[] getWorldHostNames(GameType targetType, Class<? extends Game> gameMode)
|
public static GameType[] getWorldHostNames(GameType targetType)
|
||||||
{
|
{
|
||||||
GameType[] mapSource = new GameType[]
|
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;
|
return mapSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -15,10 +15,8 @@ public class GameServerConfig
|
||||||
|
|
||||||
public String Uptimes;
|
public String Uptimes;
|
||||||
|
|
||||||
public ArrayList<GameType> GameList = new ArrayList<>();
|
public final ArrayList<GameType> GameList = new ArrayList<>();
|
||||||
public ArrayList<String> GameModeList = new ArrayList<>();
|
public final ArrayList<String> GameModeList = new ArrayList<>();
|
||||||
|
|
||||||
public HashMap<String, HashMap<String, String>> GameModeMods = new HashMap<>();
|
|
||||||
|
|
||||||
//Flags
|
//Flags
|
||||||
public String HostName = "";
|
public String HostName = "";
|
||||||
|
|
|
@ -2118,7 +2118,7 @@ public class Bridge extends TeamGame implements OreObsfucation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBridgeTime(int time)
|
public void setBridgeTime(long time)
|
||||||
{
|
{
|
||||||
_bridgeTime = time;
|
_bridgeTime = time;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,493 +1,54 @@
|
||||||
package nautilus.game.arcade.game.games.bridge.modes;
|
package nautilus.game.arcade.game.games.bridge.modes;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Material;
|
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.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.block.Action;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.block.BlockBreakEvent;
|
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
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.ArcadeManager;
|
||||||
import nautilus.game.arcade.GameType;
|
import nautilus.game.arcade.GameType;
|
||||||
import nautilus.game.arcade.events.GameStateChangeEvent;
|
|
||||||
import nautilus.game.arcade.events.PlayerPrepareTeleportEvent;
|
import nautilus.game.arcade.events.PlayerPrepareTeleportEvent;
|
||||||
import nautilus.game.arcade.game.modules.AbsorptionFix;
|
|
||||||
import nautilus.game.arcade.game.games.bridge.Bridge;
|
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
|
public class OverpoweredBridge extends Bridge
|
||||||
{
|
{
|
||||||
|
|
||||||
private HashMap<Player, Location> _starterChests;
|
private final ItemStack[] _items =
|
||||||
private HashMap<Material, Integer> _starterItems;
|
{
|
||||||
|
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)
|
public OverpoweredBridge(ArcadeManager manager)
|
||||||
{
|
{
|
||||||
super(manager, GameType.Brawl);
|
super(manager, GameType.Bridge);
|
||||||
|
|
||||||
WorldBoundaryKill = true;
|
|
||||||
|
|
||||||
Manager.GetDamage().SetEnabled(false);
|
|
||||||
|
|
||||||
new AbsorptionFix()
|
new AbsorptionFix()
|
||||||
.register(this);
|
.register(this);
|
||||||
_starterItems = new HashMap<>();
|
|
||||||
|
|
||||||
_starterItems.put(Material.WOOD, 64);
|
setBridgeTime(TimeUnit.MINUTES.toMillis(3));
|
||||||
_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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void ParseData()
|
public void playerTeleportIn(PlayerPrepareTeleportEvent event)
|
||||||
{
|
{
|
||||||
_starterChests = new HashMap<>();
|
Player player = event.GetPlayer();
|
||||||
|
|
||||||
super.ParseData();
|
player.getInventory().addItem(_items);
|
||||||
}
|
|
||||||
|
|
||||||
@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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -299,7 +299,7 @@ public class MilkCow extends SoloGame
|
||||||
}
|
}
|
||||||
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
itemStack.setType(Material.MILK_BUCKET);
|
player.setItemInHand(new ItemStack(Material.MILK_BUCKET));
|
||||||
player.updateInventory();
|
player.updateInventory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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";
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +1,8 @@
|
||||||
package nautilus.game.arcade.managers;
|
package nautilus.game.arcade.managers;
|
||||||
|
|
||||||
import java.lang.reflect.Array;
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.ParameterizedType;
|
|
||||||
import java.lang.reflect.Type;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
@ -14,8 +11,6 @@ import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
@ -52,7 +47,7 @@ public class GameCreationManager implements Listener
|
||||||
|
|
||||||
private GameType _nextGame = null;
|
private GameType _nextGame = null;
|
||||||
|
|
||||||
private GameMode _lastMode = null;
|
private String _lastMode = null;
|
||||||
private final List<GameType> _lastGames = new ArrayList<>();
|
private final List<GameType> _lastGames = new ArrayList<>();
|
||||||
private Map<GameType, List<String>> _maps;
|
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();
|
Class<? extends Game> gameClass = gameType.getGameClass();
|
||||||
|
|
||||||
// If map voting and ONLY map voting is enabled
|
// If map voting and ONLY map voting is enabled
|
||||||
|
@ -282,43 +272,38 @@ public class GameCreationManager implements Listener
|
||||||
|
|
||||||
_lastGames.add(0, gameType);
|
_lastGames.add(0, gameType);
|
||||||
|
|
||||||
boolean setVars = false;
|
// GameModes
|
||||||
|
if (gameType.hasGameModes())
|
||||||
try
|
|
||||||
{
|
{
|
||||||
|
List<String> gameModes = Manager.GetServerConfig().GameModeList;
|
||||||
GameMode mode = null;
|
GameMode mode = null;
|
||||||
|
|
||||||
|
// First check if there is an overriding preference
|
||||||
if (ModePref != null)
|
if (ModePref != null)
|
||||||
{
|
{
|
||||||
for (GameMode modes : gameType.getGameModes())
|
mode = getModeByName(gameType.getGameModes(), ModePref.getName());
|
||||||
{
|
|
||||||
if (modes.equals(ModePref))
|
|
||||||
{
|
|
||||||
_lastMode = ModePref;
|
|
||||||
mode = modes;
|
|
||||||
gameClass = modes.getGameClass();
|
|
||||||
setVars = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
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;
|
ModePref = null;
|
||||||
|
|
||||||
Game game = gameClass.getConstructor(ArcadeManager.class).newInstance(Manager);
|
try
|
||||||
|
|
||||||
if (setVars)
|
|
||||||
{
|
{
|
||||||
modifyGameConfiguration(gameClass, mode, game);
|
// Maps
|
||||||
}
|
loadMaps(gameType);
|
||||||
|
|
||||||
|
// Create Game instance
|
||||||
|
Game game = gameClass.getConstructor(ArcadeManager.class).newInstance(Manager);
|
||||||
|
|
||||||
Manager.SetGame(game);
|
Manager.SetGame(game);
|
||||||
}
|
}
|
||||||
|
@ -358,7 +343,7 @@ public class GameCreationManager implements Listener
|
||||||
_maps = new HashMap<>();
|
_maps = new HashMap<>();
|
||||||
|
|
||||||
// Map
|
// Map
|
||||||
for (GameType type : Game.getWorldHostNames(gameType, gameType.getGameClass()))
|
for (GameType type : Game.getWorldHostNames(gameType))
|
||||||
{
|
{
|
||||||
_maps.put(type, Manager.LoadFiles(type.getName()));
|
_maps.put(type, Manager.LoadFiles(type.getName()));
|
||||||
}
|
}
|
||||||
|
@ -452,45 +437,23 @@ public class GameCreationManager implements Listener
|
||||||
|
|
||||||
private GameMode randomGameMode(GameType type)
|
private GameMode randomGameMode(GameType type)
|
||||||
{
|
{
|
||||||
ArrayList<String> modes = Manager.GetServerConfig().GameModeList;
|
List<String> modes = Manager.GetServerConfig().GameModeList;
|
||||||
if (modes.size() == 0)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
GameMode[] gameModes = type.getGameModes();
|
return UtilAlg.Random(Arrays.stream(type.getGameModes())
|
||||||
|
.filter(gameMode -> modes.contains(gameMode.getName()) && (_lastMode == null || _lastMode.equals(gameMode.getName())))
|
||||||
String mode = modes.get(UtilMath.r(modes.size()));
|
.collect(Collectors.toList()));
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
while ((_lastMode == null || mode.equalsIgnoreCase(_lastMode.getName())) && !containsMode(gameModes, mode) && i != 25)
|
|
||||||
{
|
|
||||||
mode = modes.get(UtilMath.r(modes.size()));
|
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -505,260 +468,6 @@ public class GameCreationManager implements Listener
|
||||||
return _nextGame;
|
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()
|
public VotingManager getVotingManager()
|
||||||
{
|
{
|
||||||
return _votingManager;
|
return _votingManager;
|
||||||
|
|
Loading…
Reference in New Issue