Mineplex2018-withcommit/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java

996 lines
27 KiB
Java
Raw Normal View History

2013-08-27 17:14:08 +02:00
package mineplex.hub;
import java.util.HashMap;
2013-08-27 17:14:08 +02:00
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
import org.bukkit.entity.Egg;
2013-08-27 17:14:08 +02:00
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
2013-08-27 17:14:08 +02:00
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.entity.Snowball;
2013-08-27 17:14:08 +02:00
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.BlockDamageEvent;
2013-08-27 17:14:08 +02:00
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.ItemSpawnEvent;
2014-08-22 23:50:07 +02:00
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
2013-08-27 17:14:08 +02:00
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
2013-08-27 17:14:08 +02:00
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerLoginEvent;
2013-08-27 17:14:08 +02:00
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
2014-09-30 00:17:02 +02:00
import org.bukkit.event.player.PlayerVelocityEvent;
import org.bukkit.event.server.ServerListPingEvent;
2013-08-31 11:01:41 +02:00
import org.bukkit.event.world.ChunkLoadEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BookMeta;
2013-08-27 17:14:08 +02:00
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import mineplex.core.MiniClientPlugin;
import mineplex.core.RankBenefitsGiver9000;
import mineplex.core.account.CoreClient;
2013-08-27 17:14:08 +02:00
import mineplex.core.account.CoreClientManager;
import mineplex.core.account.event.RetrieveClientInformationEvent;
import mineplex.core.achievement.AchievementManager;
import mineplex.core.blockrestore.BlockRestore;
2013-08-27 17:14:08 +02:00
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.UtilAlg;
2013-08-27 17:14:08 +02:00
import mineplex.core.common.util.UtilInv;
2014-08-08 09:05:11 +02:00
import mineplex.core.common.util.UtilMath;
2013-08-27 17:14:08 +02:00
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTabTitle;
import mineplex.core.common.util.UtilTime;
2013-08-27 17:14:08 +02:00
import mineplex.core.common.util.UtilWorld;
import mineplex.core.cosmetic.CosmeticManager;
2013-08-31 11:01:41 +02:00
import mineplex.core.disguise.DisguiseManager;
import mineplex.core.disguise.disguises.DisguiseSlime;
2013-08-27 17:14:08 +02:00
import mineplex.core.donation.DonationManager;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.gadget.event.GadgetActivateEvent;
import mineplex.core.gadget.event.GadgetCollideEntityEvent;
import mineplex.core.inventory.InventoryManager;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.mount.MountManager;
import mineplex.core.mount.event.MountActivateEvent;
import mineplex.core.pet.PetManager;
import mineplex.core.portal.Portal;
import mineplex.core.preferences.PreferencesManager;
2014-08-22 20:30:41 +02:00
import mineplex.core.projectile.ProjectileManager;
2013-12-14 06:38:16 +01:00
import mineplex.core.stats.StatsManager;
import mineplex.core.task.TaskManager;
import mineplex.core.treasure.TreasureManager;
2013-08-27 17:14:08 +02:00
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.hub.commands.ForcefieldRadius;
import mineplex.hub.commands.GadgetToggle;
import mineplex.hub.commands.GameModeCommand;
import mineplex.hub.commands.NewsCommand;
import mineplex.hub.modules.ForcefieldManager;
import mineplex.hub.modules.JumpManager;
import mineplex.hub.modules.MapManager;
import mineplex.hub.modules.NewsManager;
import mineplex.hub.modules.ParkourManager;
import mineplex.hub.modules.TextManager;
import mineplex.hub.modules.TournamentInviter;
2014-10-10 04:07:59 +02:00
import mineplex.hub.modules.UHCManager;
import mineplex.hub.modules.VisibilityManager;
import mineplex.hub.modules.WorldManager;
import mineplex.hub.party.Party;
import mineplex.hub.party.PartyManager;
import mineplex.hub.poll.PollManager;
import mineplex.hub.tutorial.TutorialManager;
import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent;
import mineplex.minecraft.game.classcombat.item.event.ItemTriggerEvent;
import mineplex.minecraft.game.core.condition.ConditionManager;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
2013-08-27 17:14:08 +02:00
public class HubManager extends MiniClientPlugin<HubClient>
{
public HubType Type = HubType.Halloween;
2014-08-26 06:42:17 +02:00
private BlockRestore _blockRestore;
private CoreClientManager _clientManager;
2013-10-19 07:52:15 +02:00
private ConditionManager _conditionManager;
2013-08-27 17:14:08 +02:00
private DonationManager _donationManager;
2013-08-31 11:01:41 +02:00
private DisguiseManager _disguiseManager;
2014-08-25 04:59:29 +02:00
private PartyManager _partyManager;
private ForcefieldManager _forcefieldManager;
2014-08-25 04:59:29 +02:00
private Portal _portal;
private StatsManager _statsManager;
private GadgetManager _gadgetManager;
private MountManager _mountManager;
2014-08-25 04:59:29 +02:00
private VisibilityManager _visibilityManager;
private TutorialManager _tutorialManager;
2013-09-18 11:46:45 +02:00
private TextManager _textCreator;
2014-08-25 04:59:29 +02:00
private ParkourManager _parkour;
2014-08-08 09:16:20 +02:00
private PreferencesManager _preferences;
2014-08-25 04:59:29 +02:00
private InventoryManager _inventoryManager;
private NewsManager _news;
private AchievementManager _achievementManager;
private TreasureManager _treasureManager;
2013-08-27 17:14:08 +02:00
private Location _spawn;
private int _scoreboardTick = 0;
private HashMap<Player, Scoreboard> _scoreboards = new HashMap<Player, Scoreboard>();
2014-08-25 04:59:29 +02:00
private String _pigStacker = "0 - Nobody";
private ItemStack _ruleBook = null;
private boolean _shuttingDown;
private HashMap<String, Long> _portalTime = new HashMap<String, Long>();
2014-05-13 04:08:56 +02:00
//Admin
private boolean _gadgetsEnabled = true;
public HubManager(JavaPlugin plugin, BlockRestore blockRestore, CoreClientManager clientManager, DonationManager donationManager, ConditionManager conditionManager, DisguiseManager disguiseManager, TaskManager taskManager, Portal portal, PartyManager partyManager, PreferencesManager preferences, PetManager petManager, PollManager pollManager)
2013-08-27 17:14:08 +02:00
{
super("Hub Manager", plugin);
_blockRestore = blockRestore;
2013-08-27 17:14:08 +02:00
_clientManager = clientManager;
2013-10-19 07:52:15 +02:00
_conditionManager = conditionManager;
_donationManager = donationManager;
2013-08-31 11:01:41 +02:00
_disguiseManager = disguiseManager;
_portal = portal;
2014-08-23 00:52:50 +02:00
_spawn = new Location(UtilWorld.getWorld("world"), 0.5, 74, 0.5);
2013-09-18 11:46:45 +02:00
_textCreator = new TextManager(this);
_parkour = new ParkourManager(this, donationManager, taskManager);
new MapManager(this);
2013-09-18 11:46:45 +02:00
new WorldManager(this);
new JumpManager(this);
2014-10-11 11:53:39 +02:00
new UHCManager(this);
2014-10-03 02:49:26 +02:00
//new TournamentInviter(this);
_news = new NewsManager(this);
2014-08-22 20:30:41 +02:00
_mountManager = new MountManager(_plugin, clientManager, donationManager, blockRestore, _disguiseManager);
_inventoryManager = new InventoryManager(plugin);
new RankBenefitsGiver9000(plugin, clientManager, _inventoryManager);
2014-08-22 20:30:41 +02:00
_gadgetManager = new GadgetManager(_plugin, clientManager, donationManager, _inventoryManager, _mountManager, petManager, preferences, disguiseManager, blockRestore, new ProjectileManager(plugin));
_treasureManager = new TreasureManager(_plugin, donationManager, _inventoryManager, petManager, _blockRestore);
new CosmeticManager(_plugin, clientManager, donationManager, _inventoryManager, _gadgetManager, _mountManager, petManager, false, _treasureManager);
2013-09-04 23:44:53 +02:00
_partyManager = partyManager;
_preferences = preferences;
_tutorialManager = new TutorialManager(this, donationManager, taskManager, _textCreator);
_visibilityManager = new VisibilityManager(this);
_forcefieldManager = new ForcefieldManager(this);
AddCommand(new ForcefieldRadius(_forcefieldManager));
2013-12-14 06:38:16 +01:00
_statsManager = new StatsManager(plugin);
_achievementManager = new AchievementManager(_statsManager, _clientManager, _donationManager);
_achievementManager.setGiveInterfaceItem(true);
2013-12-18 11:56:59 +01:00
((CraftWorld)Bukkit.getWorlds().get(0)).getHandle().pvpMode = true;
2014-07-09 20:14:57 +02:00
_ruleBook = ItemStackFactory.Instance.CreateStack(Material.WRITTEN_BOOK, (byte)0, 1, ChatColor.GREEN + "Rule Book", new String[] { });
BookMeta meta = (BookMeta)_ruleBook.getItemMeta();
meta.addPage("§m-------------------§r\n"
+ "Welcome to §6§lMineplex§r\n"
+ "§r§0§l§r§m§0§m-------------------§r§0\n"
+ "\n"
+ "§2Please §0take a moment to read through this book!\n"
+ "\n"
+ "\n"
+ "Part 1 - Rules\n"
+ "\n"
+ "Part 2 - FAQ\n");
meta.addPage("§m-------------------\n"
+ "§r §2§lRules§r§0\n"
+ "§m-------------------\n"
+ "§r\n"
+ "§l1.§§§r §4No§r spamming.\n"
+ "\n"
+ "§0This is sending too many messages and/or repeating the same message in a short period of time.\n");
meta.addPage("§m-------------------\n"
+ "§r §2§lRules§r§0\n"
+ "§m-------------------\n"
+ "§r\n"
+ "§l2.§m§r §4No§0 use of excessive caps.\n"
+ "\n"
+ "This is sending messages with an excessive amount of capital letters.\n");
meta.addPage("§m-------------------\n"
+ "§r §2§lRules§r§0\n"
+ "§m-------------------\n"
+ "§r\n"
+ "§l3.§r §4No§0 hacking or use of any unapproved mods.\n"
+ "\n"
+ "This means we do not tolerate any sort of hacked client or any unapproved mods, such as fly hacks.\n");
meta.addPage("§m-------------------\n"
+ "§r §2§lRules§r§0\n"
+ "§m-------------------\n"
+ "§r\n"
+ "§l4.§r §4No§0 advertising non-Mineplex related links.\n"
+ "\n"
+ "This is when a link is sent in chat which directs others to non-Mineplex related content.\n");
meta.addPage("§m-------------------\n"
+ "§r §2§lRules§r§0\n"
+ "§m-------------------\n"
+ "§r\n"
+ "§l5.§r §4No§0 trolling or use of any exploits.\n"
+ "\n"
+ "This means that abuse of bugs/glitches is not tolerated. You also may not do things such as teamkilling and/or blocking spawns.\n");
meta.addPage("§m-------------------\n"
+ "§r §2§lRules§r§0\n"
+ "§m-------------------\n"
+ "§r\n"
+ "§l6.§r §2Be§0 respectful to others, yourself, and the environment around you.\n");
meta.addPage("§m-------------------\n"
+ "§r §2§lRules§r§0\n"
+ "§m-------------------\n"
+ "§r\n"
+ "§rPlease report any bugs, exploits, and/or rule breakers on our forums with evidence.\n"
+ "§omineplex.com/forums\n");
meta.addPage("§m-------------------\n"
+ "§r §2§lFAQ§r§0\n"
+ "§m-------------------\n"
+ "§r\n"
+ "§lWhat is stacker and how do you play it?\n"
+ "\n"
+ "§rStacker is a hub game where you can stack & throw players/mobs.\n"
+ "\n"
+ "§9Right-Click: pick up\n"
+ "Left-Click: throw\n");
meta.addPage("§m-------------------\n"
+ "§r §2§lFAQ§r§0\n"
+ "§m-------------------\n"
+ "§r\n"
+ "§lHow do I get §b§lUltra§0 §lor §5§lHero§0§l?\n"
+ "\n"
+ "§r§0You are able to purchase these ranks through our shop on our website at:\n"
+ "\n"
+ "§owww.mineplex.com/shop\n");
meta.addPage("§m-------------------\n"
+ "§r §2§lFAQ§r§0\n"
+ "§m-------------------\n"
+ "§r\n"
+ "§lWhy hasn't my rank been applied yet?\n"
+ "\n"
+ "§m§rYour rank may take a while to be applied. If it has been over 24 hours please email:\n"
+ "\n"
+ "§osupport@mineplex.com\n");
meta.addPage("§m-------------------\n"
+ "§r §2§lFAQ§r§0\n"
+ "§m-------------------\n"
+ "§r\n"
+ "§lWhat do I do if I was wrongfully punished?\n"
+ "\n"
+ "§0If you believe you were wrongfully punished, please submit an appeal at:\n"
+ "\n"
2014-07-09 20:14:57 +02:00
+ "§omineplex.com/appeals\n");
meta.addPage("§m-------------------\n"
+ "§r §2§lFAQ§r§0\n"
+ "§m-------------------\n"
+ "§r\n"
+ "§lHow do I apply for Helper?\n"
+ "\n"
+ "§rYou may only apply for Helper if you have §bUltra §0or §5Hero§0.\n"
+ "Apply at:\n"
+ "§omineplex.com/application\n");
meta.addPage("§m-------------------\n"
+ "§r §6§lThank you for \n"
+ " reading!§r§0\n"
+ "§m-------------------\n"
+ "§r\n"
+ "Remember to visit our website §2mineplex.com§0 for important news & updates!\n"
+ "\n"
+ "\n"
+ " §c§lH§6§lA§a§lV§9§lE §c§lF§6§lU§a§lN§9§l!\n");
_ruleBook.setItemMeta(meta);
}
2014-05-13 04:08:56 +02:00
@Override
public void AddCommands()
2014-05-13 04:08:56 +02:00
{
AddCommand(new GadgetToggle(this));
AddCommand(new NewsCommand(this));
AddCommand(new GameModeCommand(this));
2014-05-13 04:08:56 +02:00
}
@EventHandler(priority = EventPriority.HIGHEST)
public void reflectMotd(ServerListPingEvent event)
{
if (_shuttingDown)
{
event.setMotd("Restarting soon");
2014-10-16 07:27:09 +02:00
}
}
2013-12-16 04:32:51 +01:00
public boolean BumpDisabled(Entity ent)
{
if (ent == null)
return false;
if (ent instanceof Player)
2013-12-16 04:32:51 +01:00
{
return !_preferences.Get((Player)ent).HubGames;
2013-12-16 04:32:51 +01:00
}
return true;
2013-12-16 04:32:51 +01:00
}
@EventHandler
public void SnowballPickup(BlockDamageEvent event)
{
if (Type != HubType.Christmas)
return;
if (event.getBlock().getType() != Material.SNOW)
return;
Player player = event.getPlayer();
_gadgetManager.RemoveItem(player);
player.getInventory().setItem(3, new ItemStack(Material.SNOW_BALL, 16));
}
@EventHandler
public void SnowballHit(CustomDamageEvent event)
{
if (Type != HubType.Christmas)
return;
Projectile proj = event.GetProjectile();
if (proj == null) return;
if (!(proj instanceof Snowball))
return;
event.SetCancelled("Snowball Cancel");
if (BumpDisabled(event.GetDamageeEntity()))
return;
if (BumpDisabled(event.GetDamagerEntity(true)))
return;
UtilAction.velocity(event.GetDamageeEntity(), UtilAlg.getTrajectory2d(event.GetDamagerEntity(true), event.GetDamageeEntity()),
0.4, false, 0, 0.2, 1, false);
//No Portal
SetPortalDelay(event.GetDamageeEntity());
}
@EventHandler
public void redirectStopCommand(PlayerCommandPreprocessEvent event)
{
if (event.getPlayer().isOp() && event.getMessage().equalsIgnoreCase("/stop"))
{
_shuttingDown = true;
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(_plugin, new Runnable()
{
public void run()
{
_portal.SendAllPlayers("Lobby");
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(_plugin, new Runnable()
{
public void run()
{
Bukkit.shutdown();
}
}, 40L);
}
}, 60L);
event.setCancelled(true);
}
}
@EventHandler
public void preventEggSpawn(ItemSpawnEvent event)
{
if (event.getEntity() instanceof Egg)
{
event.setCancelled(true);
}
}
2013-09-04 23:44:53 +02:00
@EventHandler(priority = EventPriority.MONITOR)
public void OnChunkLoad(ChunkLoadEvent event)
{
for (Entity entity : event.getChunk().getEntities())
{
if (entity instanceof LivingEntity)
{
if (((LivingEntity)entity).isCustomNameVisible() && ((LivingEntity)entity).getCustomName() != null)
{
if (ChatColor.stripColor(((LivingEntity)entity).getCustomName()).equalsIgnoreCase("Block Hunt"))
{
DisguiseSlime disguise = new DisguiseSlime(entity);
disguise.SetCustomNameVisible(true);
2014-08-16 08:33:18 +02:00
disguise.SetName(((LivingEntity)entity).getCustomName(), null);
disguise.SetSize(2);
_disguiseManager.disguise(disguise);
}
2013-09-04 23:44:53 +02:00
}
}
}
}
@EventHandler(priority = EventPriority.LOW)
public void login(final PlayerLoginEvent event)
{
CoreClient client = _clientManager.Get(event.getPlayer().getName());
// Reserved Slot Check
2014-08-20 04:24:49 +02:00
if (Bukkit.getOnlinePlayers().size() - Bukkit.getServer().getMaxPlayers() >= 20)
{
if (!client.GetRank().Has(Rank.ULTRA))
{
Bukkit.getScheduler().scheduleSyncDelayedTask(GetPlugin(), new Runnable()
{
public void run()
{
_portal.SendPlayerToServer(event.getPlayer(), "Lobby");
}
});
event.allow();
}
}
2014-07-30 06:11:07 +02:00
else
event.allow();
}
2013-09-04 23:44:53 +02:00
2014-08-20 02:39:41 +02:00
@EventHandler(priority = EventPriority.LOW)
public void AdminOP(PlayerJoinEvent event)
{
if (_clientManager.Get(event.getPlayer()).GetRank().Has(Rank.OWNER))
2014-08-20 02:39:41 +02:00
event.getPlayer().setOp(true);
else
event.getPlayer().setOp(false);
}
2014-08-22 23:50:07 +02:00
@EventHandler
public void PlayerRespawn(PlayerRespawnEvent event)
{
2014-08-23 00:52:50 +02:00
event.setRespawnLocation(GetSpawn().add(0, 10, 0));
2014-08-22 23:50:07 +02:00
}
2014-08-20 02:39:41 +02:00
2013-08-27 17:14:08 +02:00
@EventHandler(priority = EventPriority.LOW)
public void PlayerJoin(PlayerJoinEvent event)
{
2014-08-22 23:50:07 +02:00
Player player = event.getPlayer();
//Player List
UtilTabTitle.setHeaderAndFooter(player, " ", "Visit " + C.cGreen + "www.mineplex.com" + ChatColor.RESET + " for News, Forums and Shop");
2014-08-22 23:50:07 +02:00
//Public Message
event.setJoinMessage(null);
//Teleport
2014-08-23 00:52:50 +02:00
player.teleport(GetSpawn().add(0, 10, 0));
2014-08-22 23:50:07 +02:00
//Survival
player.setGameMode(GameMode.SURVIVAL);
//Clear Inv
UtilInv.Clear(player);
//Allow Double Jump
player.setAllowFlight(true);
//Health
player.setHealth(20);
2014-08-22 23:50:07 +02:00
//Rules
player.getInventory().setItem(6, _ruleBook);
//Scoreboard
Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
player.setScoreboard(board);
_scoreboards.put(player, board);
2014-08-22 23:50:07 +02:00
//Objective
Objective obj = board.registerNewObjective(C.Bold + "Player Data", "dummy");
obj.setDisplaySlot(DisplaySlot.SIDEBAR);
2014-08-22 23:50:07 +02:00
for (Rank rank : Rank.values())
{
if (rank != Rank.ALL)
board.registerNewTeam(rank.Name).setPrefix(rank.GetTag(true, true) + ChatColor.RESET + " ");
else
board.registerNewTeam(rank.Name).setPrefix("");
}
2014-08-22 23:50:07 +02:00
for (Player otherPlayer : Bukkit.getOnlinePlayers())
{
if (_clientManager.Get(otherPlayer) == null)
continue;
2014-08-22 23:50:07 +02:00
String rankName = _clientManager.Get(player).GetRank().Name;
String otherRankName = _clientManager.Get(otherPlayer).GetRank().Name;
2014-08-22 23:50:07 +02:00
if (!_clientManager.Get(player).GetRank().Has(Rank.ULTRA) && _donationManager.Get(player.getName()).OwnsUltraPackage())
2013-09-10 02:17:55 +02:00
{
2014-08-22 23:50:07 +02:00
rankName = Rank.ULTRA.Name;
2013-09-10 02:17:55 +02:00
}
2014-08-22 23:50:07 +02:00
if (!_clientManager.Get(otherPlayer).GetRank().Has(Rank.ULTRA) && _donationManager.Get(otherPlayer.getName()).OwnsUltraPackage())
2013-09-10 02:17:55 +02:00
{
2014-08-22 23:50:07 +02:00
otherRankName = Rank.ULTRA.Name;
2013-09-10 02:17:55 +02:00
}
2014-08-22 23:50:07 +02:00
//Add Other to Self
board.getTeam(otherRankName).addPlayer(otherPlayer);
//Add Self to Other
otherPlayer.getScoreboard().getTeam(rankName).addPlayer(player);
}
2014-08-22 23:50:07 +02:00
}
@EventHandler
public void PlayerDeath(PlayerDeathEvent event)
{
//XXX make this work > event.setKeepInventory(true);
event.getDrops().clear();
2013-08-27 17:14:08 +02:00
}
2013-08-27 17:14:08 +02:00
@EventHandler
public void PlayerQuit(PlayerQuitEvent event)
{
event.setQuitMessage(null);
2013-08-27 17:14:08 +02:00
event.getPlayer().leaveVehicle();
event.getPlayer().eject();
2013-08-27 17:14:08 +02:00
for (Player player : UtilServer.getPlayers())
player.getScoreboard().resetScores(event.getPlayer().getName());
_scoreboards.remove(event.getPlayer());
_portalTime.remove(event.getPlayer().getName());
2013-08-27 17:14:08 +02:00
}
2013-08-27 17:14:08 +02:00
@EventHandler
public void PlayerChat(AsyncPlayerChatEvent event)
{
if (event.isCancelled())
return;
2014-08-08 09:05:11 +02:00
//Dont Let Chat Near Spawn!
2014-10-14 03:42:53 +02:00
if (UtilMath.offset2d(GetSpawn(), event.getPlayer().getLocation()) == 0 && !_clientManager.Get(event.getPlayer()).GetRank().Has(Rank.HELPER))
2014-08-08 09:05:11 +02:00
{
UtilPlayer.message(event.getPlayer(), F.main("Chat", "You must leave spawn before you can chat!"));
event.setCancelled(true);
return;
}
2013-08-27 17:14:08 +02:00
Player player = event.getPlayer();
2013-08-27 17:14:08 +02:00
Rank rank = GetClients().Get(player).GetRank();
boolean ownsUltra = _donationManager.Get(player.getName()).OwnsUltraPackage();
//Rank Prefix
2013-08-27 17:14:08 +02:00
String rankStr = "";
if (rank != Rank.ALL)
rankStr = rank.GetTag(true, true) + " ";
if (ownsUltra && !rank.Has(Rank.ULTRA))
rankStr = Rank.ULTRA.GetTag(true, true) + " ";
//Party Chat
if (event.getMessage().charAt(0) == '@')
{
Party party = _partyManager.GetParty(player);
if (party != null)
{
event.getRecipients().clear();
event.setMessage(event.getMessage().substring(1, event.getMessage().length()));
event.setFormat(C.cDPurple + C.Bold + "Party " + C.cWhite + C.Bold + "%1$s " + C.cPurple + "%2$s");
for (String name : party.GetPlayers())
{
Player other = UtilPlayer.searchExact(name);
if (other != null)
event.getRecipients().add(other);
}
}
else
{
UtilPlayer.message(player, F.main("Party", "You are not in a Party."));
event.setCancelled(true);
}
return;
}
else
2013-08-27 17:14:08 +02:00
{
for (Player other : UtilServer.getPlayers())
{
if (_tutorialManager.InTutorial(other))
{
event.getRecipients().remove(other);
continue;
}
event.setMessage(event.getMessage());
event.setFormat(rankStr + C.cYellow + "%1$s " + C.cWhite + "%2$s");
}
2013-08-27 17:14:08 +02:00
}
}
2013-08-27 17:14:08 +02:00
@EventHandler
public void Damage(EntityDamageEvent event)
{
if (event.getCause() == DamageCause.VOID)
if (event.getEntity() instanceof Player)
2013-09-18 11:46:45 +02:00
{
event.getEntity().eject();
event.getEntity().leaveVehicle();
event.getEntity().teleport(GetSpawn());
2013-09-18 11:46:45 +02:00
}
else
event.getEntity().remove();
2013-08-27 17:14:08 +02:00
event.setCancelled(true);
}
2013-08-27 17:14:08 +02:00
@EventHandler
public void FoodHealthUpdate(UpdateEvent event)
{
2014-08-22 23:50:07 +02:00
if (event.getType() != UpdateType.SEC)
2013-08-27 17:14:08 +02:00
return;
2013-08-27 17:14:08 +02:00
for (Player player : UtilServer.getPlayers())
{
player.setFoodLevel(20);
2014-08-22 23:50:07 +02:00
player.setExhaustion(0f);
player.setSaturation(3f);
2013-08-27 17:14:08 +02:00
}
}
2014-04-05 07:52:23 +02:00
@EventHandler
public void InventoryCancel(InventoryClickEvent event)
{
if (event.getWhoClicked() instanceof Player && ((Player)event.getWhoClicked()).getGameMode() != GameMode.CREATIVE)
event.setCancelled(true);
}
2013-08-27 17:14:08 +02:00
@EventHandler
public void UpdateScoreboard(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
2013-08-27 17:14:08 +02:00
_scoreboardTick = (_scoreboardTick + 1)%3;
2013-08-27 17:14:08 +02:00
if (_scoreboardTick != 0)
return;
2013-08-27 17:14:08 +02:00
int bestPig = 0;
for (Player player : UtilServer.getPlayers())
{
if (player.getVehicle() != null)
continue;
2013-08-27 17:14:08 +02:00
int count = 0;
2013-08-27 17:14:08 +02:00
Entity ent = player;
while (ent.getPassenger() != null)
{
ent = ent.getPassenger();
count++;
}
2013-08-27 17:14:08 +02:00
if (count > bestPig)
{
_pigStacker = player.getName();
bestPig = count;
}
}
if (bestPig == 0)
{
_pigStacker = "0 - Nobody";
}
else
{
_pigStacker = bestPig + " - " + _pigStacker;
2013-08-27 17:14:08 +02:00
if (_pigStacker.length() > 16)
_pigStacker = _pigStacker.substring(0, 16);
}
2013-08-27 17:14:08 +02:00
for (Player player : UtilServer.getPlayers())
{
//Dont Waste Time
if (_partyManager.GetParty(player) != null)
continue;
//Return to Main Scoreboard
if (!player.getScoreboard().equals(_scoreboards.get(player)))
player.setScoreboard(_scoreboards.get(player));
2013-08-27 17:14:08 +02:00
//Objective
Objective obj = player.getScoreboard().getObjective(DisplaySlot.SIDEBAR);
2013-08-27 17:14:08 +02:00
//Title
obj.setDisplayName(C.cWhite + C.Bold + Get(player).GetScoreboardText());
2013-08-27 17:14:08 +02:00
int line = 15;
2014-08-09 04:16:37 +02:00
//Stacker
obj.getScore(C.cAqua + C.Bold + "Stacker").setScore(line--);
player.getScoreboard().resetScores(Get(player).BestPig);
Get(player).BestPig = _pigStacker;
obj.getScore(Get(player).BestPig).setScore(line--);
//Space
obj.getScore(" ").setScore(line--);
//Gems
obj.getScore(C.cGreen + C.Bold + "Gems").setScore(line--);
2014-08-09 04:16:37 +02:00
// Remove Old/Add New
player.getScoreboard().resetScores(Get(player.getName()).GetLastGemCount() + "");
obj.getScore(GetDonation().Get(player.getName()).GetGems() + "").setScore(line--);
2013-08-27 17:14:08 +02:00
Get(player.getName()).SetLastGemCount(GetDonation().Get(player.getName()).GetGems());
2013-08-27 17:14:08 +02:00
//Space
2014-08-09 04:16:37 +02:00
obj.getScore(" ").setScore(line--);
2014-08-09 04:16:37 +02:00
//Coins
obj.getScore(C.cYellow + C.Bold + "Coins").setScore(line--);
// Remove Old
player.getScoreboard().resetScores(Get(player.getName()).GetLastCoinCount() + "");
// Add New
obj.getScore(GetDonation().Get(player.getName()).getCoins() + "").setScore(line--);
Get(player.getName()).SetLastCoinCount(GetDonation().Get(player.getName()).getCoins());
2013-08-27 17:14:08 +02:00
//Space
2014-08-09 04:16:37 +02:00
obj.getScore(" ").setScore(line--);
2013-08-27 17:14:08 +02:00
//Display Rank
2014-08-09 04:16:37 +02:00
obj.getScore(C.cGold + C.Bold + "Rank").setScore(line--);
if (GetClients().Get(player).GetRank().Has(Rank.ULTRA))
obj.getScore(GetClients().Get(player).GetRank().Name).setScore(line--);
else if (GetDonation().Get(player.getName()).OwnsUnknownPackage("SuperSmashMobs ULTRA") ||
GetDonation().Get(player.getName()).OwnsUnknownPackage("Survival Games ULTRA") ||
GetDonation().Get(player.getName()).OwnsUnknownPackage("Minigames ULTRA") ||
GetDonation().Get(player.getName()).OwnsUnknownPackage("CastleSiege ULTRA") ||
GetDonation().Get(player.getName()).OwnsUnknownPackage("Champions ULTRA"))
obj.getScore("Single Ultra").setScore(line--);
2013-08-27 17:14:08 +02:00
else
2014-08-09 04:16:37 +02:00
obj.getScore("No Rank").setScore(line--);
2013-08-27 17:14:08 +02:00
//Space
2014-08-09 04:16:37 +02:00
obj.getScore(" ").setScore(line--);
2013-08-27 17:14:08 +02:00
//Website
2014-08-09 04:16:37 +02:00
obj.getScore(C.cRed + C.Bold + "Website").setScore(line--);
obj.getScore("www.mineplex.com").setScore(line--);
obj.getScore("----------------").setScore(line--);
2013-08-27 17:14:08 +02:00
}
}
2013-08-27 17:14:08 +02:00
@Override
protected HubClient AddPlayer(String player)
{
2013-08-27 17:14:08 +02:00
return new HubClient(player);
}
public BlockRestore GetBlockRestore()
{
return _blockRestore;
}
2013-08-27 17:14:08 +02:00
public CoreClientManager GetClients()
{
return _clientManager;
}
2013-10-19 07:52:15 +02:00
public ConditionManager GetCondition()
{
return _conditionManager;
}
2013-08-27 17:14:08 +02:00
public DonationManager GetDonation()
{
return _donationManager;
}
public DisguiseManager GetDisguise()
{
return _disguiseManager;
}
public GadgetManager GetGadget()
{
return _gadgetManager;
}
public MountManager GetMount()
{
return _mountManager;
}
2013-09-18 11:46:45 +02:00
public ParkourManager GetParkour()
{
return _parkour;
}
public PreferencesManager getPreferences()
{
return _preferences;
}
public Location GetSpawn()
2013-08-27 17:14:08 +02:00
{
return _spawn.clone();
2013-08-27 17:14:08 +02:00
}
public TutorialManager GetTutorial()
2013-08-27 17:14:08 +02:00
{
return _tutorialManager;
}
2013-12-14 06:38:16 +01:00
public StatsManager GetStats()
{
return _statsManager;
}
public VisibilityManager GetVisibility()
{
return _visibilityManager;
}
@EventHandler(priority = EventPriority.MONITOR)
public void gadgetCollide(GadgetCollideEntityEvent event)
{
if (!event.isCancelled())
SetPortalDelay(event.getOther());
}
2013-10-29 00:41:53 +01:00
public void SetPortalDelay(Entity ent)
{
if (ent instanceof Player)
_portalTime.put(((Player)ent).getName(), System.currentTimeMillis());
}
public boolean CanPortal(Player player)
{
//Riding
if (player.getVehicle() != null || player.getPassenger() != null)
2013-10-29 00:41:53 +01:00
return false;
//Portal Delay
if (!_portalTime.containsKey(player.getName()))
return true;
return UtilTime.elapsed(_portalTime.get(player.getName()), 5000);
}
2014-05-13 04:08:56 +02:00
public boolean CanBump(LivingEntity ent)
{
if (!(ent instanceof Player))
return true;
2014-05-13 04:08:56 +02:00
if (BumpDisabled(ent))
return false;
if (!getPreferences().Get((Player)ent).ShowPlayers)
2014-05-13 04:08:56 +02:00
return false;
2014-05-13 04:08:56 +02:00
return true;
}
@EventHandler
public void SkillTrigger(SkillTriggerEvent event)
{
event.SetCancelled(true);
}
@EventHandler
public void ItemTrigger(ItemTriggerEvent event)
{
event.SetCancelled(true);
}
2014-05-13 04:08:56 +02:00
public boolean IsGadgetEnabled()
{
return _gadgetsEnabled;
}
public NewsManager GetNewsManager()
{
return _news;
}
2014-05-13 04:08:56 +02:00
@Override
protected void loadClientInformation(RetrieveClientInformationEvent event)
{
}
2014-09-30 00:17:02 +02:00
@EventHandler
public void ignoreVelocity(PlayerVelocityEvent event)
{
if (_clientManager.Get(event.getPlayer()).GetRank().Has(Rank.MODERATOR) && _preferences.Get(event.getPlayer()).IgnoreVelocity)
{
event.setCancelled(true);
}
}
public void ToggleGadget(Player caller)
{
_gadgetsEnabled = !_gadgetsEnabled;
if (!_gadgetsEnabled)
{
GetMount().DisableAll();
GetGadget().DisableAll();
}
for (Player player : UtilServer.getPlayers())
player.sendMessage(C.cWhite + C.Bold + "Gadgets/Mounts are now " + F.elem(_gadgetsEnabled ? C.cGreen + C.Bold + "Enabled" : C.cRed + C.Bold + "Disabled"));
}
@EventHandler
public void GadgetActivate(GadgetActivateEvent event)
{
if (!_gadgetsEnabled)
event.setCancelled(true);
}
@EventHandler
public void MountActivate(MountActivateEvent event)
{
if (!_gadgetsEnabled)
event.setCancelled(true);
}
2013-08-27 17:14:08 +02:00
}