Mineplex2018-withcommit/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java

1710 lines
43 KiB
Java
Raw Normal View History

2013-08-27 17:14:08 +02:00
package nautilus.game.arcade;
import java.io.File;
import java.util.ArrayList;
import java.util.HashSet;
2013-08-27 17:14:08 +02:00
import mineplex.core.MiniPlugin;
import mineplex.core.account.CoreClientManager;
import mineplex.core.achievement.AchievementManager;
2013-08-27 17:14:08 +02:00
import mineplex.core.blockrestore.BlockRestore;
import mineplex.core.blood.Blood;
2015-08-12 08:37:54 +02:00
import mineplex.core.bonuses.BonusManager;
import mineplex.core.boosters.BoosterManager;
import mineplex.core.chat.Chat;
import mineplex.core.common.Rank;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.cosmetic.CosmeticManager;
2013-08-27 17:14:08 +02:00
import mineplex.core.creature.Creature;
2015-12-16 23:01:51 +01:00
import mineplex.core.customdata.CustomDataManager;
2013-08-27 17:14:08 +02:00
import mineplex.core.disguise.DisguiseManager;
2016-01-02 03:19:39 +01:00
import mineplex.core.disguise.PlayerDisguiseManager;
2013-08-27 17:14:08 +02:00
import mineplex.core.donation.DonationManager;
import mineplex.core.elo.EloManager;
import mineplex.core.energy.Energy;
2013-08-27 17:14:08 +02:00
import mineplex.core.explosion.Explosion;
2015-10-10 10:27:54 +02:00
import mineplex.core.explosion.ExplosionEvent;
2016-01-29 04:15:35 +01:00
import mineplex.core.facebook.FacebookManager;
import mineplex.core.gadget.types.Gadget;
import mineplex.core.gadget.types.GadgetType;
import mineplex.core.hologram.HologramManager;
import mineplex.core.incognito.IncognitoManager;
import mineplex.core.incognito.events.IncognitoStatusChangeEvent;
import mineplex.core.inventory.InventoryManager;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.movement.Movement;
2015-08-12 08:37:54 +02:00
import mineplex.core.npc.NpcManager;
import mineplex.core.packethandler.PacketHandler;
2015-02-24 01:03:51 +01:00
import mineplex.core.party.PartyManager;
2014-09-19 04:03:46 +02:00
import mineplex.core.pet.PetManager;
2015-08-12 08:37:54 +02:00
import mineplex.core.poll.PollManager;
2013-08-27 17:14:08 +02:00
import mineplex.core.portal.Portal;
2014-06-10 02:27:25 +02:00
import mineplex.core.preferences.PreferencesManager;
2013-08-27 17:14:08 +02:00
import mineplex.core.projectile.ProjectileManager;
import mineplex.core.punish.Punish;
import mineplex.core.resourcepack.ResourcePackManager;
import mineplex.core.reward.RewardRarity;
import mineplex.core.reward.rewards.PetReward;
import mineplex.core.sponsorbranding.BrandingManager;
import mineplex.core.stats.StatsManager;
import mineplex.core.status.ServerStatusManager;
import mineplex.core.task.TaskManager;
import mineplex.core.teleport.Teleport;
2014-06-25 21:06:24 +02:00
import mineplex.core.timing.TimingManager;
import mineplex.core.titangiveaway.TitanGiveawayManager;
import mineplex.core.valentines.ValentinesGiftManager;
import mineplex.minecraft.game.classcombat.Class.ClassManager;
import mineplex.minecraft.game.classcombat.Condition.SkillConditionManager;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent;
import mineplex.minecraft.game.classcombat.item.ItemFactory;
import mineplex.minecraft.game.classcombat.item.event.ItemTriggerEvent;
import mineplex.minecraft.game.classcombat.shop.ClassCombatShop;
import mineplex.minecraft.game.classcombat.shop.ClassShopManager;
import mineplex.minecraft.game.core.IRelation;
import mineplex.minecraft.game.core.condition.ConditionManager;
import mineplex.minecraft.game.core.damage.DamageManager;
import mineplex.minecraft.game.core.fire.Fire;
import nautilus.game.arcade.addons.SoupAddon;
import nautilus.game.arcade.addons.TeamArmorAddon;
2015-07-31 08:50:32 +02:00
import nautilus.game.arcade.addons.compass.CompassAddon;
import nautilus.game.arcade.booster.GameBoosterManager;
import nautilus.game.arcade.command.DisguiseCommand;
import nautilus.game.arcade.command.GameCmdModeCommand;
import nautilus.game.arcade.command.GameCommand;
2015-10-10 21:54:18 +02:00
import nautilus.game.arcade.command.KitUnlockCommand;
import nautilus.game.arcade.command.RequiredRankCommand;
import nautilus.game.arcade.command.WriteCommand;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.game.GameTeam.PlayerState;
import nautilus.game.arcade.game.GameServerConfig;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.games.event.EventModule;
import nautilus.game.arcade.game.games.uhc.UHC;
import nautilus.game.arcade.managers.GameAchievementManager;
import nautilus.game.arcade.managers.GameCreationManager;
import nautilus.game.arcade.managers.GameFlagManager;
import nautilus.game.arcade.managers.GameGemManager;
import nautilus.game.arcade.managers.GameHostManager;
import nautilus.game.arcade.managers.GameLobbyManager;
2014-09-19 04:03:46 +02:00
import nautilus.game.arcade.managers.GameLootManager;
import nautilus.game.arcade.managers.GameManager;
import nautilus.game.arcade.managers.GamePlayerManager;
import nautilus.game.arcade.managers.GameSpectatorManager;
2014-09-21 01:28:12 +02:00
import nautilus.game.arcade.managers.GameStatManager;
import nautilus.game.arcade.managers.GameTestingManager;
import nautilus.game.arcade.managers.GameTournamentManager;
import nautilus.game.arcade.managers.GameWorldManager;
import nautilus.game.arcade.managers.IdleManager;
import nautilus.game.arcade.managers.MiscManager;
2016-02-13 05:03:38 +01:00
import nautilus.game.arcade.managers.chat.GameChatManager;
2015-12-17 23:19:45 +01:00
import nautilus.game.arcade.player.ArcadePlayer;
import nautilus.game.arcade.shop.ArcadeShop;
2016-03-04 21:09:20 +01:00
import net.minecraft.server.v1_8_R3.EntityLiving;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.HandlerList;
import org.bukkit.event.block.BlockBurnEvent;
import org.bukkit.event.block.BlockFadeEvent;
import org.bukkit.event.block.BlockSpreadEvent;
import org.bukkit.event.block.LeavesDecayEvent;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.server.ServerListPingEvent;
import org.bukkit.potion.PotionEffect;
import org.bukkit.util.Vector;
public class ArcadeManager extends MiniPlugin implements IRelation
{
// Modules
2013-08-27 17:14:08 +02:00
private BlockRestore _blockRestore;
2013-08-31 05:15:16 +02:00
private Blood _blood;
private Chat _chat;
2013-08-27 17:14:08 +02:00
private CoreClientManager _clientManager;
private DisguiseManager _disguiseManager;
private DonationManager _donationManager;
private ConditionManager _conditionManager;
private PetManager _petManager;
2013-08-27 17:14:08 +02:00
private Creature _creature;
private DamageManager _damageManager;
private Explosion _explosionManager;
private EventModule _eventManager;
2013-08-27 17:14:08 +02:00
private Fire _fire;
private ProjectileManager _projectileManager;
private Portal _portal;
private ArcadeShop _arcadeShop;
//Champions Modules
private boolean _enabled = true;
private ClassManager _classManager;
private SkillFactory _skillFactory;
private ItemFactory _itemFactory;
private Energy _energy;
private ClassShopManager _classShopManager;
private ClassCombatShop _classShop;
private EloManager _eloManager;
// Managers
2013-08-27 17:14:08 +02:00
private GameCreationManager _gameCreationManager;
private GameGemManager _gameGemManager;
private GameManager _gameManager;
2013-08-27 17:14:08 +02:00
private GameLobbyManager _gameLobbyManager;
private GamePlayerManager _gamePlayerManager;
private GameTournamentManager _gameTournamentManager;
private GameWorldManager _gameWorldManager;
private GameHostManager _gameHostManager;
2016-01-09 21:22:29 +01:00
private GameChatManager _gameChatManager;
private ServerStatusManager _serverStatusManager;
private InventoryManager _inventoryManager;
private CosmeticManager _cosmeticManager;
2014-11-08 00:28:06 +01:00
private final IdleManager _idleManager;
private HologramManager _hologramManager;
private AchievementManager _achievementManager;
private StatsManager _statsManager;
2015-02-24 01:03:51 +01:00
private PartyManager _partyManager;
2015-03-06 09:11:26 +01:00
private PreferencesManager _preferencesManager;
private ResourcePackManager _resourcePackManager;
2015-12-16 23:01:51 +01:00
private CustomDataManager _customDataManager;
private Punish _punishmentManager;
private BrandingManager _brandingManager;
private BonusManager _bonusManager;
2016-04-05 01:38:27 +02:00
private IncognitoManager _incognitoManager;
private TaskManager _taskManager;
private PacketHandler _packetHandler;
// Observers
private HashSet<Player> _specList = new HashSet<Player>();
2015-12-19 03:33:40 +01:00
private HashSet<Player> _fakeObserve = new HashSet<Player>();
2013-09-04 23:44:53 +02:00
// Server Games
2013-08-27 17:14:08 +02:00
private GameServerConfig _serverConfig;
// Games
2013-08-27 17:14:08 +02:00
private Game _game;
//Youtuber Kits
private HashSet<Player> _youtube = new HashSet<Player>();
//Server Property
private Rank _requiredRank;
//Game commands
public static final String GAME_CMD_MODE_FILE = "GAME_CMD_MODE.dat";
private boolean _gameCommandMode;
public ArcadeManager(Arcade plugin, ServerStatusManager serverStatusManager, GameServerConfig serverConfig,
CoreClientManager clientManager, DonationManager donationManager, DamageManager damageManager,
StatsManager statsManager, IncognitoManager incognitoManager, AchievementManager achievementManager, DisguiseManager disguiseManager, Creature creature, Teleport teleport, Blood blood, Chat chat,
Portal portal, PreferencesManager preferences, InventoryManager inventoryManager, PacketHandler packetHandler,
CosmeticManager cosmeticManager, ProjectileManager projectileManager, PetManager petManager, HologramManager hologramManager, String webAddress, PollManager pollManager,
NpcManager npcManager, CustomDataManager customDataManager, Punish punish, EloManager eloManager, BoosterManager boosterManager)
2013-08-27 17:14:08 +02:00
{
super("Game Manager", plugin);
_serverConfig = serverConfig;
// Modules
2013-08-27 17:14:08 +02:00
_blockRestore = new BlockRestore(plugin);
2016-04-05 01:38:27 +02:00
_incognitoManager = incognitoManager;
2013-08-31 05:15:16 +02:00
_blood = blood;
2015-03-06 09:11:26 +01:00
_preferencesManager = preferences;
2013-09-04 23:44:53 +02:00
2013-08-27 17:14:08 +02:00
_explosionManager = new Explosion(plugin, _blockRestore);
_explosionManager.SetDebris(false);
2013-09-04 23:44:53 +02:00
_conditionManager = new SkillConditionManager(plugin);
_brandingManager = new BrandingManager(plugin);
//Dont see a reason to ever just use the normal one
// if (serverConfig.GameList.contains(GameType.ChampionsDominate)
// || serverConfig.GameList.contains(GameType.ChampionsTDM)
// || serverConfig.GameList.contains(GameType.ChampionsCTF))
// {
// _conditionManager = new SkillConditionManager(plugin);
// }
// else
// {
// _conditionManager = new ConditionManager(plugin);
// }
2013-08-27 17:14:08 +02:00
_clientManager = clientManager;
_serverStatusManager = serverStatusManager;
_chat = chat;
2013-08-27 17:14:08 +02:00
_creature = creature;
2013-09-04 23:44:53 +02:00
2013-08-27 17:14:08 +02:00
_damageManager = damageManager;
_damageManager.UseSimpleWeaponDamage = true;
_damageManager.setConditionManager(_conditionManager);
2015-11-24 05:23:37 +01:00
_conditionManager.setDamageManager(_damageManager);
2013-08-31 05:15:16 +02:00
_disguiseManager = disguiseManager;
2013-09-04 23:44:53 +02:00
2013-08-27 17:14:08 +02:00
_donationManager = donationManager;
_fire = new Fire(plugin, _conditionManager, damageManager);
2014-08-22 20:30:41 +02:00
_projectileManager = projectileManager;
_packetHandler = packetHandler;
2015-02-24 01:03:51 +01:00
_partyManager = new PartyManager(plugin, portal, _clientManager, preferences);
_statsManager = statsManager;
2015-05-11 10:21:27 +02:00
_taskManager = new TaskManager(plugin, clientManager, webAddress);
_achievementManager = achievementManager;
_inventoryManager = inventoryManager;
_cosmeticManager = cosmeticManager;
_portal = portal;
_petManager = petManager;
_eventManager = new EventModule(this, getPlugin());
_resourcePackManager = new ResourcePackManager(plugin, portal);
2013-09-04 23:44:53 +02:00
2015-12-16 23:01:51 +01:00
_customDataManager = customDataManager;
2013-09-04 23:44:53 +02:00
// Shop
2013-08-27 17:14:08 +02:00
_arcadeShop = new ArcadeShop(this, clientManager, donationManager);
// Managers
2016-01-09 21:22:29 +01:00
_gameChatManager = new GameChatManager(this);
2013-08-27 17:14:08 +02:00
_gameCreationManager = new GameCreationManager(this);
_gameGemManager = new GameGemManager(this);
_gameManager = new GameManager(this);
_gameLobbyManager = new GameLobbyManager(this, packetHandler);
_gameHostManager = new GameHostManager(this);
2013-08-27 17:14:08 +02:00
new GameFlagManager(this);
_gamePlayerManager = new GamePlayerManager(this);
2014-08-08 09:05:11 +02:00
new GameAchievementManager(this);
_gameTournamentManager = new GameTournamentManager(this);
2014-09-21 01:28:12 +02:00
new GameStatManager(this);
FacebookManager facebookManager = new FacebookManager(plugin, clientManager, donationManager, inventoryManager);
2016-06-10 05:41:41 +02:00
_bonusManager = new BonusManager(plugin, clientManager, serverStatusManager, donationManager, pollManager , npcManager, hologramManager, statsManager, _inventoryManager, petManager, facebookManager, _cosmeticManager.getGadgetManager(), boosterManager);
new GameLootManager(this, petManager, _bonusManager.getRewardManager());
new GameSpectatorManager(this);
2013-08-27 17:14:08 +02:00
_gameWorldManager = new GameWorldManager(this);
new MiscManager(this);
_hologramManager = hologramManager;
2014-11-08 00:28:06 +01:00
_idleManager = new IdleManager(this);
TitanGiveawayManager titanGiveaway = new TitanGiveawayManager(getPlugin(), clientManager, serverStatusManager);
// new HolidayManager(this, titanGiveaway);
new ValentinesGiftManager(plugin, clientManager, _bonusManager.getRewardManager(), inventoryManager, _cosmeticManager.getGadgetManager(), statsManager);
new GameTestingManager(this);
2016-01-02 03:19:39 +01:00
new PlayerDisguiseManager(plugin, _clientManager);
2016-06-10 23:33:53 +02:00
new GameBoosterManager(plugin, boosterManager, disguiseManager, hologramManager, serverConfig.BoosterGroup);
// Game Addons
2013-08-27 17:14:08 +02:00
new CompassAddon(plugin, this);
new SoupAddon(plugin, this);
new TeamArmorAddon(plugin, this);
2016-01-29 04:15:35 +01:00
//Champions Modules
2014-12-23 01:39:03 +01:00
_energy = new Energy(plugin);
_itemFactory = new ItemFactory(_plugin, _blockRestore, _conditionManager, damageManager, _energy,
_fire, _projectileManager, webAddress);
_skillFactory = new SkillFactory(plugin, damageManager, this, _damageManager.GetCombatManager(),
_conditionManager, _projectileManager, _disguiseManager, _blockRestore, _fire, new Movement(plugin), teleport,
_energy, webAddress);
_classManager = new ClassManager(plugin, clientManager, donationManager, _cosmeticManager.getGadgetManager(), _skillFactory, _itemFactory,
webAddress);
2014-12-23 01:22:41 +01:00
2014-12-23 01:39:03 +01:00
_classShopManager = new ClassShopManager(_plugin, _classManager, _skillFactory, _itemFactory, _achievementManager, clientManager);
2014-12-23 01:39:03 +01:00
_classShop = new ClassCombatShop(_classShopManager, clientManager, donationManager, false, "Class Shop");
2014-12-23 01:22:41 +01:00
_eloManager = eloManager;
_punishmentManager = punish;
if (GetHost() != null && !GetHost().isEmpty())
{
Bukkit.getScheduler().runTaskLater(plugin, () -> Portal.transferPlayer(GetHost(), _serverStatusManager.getCurrentServerName()), 80L);
}
2015-03-17 11:59:24 +01:00
2015-09-12 07:01:18 +02:00
loadRequiredRank();
_gameCommandMode = checkGameCommandMode();
2013-08-27 17:14:08 +02:00
}
@Override
public void addCommands()
2013-08-27 17:14:08 +02:00
{
addCommand(new GameCommand(this));
addCommand(new WriteCommand(this));
2015-07-23 16:29:42 +02:00
addCommand(new KitUnlockCommand(this));
addCommand(new DisguiseCommand(this));
addCommand(new RequiredRankCommand(this));
addCommand(new GameCmdModeCommand(this));
2013-08-27 17:14:08 +02:00
}
2013-09-04 23:44:53 +02:00
2016-01-09 21:22:29 +01:00
public GameChatManager getGameChatManager()
{
return _gameChatManager;
}
public BonusManager getBonusManager()
{
return _bonusManager;
}
2016-01-09 21:22:29 +01:00
2013-08-27 17:14:08 +02:00
public GameServerConfig GetServerConfig()
{
return _serverConfig;
}
public ResourcePackManager getResourcePackManager()
2013-08-27 17:14:08 +02:00
{
return _resourcePackManager;
2013-08-27 17:14:08 +02:00
}
public ArrayList<GameType> GetGameList()
{
return GetServerConfig().GameList;
}
2014-08-10 02:50:31 +02:00
public AchievementManager GetAchievement()
{
return _achievementManager;
}
2013-09-04 23:44:53 +02:00
2013-08-31 05:15:16 +02:00
public Blood GetBlood()
{
return _blood;
}
2013-08-27 17:14:08 +02:00
public Chat GetChat()
{
return _chat;
}
public BlockRestore GetBlockRestore()
{
return _blockRestore;
}
2013-09-04 23:44:53 +02:00
2013-08-27 17:14:08 +02:00
public CoreClientManager GetClients()
{
return _clientManager;
}
public ConditionManager GetCondition()
{
return _conditionManager;
}
2013-09-04 23:44:53 +02:00
2013-08-27 17:14:08 +02:00
public Creature GetCreature()
{
return _creature;
}
public PacketHandler getPacketHandler()
{
return _packetHandler;
}
2013-08-27 17:14:08 +02:00
public CosmeticManager getCosmeticManager()
{
return _cosmeticManager;
}
2014-08-10 02:50:31 +02:00
2013-08-27 17:14:08 +02:00
public DisguiseManager GetDisguise()
{
return _disguiseManager;
}
public HologramManager getHologramManager()
{
return _hologramManager;
}
2013-09-04 23:44:53 +02:00
2013-08-27 17:14:08 +02:00
public DamageManager GetDamage()
{
return _damageManager;
}
public DonationManager GetDonation()
{
return _donationManager;
}
2013-11-22 08:40:38 +01:00
public EloManager getEloManager()
{
return _eloManager;
}
public Explosion GetExplosion()
{
return _explosionManager;
}
2013-08-27 17:14:08 +02:00
public Fire GetFire()
{
return _fire;
}
2013-08-27 17:14:08 +02:00
public ProjectileManager GetProjectile()
{
return _projectileManager;
}
public Punish getPunishments()
{
return _punishmentManager;
}
public BrandingManager getBrandingManager()
{
return _brandingManager;
}
2013-09-04 23:44:53 +02:00
public Portal GetPortal()
{
return _portal;
}
2013-09-04 23:44:53 +02:00
2013-08-27 17:14:08 +02:00
public GameLobbyManager GetLobby()
{
return _gameLobbyManager;
}
public TaskManager GetTaskManager()
{
return _taskManager;
}
2013-09-04 23:44:53 +02:00
2013-08-27 17:14:08 +02:00
public ArcadeShop GetShop()
{
return _arcadeShop;
}
2013-08-27 17:14:08 +02:00
public GameCreationManager GetGameCreationManager()
{
return _gameCreationManager;
2013-08-27 17:14:08 +02:00
}
2013-09-04 23:44:53 +02:00
2014-11-07 02:14:33 +01:00
public GameHostManager GetGameHostManager()
{
return _gameHostManager;
}
2013-09-04 23:44:53 +02:00
2013-08-27 17:14:08 +02:00
public GameManager GetGameManager()
{
return _gameManager;
}
2013-09-04 23:44:53 +02:00
2013-08-27 17:14:08 +02:00
public GameGemManager GetGameGemManager()
{
return _gameGemManager;
}
public GamePlayerManager GetGamePlayerManager()
{
return _gamePlayerManager;
}
public GameTournamentManager GetGameTournamentManager()
{
return _gameTournamentManager;
}
2013-09-04 23:44:53 +02:00
2013-08-27 17:14:08 +02:00
public GameWorldManager GetGameWorldManager()
{
return _gameWorldManager;
}
public EventModule GetEventModule()
{
return _eventManager;
}
2015-03-06 09:11:26 +01:00
public PreferencesManager getPreferences()
{
return _preferencesManager;
}
2013-08-27 17:14:08 +02:00
public StatsManager GetStatsManager()
{
return _statsManager;
}
2014-08-10 02:50:31 +02:00
public ServerStatusManager GetServerStatusManager()
{
return _serverStatusManager;
}
public CustomDataManager getCustomDataManager() { return _customDataManager; }
2015-12-16 23:01:51 +01:00
2013-08-27 17:14:08 +02:00
public ChatColor GetColor(Player player)
{
if (_game == null)
return ChatColor.GRAY;
GameTeam team = _game.GetTeam(player);
if (team == null)
return ChatColor.GRAY;
return team.GetColor();
}
@Override
public boolean canHurt(String a, String b)
2013-08-27 17:14:08 +02:00
{
return canHurt(UtilPlayer.searchExact(a), UtilPlayer.searchExact(b));
2013-08-27 17:14:08 +02:00
}
@Override
public boolean canHurt(Player pA, Player pB)
2013-08-27 17:14:08 +02:00
{
if (pA == null || pB == null)
return false;
if (!_game.Damage)
return false;
if (!_game.DamagePvP)
return false;
// Self Damage
2013-08-27 17:14:08 +02:00
if (pA.equals(pB))
return _game.DamageSelf;
GameTeam tA = _game.GetTeam(pA);
if (tA == null)
return false;
GameTeam tB = _game.GetTeam(pB);
if (tB == null)
return false;
if (tA.equals(tB) && !_game.DamageTeamSelf)
return false;
if (!tA.equals(tB) && !_game.DamageTeamOther)
return false;
return true;
}
@Override
public boolean isSafe(Player player)
2013-08-27 17:14:08 +02:00
{
if (_game == null)
return true;
if (_game.IsPlaying(player))
return false;
2013-11-22 08:40:38 +01:00
2013-08-27 17:14:08 +02:00
return true;
}
2016-03-09 02:45:17 +01:00
@EventHandler
public void StaffIncognito(IncognitoStatusChangeEvent event)
{
if(event.getNewState()) //Is going into incognito
2016-03-09 02:45:17 +01:00
{
UtilServer.broadcast(F.sys("Quit", event.getPlayer().getName()));
if(_game.GetCountdown() > 0) //Lobby is counting down
{
// Clean
if (_game != null)
{
// Remove Data
_game.RemoveTeamPreference(event.getPlayer());
_game.GetPlayerKits().remove(event.getPlayer());
_game.GetPlayerGems().remove(event.getPlayer());
// Leave Team
GameTeam team = _game.GetTeam(event.getPlayer());
if (team != null)
{
team.RemovePlayer(event.getPlayer());
}
}
}
else if(_game.GetState() != GameState.Recruit) //Game is NOT in lobby
{
addSpectator(event.getPlayer(), true);
_specList.add(event.getPlayer());
if(_game.GetTeam(event.getPlayer()) != null)
_game.GetTeam(event.getPlayer()).SetPlayerState(event.getPlayer(), PlayerState.OUT);
}
else //Game is in lobby
2016-04-05 01:38:27 +02:00
{
_specList.add(event.getPlayer());
}
2016-03-09 02:45:17 +01:00
}
else //Is coming out of incognito
2016-03-11 20:03:32 +01:00
{
UtilServer.broadcast(F.sys("Join", event.getPlayer().getName()));
if(!(_game.GetState() == GameState.Live || _game.GetState() == GameState.Prepare))
{
_specList.remove(event.getPlayer());
if(_game.GetTeam(event.getPlayer()) != null)
_game.GetTeam(event.getPlayer()).SetPlayerState(event.getPlayer(), PlayerState.IN);
}
2016-04-05 01:38:27 +02:00
if (_game != null && isSpectator(event.getPlayer()))
{
event.show(false);
}
2016-03-11 20:03:32 +01:00
}
2016-03-09 02:45:17 +01:00
}
2013-08-27 17:14:08 +02:00
@EventHandler
public void MessageMOTD(ServerListPingEvent event)
{
event.setMaxPlayers(_serverConfig.MaxPlayers);
//MPS
2014-12-22 06:31:13 +01:00
if (_gameHostManager != null && _gameHostManager.isPrivateServer())
{
if (_gameHostManager.isHostExpired())
{
event.setMotd(ChatColor.RED + "Finished");
return;
}
if (!GetServerConfig().PublicServer || GetServerConfig().PlayerServerWhitelist)
2014-12-22 06:31:13 +01:00
{
event.setMotd(ChatColor.GRAY + "Private");
return;
}
}
2014-12-23 11:15:33 +01:00
String extrainformation = "|" + _serverConfig.ServerType + "|" + (_game == null ? "Unknown" : _game.GetName())
+ "|" + ((_game == null || _game.WorldData == null) ? "Unknown" : _game.WorldData.MapName);
2015-12-29 07:50:20 +01:00
if (_gameHostManager.isPrivateServer() && _gameHostManager.hasRank(Rank.TWITCH))
extrainformation += "|HostRank." + _gameHostManager.getHostRank().toString();
2014-12-23 11:15:33 +01:00
//Always Joinable
// if (_game != null && _game.JoinInProgress)
// {
// event.setMotd(ChatColor.GREEN + "Recruiting" + extrainformation);
// }
//UHC Timed
if (_game != null && (_game.GetType() == GameType.UHC || _game.getClass().getSuperclass().equals(UHC.class)))
{
event.setMotd(((UHC) _game).getMotdStatus() + extrainformation);
}
//Recruiting
else if (_game == null || _game.GetState() == GameState.Recruit)
2013-08-27 17:14:08 +02:00
{
if (_game != null && _game.GetCountdown() != -1)
{
event.setMotd(ChatColor.GREEN + "Starting in " + _game.GetCountdown() + " Seconds" + extrainformation);
2013-08-27 17:14:08 +02:00
}
else
{
event.setMotd(ChatColor.GREEN + "Recruiting" + extrainformation);
2013-08-27 17:14:08 +02:00
}
}
//In Progress
2013-08-27 17:14:08 +02:00
else
{
event.setMotd(ChatColor.YELLOW + "In Progress" + extrainformation);
2013-08-27 17:14:08 +02:00
}
2015-11-21 03:37:19 +01:00
if (this.getPlugin().getConfig().getString("serverstatus.group").equalsIgnoreCase("Testing"))
event.setMotd(ChatColor.GOLD + "Private Mineplex Test Server");
2013-08-27 17:14:08 +02:00
}
2013-09-04 23:44:53 +02:00
2013-08-27 17:14:08 +02:00
@EventHandler
public void MessageJoin(PlayerJoinEvent event)
{
2015-04-01 07:56:13 +02:00
String name = event.getPlayer().getName();
2016-04-05 01:38:27 +02:00
if (_incognitoManager.Get(event.getPlayer()).Status)
{
event.setJoinMessage(null);
return;
}
2016-03-09 02:45:17 +01:00
if (event.getJoinMessage() == null)
return;
if (_game != null && _game.AnnounceJoinQuit)
2015-04-01 07:56:13 +02:00
event.setJoinMessage(F.sys("Join", GetColor(event.getPlayer()) + name));
else
event.setJoinMessage(null);
2013-08-27 17:14:08 +02:00
}
@EventHandler
public void MessageQuit(PlayerQuitEvent event)
{
2016-04-05 01:38:27 +02:00
if (_incognitoManager.Get(event.getPlayer()).Status)
{
event.setQuitMessage(null);
return;
}
2015-04-01 07:56:13 +02:00
String name = event.getPlayer().getName();
2016-03-09 02:45:17 +01:00
if (event.getQuitMessage() == null)
return;
if (_game == null || _game.AnnounceJoinQuit)
2015-04-01 07:56:13 +02:00
event.setQuitMessage(F.sys("Quit", GetColor(event.getPlayer()) + name));
else
event.setQuitMessage(null);
2013-08-27 17:14:08 +02:00
}
public Game GetGame()
2013-08-27 17:14:08 +02:00
{
return _game;
}
public void SetGame(Game game)
{
_game = game;
}
public int GetPlayerMin()
{
return GetServerConfig().MinPlayers;
}
public int GetPlayerFull()
{
return GetServerConfig().MaxPlayers;
}
public void HubClock(Player player)
{
if (!IsHotbarHubClock())
return;
if (_game != null && !_game.GiveClock)
return;
if (player.getOpenInventory().getType() != InventoryType.CRAFTING &&
player.getOpenInventory().getType() != InventoryType.CREATIVE)
2014-08-10 02:50:31 +02:00
return;
2015-03-06 09:43:17 +01:00
if (!UtilGear.isMat(player.getInventory().getItem(8), Material.WATCH) && !UtilGear.isMat(player.getInventory().getItem(8), Material.SPECKLED_MELON))
2014-08-10 02:50:31 +02:00
{
player.getInventory().setItem(
8,
ItemStackFactory.Instance.CreateStack(Material.WATCH, (byte) 0, 1, (short) 0, C.cGreen
+ "Return to Hub", new String[]{"", ChatColor.RESET + "Click while holding this",
ChatColor.RESET + "to return to the Hub."}));
2014-08-10 02:50:31 +02:00
UtilInv.Update(player);
}
}
2013-11-22 08:40:38 +01:00
@EventHandler
public void Login(PlayerLoginEvent event)
{
if (Bukkit.getServer().hasWhitelist())
{
if(_requiredRank != null)
{
if (_clientManager.Get(event.getPlayer().getName()).GetRank().has(event.getPlayer(), _requiredRank, false))
{
event.allow();
event.setResult(PlayerLoginEvent.Result.ALLOWED);
if (_serverConfig.Tournament && _clientManager.Get(event.getPlayer().getName()).GetRank().has(event.getPlayer(), Rank.MODERATOR, false))
{
event.getPlayer().setOp(true);
}
}
else
{
for (OfflinePlayer player : Bukkit.getWhitelistedPlayers())
{
if (player.getName().equalsIgnoreCase(event.getPlayer().getName()))
{
event.allow();
event.setResult(PlayerLoginEvent.Result.ALLOWED);
return;
}
}
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Required Rank for this server: " + _requiredRank.getColor() + _requiredRank.Name);
return;
}
}
if (_clientManager.Get(event.getPlayer().getName()).GetRank().has(event.getPlayer(), Rank.MODERATOR, false) ||
_clientManager.Get(event.getPlayer().getName()).GetRank() == Rank.MAPDEV ||
_clientManager.Get(event.getPlayer().getName()).GetRank() == Rank.MAPLEAD)
{
event.allow();
event.setResult(PlayerLoginEvent.Result.ALLOWED);
if (_serverConfig.Tournament)
{
event.getPlayer().setOp(true);
}
}
else
{
for (OfflinePlayer player : Bukkit.getWhitelistedPlayers())
{
if (player.getName().equalsIgnoreCase(event.getPlayer().getName()))
{
event.allow();
event.setResult(PlayerLoginEvent.Result.ALLOWED);
return;
}
}
2014-08-10 02:50:31 +02:00
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Server Whitelisted!");
}
return;
}
// Reserved Slot Check
2014-08-20 04:24:49 +02:00
if (Bukkit.getOnlinePlayers().size() >= Bukkit.getServer().getMaxPlayers())
{
if (_clientManager.Get(event.getPlayer().getName()).GetRank().has(event.getPlayer(), Rank.HELPER, false))
{
event.allow();
event.setResult(PlayerLoginEvent.Result.ALLOWED);
return;
}
else if (_clientManager.Get(event.getPlayer().getName()).GetRank().has(event.getPlayer(), Rank.ULTRA, false)
2014-12-12 11:23:01 +01:00
|| _donationManager.Get(event.getPlayer().getName()).OwnsUnknownPackage(_serverConfig.ServerType + " ULTRA"))
{
if (GetGame() != null && GetGame().DontAllowOverfill)
2014-10-11 14:56:47 +02:00
{
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, C.Bold + "Server has reached max capacity for gameplay purposes.");
return;
}
else if (Bukkit.getServer().getOnlinePlayers().size() / Bukkit.getMaxPlayers() > 1.5)
{
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, C.Bold + "Server has reached max capacity for gameplay purposes.");
return;
}
else if (_gameHostManager.isEventServer() && Bukkit.getServer().getOnlinePlayers().size() >= 128)
{
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, C.Bold + "Server has reached max capacity for gameplay purposes.");
return;
}
event.allow();
event.setResult(PlayerLoginEvent.Result.ALLOWED);
return;
}
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Server Full > Purchase Ultra at www.mineplex.com/shop");
}
}
@EventHandler(priority = EventPriority.LOW)
public void AdminOP(PlayerJoinEvent event)
{
// Give developers operator on their servers
boolean testServer = _plugin.getConfig().getString("serverstatus.group").equalsIgnoreCase("Testing");
Rank minimum = Rank.OWNER;
if (testServer)
{
minimum = Rank.JNR_DEV;
}
if (_clientManager.Get(event.getPlayer()).GetRank().has(minimum))
event.getPlayer().setOp(true);
else
event.getPlayer().setOp(false);
}
public boolean IsAlive(Player player)
2013-08-27 17:14:08 +02:00
{
if (_game == null)
2013-08-27 17:14:08 +02:00
return false;
return _game.IsAlive(player);
}
/**
* Checks if a player is participating in/has been participating in the current game
* @param player The player to check
* @return Whether they are/have been playing
*/
public boolean hasBeenPlaying(Player player)
{
if (_game == null)
return false;
if (_game.GetTeam(player) == null)
return false;
return true;
}
2013-09-04 23:44:53 +02:00
2013-08-27 17:14:08 +02:00
public void Clear(Player player)
{
if (player.getGameMode() == GameMode.SPECTATOR)
player.setSpectatorTarget(null);
2013-08-27 17:14:08 +02:00
player.setGameMode(GameMode.SURVIVAL);
player.setAllowFlight(false);
2015-07-23 05:31:07 +02:00
player.setFlySpeed(0.1F);
2013-08-27 17:14:08 +02:00
UtilInv.Clear(player);
2013-11-22 08:40:38 +01:00
2016-03-07 10:29:14 +01:00
UtilPlayer.setAutoDeploy(player, false);
UtilPlayer.setGlidableWithoutWings(player, false);
UtilPlayer.setGliding(player, false);
UtilPlayer.setAutoDeployDistance(player, 1.15F);
2015-11-28 07:38:58 +01:00
((CraftEntity) player).getHandle().getDataWatcher().watch(0, Byte.valueOf((byte) 0), EntityLiving.META_ENTITYDATA, (byte) 0);
2013-11-22 08:40:38 +01:00
player.setCustomName("");
player.setCustomNameVisible(false);
player.setSprinting(false);
player.setSneaking(false);
2013-08-27 17:14:08 +02:00
player.setFoodLevel(20);
player.setSaturation(3f);
player.setExhaustion(0f);
2013-11-22 08:40:38 +01:00
2014-04-12 10:22:53 +02:00
player.setMaxHealth(20);
player.setHealth(player.getMaxHealth());
2013-11-22 08:40:38 +01:00
2013-08-27 17:14:08 +02:00
player.setFireTicks(0);
player.setFallDistance(0);
2015-04-06 09:17:36 +02:00
player.eject();
player.leaveVehicle();
2013-11-22 08:40:38 +01:00
2013-08-27 17:14:08 +02:00
player.setLevel(0);
player.setExp(0f);
2013-11-22 08:40:38 +01:00
player.resetPlayerTime();
player.resetPlayerWeather();
((CraftPlayer) player).getHandle().spectating = false;
((CraftPlayer) player).getHandle().setGhost(false);
((CraftPlayer) player).getHandle().k = true;
// Arrows go bye bye.
((CraftPlayer) player).getHandle().o(0);
2013-08-27 17:14:08 +02:00
//Remove all conditions
GetCondition().EndCondition(player, null, null);
2015-07-23 05:31:07 +02:00
for (PotionEffect potion : player.getActivePotionEffects())
player.removePotionEffect(potion.getType());
2013-08-27 17:14:08 +02:00
HubClock(player);
2013-09-04 23:44:53 +02:00
2013-09-02 01:38:32 +02:00
GetDisguise().undisguise(player);
Gadget morph = getCosmeticManager().getGadgetManager().getActive(player, GadgetType.Morph);
2016-01-29 09:36:52 +01:00
if (morph != null && morph.IsActive(player))
morph.Disable(player);
2013-08-27 17:14:08 +02:00
}
2014-04-11 12:09:21 +02:00
public ArrayList<String> LoadFiles(String gameName)
2013-08-27 17:14:08 +02:00
{
2014-06-25 21:06:24 +02:00
TimingManager.start("ArcadeManager LoadFiles");
File folder = new File(".." + File.separatorChar + ".." + File.separatorChar + "update" + File.separatorChar
+ "maps" + File.separatorChar + gameName);
System.out.println(folder.getAbsolutePath()+" -=-=-=-=-=" );
if (!folder.exists())
folder.mkdirs();
2013-08-27 17:14:08 +02:00
ArrayList<String> maps = new ArrayList<String>();
System.out.println("Searching Maps in: " + folder);
2013-09-04 23:44:53 +02:00
2013-08-27 17:14:08 +02:00
for (File file : folder.listFiles())
{
if (!file.isFile())
continue;
2013-09-04 23:44:53 +02:00
2013-08-27 17:14:08 +02:00
String name = file.getName();
if (name.length() < 5)
continue;
2013-09-04 23:44:53 +02:00
name = name.substring(name.length() - 4, name.length());
2013-08-27 17:14:08 +02:00
if (file.getName().equals(".zip"))
continue;
maps.add(file.getName().substring(0, file.getName().length() - 4));
2013-08-27 17:14:08 +02:00
}
for (String map : maps)
System.out.println("Found Map: " + map);
2014-06-25 21:06:24 +02:00
TimingManager.stop("ArcadeManager LoadFiles");
2013-08-27 17:14:08 +02:00
return maps;
}
public ClassManager getClassManager()
{
return _classManager;
}
2013-11-22 08:40:38 +01:00
public ClassCombatShop getClassShop()
{
return _classShop;
}
public void openClassShop(Player player)
{
_classShop.attemptShopOpen(player);
}
2013-11-22 08:40:38 +01:00
@EventHandler
public void BlockBurn(BlockBurnEvent event)
{
if (_game == null)
event.setCancelled(true);
}
@EventHandler
public void BlockSpread(BlockSpreadEvent event)
{
if (_game == null)
event.setCancelled(true);
}
@EventHandler
public void BlockFade(BlockFadeEvent event)
{
if (_game == null)
event.setCancelled(true);
}
@EventHandler
public void BlockDecay(LeavesDecayEvent event)
{
if (_game == null)
event.setCancelled(true);
}
2014-03-01 00:35:06 +01:00
@EventHandler
2013-11-22 08:40:38 +01:00
public void MobSpawn(CreatureSpawnEvent event)
{
if (_game == null)
event.setCancelled(true);
}
@EventHandler
public void SkillTrigger(SkillTriggerEvent event)
{
if (_game == null || !_game.IsLive())
{
event.SetCancelled(true);
}
}
@EventHandler
public void ItemTrigger(ItemTriggerEvent event)
{
if (_game == null || !_game.IsLive())
{
event.SetCancelled(true);
}
}
2014-05-02 06:35:41 +02:00
@EventHandler
public void Observer(PlayerCommandPreprocessEvent event)
{
if (event.getMessage().equalsIgnoreCase("/spec"))
{
2014-05-03 05:06:15 +02:00
event.setCancelled(true);
2014-05-03 05:06:15 +02:00
if (_game != null && _game.InProgress())
{
UtilPlayer.message(event.getPlayer(), F.main("Game", "You cannot toggle Spectator during games."));
return;
}
if (!_specList.remove(event.getPlayer()))
{
if (_game != null && !_game.SpectatorAllowed)
{
UtilPlayer.message(event.getPlayer(), F.main("Game", "You are not allowed to toggle Spectator in this game!"));
return;
}
_specList.add(event.getPlayer());
UtilPlayer.message(event.getPlayer(), F.main("Game", "You are now a Spectator!"));
}
else
{
UtilPlayer.message(event.getPlayer(), F.main("Game", "You are no longer a Spectator!"));
}
// Clean
if (_game != null)
{
// Remove Data
_game.RemoveTeamPreference(event.getPlayer());
_game.GetPlayerKits().remove(event.getPlayer());
_game.GetPlayerGems().remove(event.getPlayer());
// Leave Team
GameTeam team = _game.GetTeam(event.getPlayer());
if (team != null)
{
team.RemovePlayer(event.getPlayer());
}
}
}
}
@EventHandler
public void ObserverQuit(PlayerQuitEvent event)
{
_specList.remove(event.getPlayer());
}
2015-12-19 03:33:40 +01:00
public void toggleFakeObserver(Player player)
{
if (!_fakeObserve.remove(player))
_fakeObserve.add(player);
}
public boolean IsObserver(Player player)
{
2015-12-19 03:33:40 +01:00
if (_fakeObserve.contains(player))
return true;
2016-04-05 01:38:27 +02:00
if (_incognitoManager.Get(player).Status)
2016-03-09 02:45:17 +01:00
{
_specList.add(player);
}
return _specList.contains(player);
}
public boolean isVanished(Player player)
{
return _incognitoManager.Get(player).Status;
}
2014-05-02 06:35:41 +02:00
public boolean IsTournamentServer()
{
return _serverConfig.Tournament;
}
public boolean IsTournamentPoints()
{
return _serverConfig.TournamentPoints;
}
public boolean IsTeamRejoin()
{
return _serverConfig.TeamRejoin;
}
public boolean IsTeamAutoJoin()
{
return _serverConfig.TeamAutoJoin;
}
public boolean IsGameAutoStart()
{
return _serverConfig.GameAutoStart;
}
public boolean IsGameTimeout()
{
return _serverConfig.GameTimeout;
}
public boolean IsTeamBalance()
{
return _serverConfig.TeamForceBalance;
}
public boolean IsRewardGems()
{
return _serverConfig.RewardGems;
}
public boolean IsRewardItems()
{
return _serverConfig.RewardItems;
}
public boolean IsRewardStats()
{
return _serverConfig.RewardStats;
}
public boolean IsRewardAchievements()
{
return _serverConfig.RewardAchievements;
}
public boolean IsHotbarInventory()
{
return _serverConfig.HotbarInventory;
}
public boolean IsHotbarHubClock()
{
return _serverConfig.HotbarHubClock;
}
public boolean IsPlayerKickIdle()
{
return _serverConfig.PlayerKickIdle;
}
2014-08-26 06:42:17 +02:00
public int GetDesiredPlayerAmount()
{
return _serverConfig.MaxPlayers;
}
public String GetHost()
{
return _serverConfig.HostName;
}
2014-05-06 07:55:14 +02:00
@EventHandler
public void ObserverQuit(GameStateChangeEvent event)
{
if (_skillFactory != null)
{
_skillFactory.ResetAll();
}
}
public InventoryManager getInventoryManager()
{
return _inventoryManager;
}
@EventHandler
public void toggleSpec(GameStateChangeEvent event)
{
if (event.GetState() != GameState.Loading)
return;
if (_game != null)
{
if (_game.SpectatorAllowed)
{
return;
}
}
for (Player player : _specList)
{
_specList.remove(player);
// Clean
if (_game != null)
{
// Remove Data
_game.RemoveTeamPreference(player);
_game.GetPlayerKits().remove(player);
_game.GetPlayerGems().remove(player);
// Leave Team
GameTeam team = _game.GetTeam(player);
if (team != null)
{
team.RemovePlayer(player);
}
}
}
}
2014-08-10 02:50:31 +02:00
@EventHandler(priority = EventPriority.LOWEST)
public void cosmeticState(GameStateChangeEvent event)
{
//Disable
if (event.GetState() == GameState.Recruit)
{
2014-08-11 07:33:45 +02:00
getCosmeticManager().setActive(true);
2016-01-25 09:01:54 +01:00
getCosmeticManager().setHideParticles(false);
}
2014-08-09 16:21:45 +02:00
else if (event.GetState() == GameState.Prepare || event.GetState() == GameState.Loading || event.GetState() == GameState.Dead)
{
2015-03-06 09:11:26 +01:00
if (event.GetGame().GadgetsDisabled)
{
2015-03-06 09:11:26 +01:00
if (getCosmeticManager().isShowingInterface())
{
getCosmeticManager().setActive(false);
getCosmeticManager().disableItemsForGame();
}
}
2016-01-25 09:01:54 +01:00
if (!event.GetGame().AllowParticles)
getCosmeticManager().setHideParticles(true);
}
}
@EventHandler
public void disableGadget(PlayerJoinEvent event)
{
updateGadgetEnabled();
}
@EventHandler
public void disableGadget(PlayerQuitEvent event)
{
updateGadgetEnabled();
}
private void updateGadgetEnabled()
{
// Disables gadgets if player count is greater than 40
int playerCount = UtilServer.getPlayers().length;
getCosmeticManager().getGadgetManager().setGadgetEnabled(playerCount <= 40);
}
/*public void saveBasicStats(final Game game)
{
if (!IsTournamentServer())
return;
final Map<UUID, Boolean> data = new HashMap<>();
for (Player loser : game.getLosers())
data.put(loser.getUniqueId(), false);
for (Player winner : game.getWinners())
data.put(winner.getUniqueId(), true);
Bukkit.getScheduler().runTaskAsynchronously(getPlugin(), new Runnable()
{
@Override
public void run()
{
getArcadeRepository().saveBasicStats(game.GetType(), IsTournamentServer(), (int) (System.currentTimeMillis() - game.getGameLiveTime()), data);
}
});
}*/
/*public void saveLeaderboardStats(Game game)
{
final TournamentType type = TournamentType.getTournamentType(game.GetType());
if (type != null)
{
final Map<UUID, Boolean> data = new HashMap<>();
for (Player loser : game.getLosers())
data.put(loser.getUniqueId(), false);
for (Player winner : game.getWinners())
data.put(winner.getUniqueId(), true);
Bukkit.getScheduler().runTaskAsynchronously(getPlugin(), new Runnable()
{
@Override
public void run()
{
getArcadeRepository().saveLeaderboardStats(0, type.ordinal(), data);
}
});
}
}*/
public boolean isGameInProgress()
{
return _game != null && _game.InProgress();
}
2015-07-23 16:29:42 +02:00
public boolean hasKitsUnlocked(Player player)
{
return _youtube.contains(player);
}
2015-07-23 16:29:42 +02:00
public void toggleUnlockKits(Player caller)
{
if (_youtube.remove(caller))
{
2015-07-23 16:29:42 +02:00
UtilPlayer.message(caller, C.cRed + C.Bold + "Celebrity Mode Disabled: " + ChatColor.RESET + "Kits Locked");
}
else
{
_youtube.add(caller);
2015-07-23 16:29:42 +02:00
UtilPlayer.message(caller, C.cGreen + C.Bold + "Celebrity Mode Enabled: " + ChatColor.RESET + "All Kits Unlocked");
}
}
@EventHandler
public void quitYoutuber(PlayerQuitEvent event)
{
_youtube.remove(event.getPlayer());
}
2014-11-08 00:28:06 +01:00
public IdleManager getIdleManager()
{
return _idleManager;
}
public void rewardPet(Player player, String pet, EntityType type)
{
2014-12-15 05:49:52 +01:00
if (!player.isOnline())
return;
2015-12-14 08:49:51 +01:00
PetReward reward = new PetReward(_petManager, _inventoryManager, _donationManager, pet, pet, type, RewardRarity.OTHER, 0, 0);
if (reward.canGiveReward(player))
reward.giveReward(null, player, data -> {
});
}
public void enableChampionsModules()
{
_classManager.setEnabled(true);
_classShopManager.registerSelf();
_skillFactory.registerSelf();
_itemFactory.registerSelf();
_energy.registerSelf();
_eloManager.registerSelf();
//Class Shop
_plugin.getServer().getPluginManager().registerEvents(_classShop, _plugin);
}
public void disableChampionsModules()
{
_classManager.setEnabled(false);
_classShopManager.deregisterSelf();
_skillFactory.deregisterSelf();
_itemFactory.deregisterSelf();
_energy.deregisterSelf();
_eloManager.deregisterSelf();
//Class Shop
HandlerList.unregisterAll(_classShop);
}
2014-12-23 01:39:03 +01:00
public void toggleChampionsModules(GameType gameType)
{
boolean isChamps = gameType == GameType.ChampionsDominate || gameType == GameType.ChampionsTDM || gameType == GameType.ChampionsCTF || gameType == GameType.BossBattles;
2014-12-23 01:39:03 +01:00
if (_enabled == isChamps)
{
2014-12-23 01:39:03 +01:00
System.out.println("----------Champions Modules are still " + isChamps);
return;
}
2014-12-23 01:39:03 +01:00
System.out.println("----------Champions Modules set to " + isChamps);
_enabled = isChamps;
if (_enabled)
{
enableChampionsModules();
}
else
{
disableChampionsModules();
}
}
2015-02-24 01:03:51 +01:00
public PartyManager getPartyManager()
{
return _partyManager;
}
2015-03-12 05:31:40 +01:00
public void addSpectator(Player player, boolean teleport)
2015-03-12 05:31:40 +01:00
{
if (GetGame() == null)
return;
2015-03-12 05:31:40 +01:00
Clear(player);
if (teleport)
player.teleport(GetGame().GetSpectatorLocation());
//Set Spec State
UtilAction.velocity(player, new Vector(0,1,0));
2015-03-12 05:31:40 +01:00
player.setAllowFlight(true);
player.setFlying(true);
player.setFlySpeed(0.1f);
((CraftPlayer) player).getHandle().spectating = true;
((CraftPlayer) player).getHandle().setGhost(true);
2015-03-12 05:31:40 +01:00
((CraftPlayer) player).getHandle().k = false;
GetCondition().Factory().Cloak("Spectator", player, player, 7777, true, true);
//Game Team
2015-03-12 05:31:40 +01:00
GetGame().GetScoreboard().SetPlayerTeam(player, "SPEC");
}
public boolean isSpectator(Entity player)
2015-03-12 05:31:40 +01:00
{
if (player instanceof Player)
return UtilPlayer.isSpectator(player);
2015-03-12 05:31:40 +01:00
return false;
}
2015-09-12 07:01:18 +02:00
public void loadRequiredRank()
{
_requiredRank = null;
for(File file : new File(".").listFiles())
{
if(!file.getName().startsWith("RequiredRank"))
continue;
try
{
_requiredRank = Rank.valueOf(file.getName().split("=")[1]);
System.out.println("set required rank to " + _requiredRank.Name);
}
catch (IllegalArgumentException e)
{
System.out.println("===============================");
System.out.println("Wrong required rank definition.");
System.out.println("[" + file.getName().split("=")[1] + "] Does not exist!");
System.out.println("===============================");
}
}
}
public Rank getRequiredRank()
{
return _requiredRank;
}
public void setRequiredRank(Rank rank)
{
_requiredRank = rank;
}
@EventHandler(priority=EventPriority.LOWEST)
2015-10-10 10:27:54 +02:00
public void explosionCancel(EntityExplodeEvent event)
{
if (GetGame() == null || !GetGame().InProgress())
{
event.blockList().clear();
event.setCancelled(true);
}
}
2015-10-10 10:27:54 +02:00
@EventHandler(priority = EventPriority.LOWEST)
public void explosionCancel(ExplosionEvent event)
{
if (GetGame() == null || !GetGame().InProgress())
{
event.GetBlocks().clear();
}
}
2015-10-11 05:48:02 +02:00
@EventHandler
public void spawnDebug(PlayerCommandPreprocessEvent event)
{
if (event.getPlayer().isOp() && event.getMessage().contains("setmax"))
{
try
{
int i = Integer.parseInt(event.getMessage().split(" ")[1]);
2015-10-11 05:48:02 +02:00
_serverConfig.MaxPlayers = i;
}
catch (Exception e)
{
2015-10-11 05:48:02 +02:00
}
2015-10-11 05:48:02 +02:00
event.setCancelled(true);
}
}
2015-12-17 23:19:45 +01:00
public ArcadePlayer getArcadePlayer(Player player)
{
return new ArcadePlayer(player, getCustomDataManager(), this);
}
/**
* Returns whether this server has a file, stating that it allows game commands.
*
* @return Whether this server is in game command mode.
*/
private boolean checkGameCommandMode()
{
return new File(GAME_CMD_MODE_FILE).exists();
}
/**
* @return Whether this server is in game command mode.
*/
public boolean isGameCommandMode()
{
return _gameCommandMode;
}
/**
* Sets this server's game command mode state.
*
* @param state Whether to enable or disable game commands.
*/
public void setGameCommandMode(boolean state)
{
_gameCommandMode = state;
}
/**
* Finds whether or not a player can use a game command or not.
* <p>
* Sends a denial alert if they can't.
*
* @param player The player attempting to use the command.
* @return Whether or not the player can successfully use the command.
*/
public boolean canPlayerUseGameCmd(Player player)
{
if (_gameCommandMode)
{
// When enabled, anyone can use game commands.
return true;
}
// Check whether they are of high enough rank status.
if (!GetClients().hasRank(player, Rank.JNR_DEV))
{
player.sendMessage(F.main("Server", "You are not allowed to use game commands."));
return false;
}
return true;
}
2013-08-27 17:14:08 +02:00
}