extras/src/main/java/pw/kaboom/extras/modules/player/PlayerConnection.java

112 lines
3.4 KiB
Java
Raw Normal View History

2019-12-17 12:37:59 +00:00
package pw.kaboom.extras.modules.player;
2019-07-30 17:14:24 +00:00
2019-08-02 17:57:10 +00:00
import org.bukkit.Chunk;
2019-08-02 21:19:56 +00:00
import org.bukkit.World;
2019-10-13 13:14:25 +00:00
import org.bukkit.block.BlockState;
2019-07-30 17:14:24 +00:00
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerLoginEvent.Result;
2019-10-03 16:30:18 +00:00
import org.bukkit.event.player.PlayerQuitEvent;
2019-09-28 00:29:48 +00:00
import org.bukkit.plugin.java.JavaPlugin;
2019-12-17 12:37:59 +00:00
import pw.kaboom.extras.Main;
import pw.kaboom.extras.helpers.SkinDownloader;
2019-12-21 14:12:26 +00:00
public final class PlayerConnection implements Listener {
2019-07-30 17:14:24 +00:00
@EventHandler
2019-12-21 14:12:26 +00:00
void onAsyncPlayerPreLogin(final AsyncPlayerPreLoginEvent event) {
2019-09-17 13:50:12 +00:00
if (event.getName().length() > 16) {
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "Your username can't be longer than 16 characters");
2019-07-30 17:14:24 +00:00
}
}
@EventHandler
2019-12-21 14:12:26 +00:00
void onPlayerJoin(final PlayerJoinEvent event) {
2019-07-30 17:14:24 +00:00
final Player player = event.getPlayer();
2019-11-30 23:04:08 +00:00
final String title = JavaPlugin.getPlugin(Main.class).getConfig().getString("playerJoinTitle");
final String subtitle = JavaPlugin.getPlugin(Main.class).getConfig().getString("playerJoinSubtitle");
2019-08-01 21:09:52 +00:00
final int fadeIn = 10;
final int stay = 160;
final int fadeOut = 5;
2019-07-30 17:14:24 +00:00
2019-12-21 14:12:26 +00:00
if (title != null
|| subtitle != null) {
2019-11-30 23:04:08 +00:00
player.sendTitle(
title,
subtitle,
fadeIn,
stay,
fadeOut
);
}
2019-07-30 17:14:24 +00:00
}
@EventHandler
2019-12-21 14:12:26 +00:00
void onPlayerKick(final PlayerKickEvent event) {
2019-12-01 00:08:12 +00:00
if (!JavaPlugin.getPlugin(Main.class).getConfig().getBoolean("enableKick")) {
event.setCancelled(true);
}
2019-07-30 17:14:24 +00:00
}
@EventHandler
2019-12-21 14:12:26 +00:00
void onPlayerLogin(final PlayerLoginEvent event) {
if (event.getHostname().startsWith("play.flame.ga")
&& event.getHostname().endsWith(":25565")) {
2019-07-30 17:14:24 +00:00
event.disallow(Result.KICK_OTHER, "You connected to the server using an outdated server address/IP.\nPlease use the following address/IP:\n\nkaboom.pw");
2019-08-01 21:09:52 +00:00
return;
}
2019-07-30 17:14:24 +00:00
2019-08-01 21:09:52 +00:00
final Player player = event.getPlayer();
2019-12-01 00:08:12 +00:00
if (!JavaPlugin.getPlugin(Main.class).getConfig().getBoolean("enableJoinRestrictions")) {
event.allow();
}
2019-12-20 19:05:02 +00:00
2019-12-21 14:12:26 +00:00
if (event.getResult() == Result.KICK_FULL
&& JavaPlugin.getPlugin(Main.class).getConfig().getBoolean("allowJoinOnFullServer")) {
2019-12-03 11:27:06 +00:00
event.allow();
}
2019-12-20 19:05:02 +00:00
2019-12-01 00:08:12 +00:00
if (JavaPlugin.getPlugin(Main.class).getConfig().getBoolean("opOnJoin")) {
player.setOp(true);
}
2019-09-17 13:50:12 +00:00
2019-12-21 13:39:31 +00:00
final String name = player.getName();
2019-12-02 17:07:05 +00:00
final boolean shouldChangeUsername = false;
final boolean shouldSendMessage = false;
SkinDownloader skinDownloader = new SkinDownloader();
2019-12-21 13:39:31 +00:00
skinDownloader.applySkin(player, name, shouldChangeUsername, shouldSendMessage);
2019-07-30 17:14:24 +00:00
}
2019-10-03 16:30:18 +00:00
2019-12-17 12:37:59 +00:00
@SuppressWarnings("deprecation")
2019-10-03 16:30:18 +00:00
@EventHandler
void onPlayerQuit(PlayerQuitEvent event) {
2019-12-11 16:59:32 +00:00
PlayerCommand.commandMillisList.remove(event.getPlayer().getUniqueId());
PlayerInteract.interactMillisList.remove(event.getPlayer().getUniqueId());
2019-12-21 14:12:26 +00:00
SkinDownloader.skinInProgress.remove(event.getPlayer().getUniqueId());
2019-12-02 22:47:05 +00:00
2019-10-03 16:30:18 +00:00
final World world = event.getPlayer().getWorld();
for (final Chunk chunk : world.getLoadedChunks()) {
try {
2019-10-13 13:14:25 +00:00
int data = 0;
for (BlockState block : chunk.getTileEntities()) {
data = data + block.getBlockData().getAsString().length();
}
if (data > 1285579) {
world.regenerateChunk(chunk.getX(), chunk.getZ());
}
2019-10-03 16:30:18 +00:00
} catch (Exception exception) {
world.regenerateChunk(chunk.getX(), chunk.getZ());
}
}
}
2019-07-30 17:14:24 +00:00
}