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
}