2015-10-19 17:43:46 +00:00
package me.totalfreedom.totalfreedommod.player ;
2011-10-01 17:59:46 +00:00
2011-10-10 12:09:19 +00:00
import java.util.ArrayList ;
import java.util.List ;
2015-10-19 17:43:46 +00:00
import lombok.Getter ;
import lombok.Setter ;
2015-11-15 23:32:04 +00:00
import me.totalfreedom.totalfreedommod.caging.CageData ;
2015-10-19 17:43:46 +00:00
import me.totalfreedom.totalfreedommod.config.ConfigEntry ;
import me.totalfreedom.totalfreedommod.util.FUtil ;
import me.totalfreedom.totalfreedommod.TotalFreedomMod ;
2015-11-15 23:32:04 +00:00
import me.totalfreedom.totalfreedommod.freeze.FreezeData ;
2015-10-19 17:43:46 +00:00
import net.pravian.aero.util.Ips ;
2011-10-16 06:00:37 +00:00
import org.bukkit.Bukkit ;
2013-07-02 20:31:05 +00:00
import org.bukkit.ChatColor ;
2012-03-09 19:01:04 +00:00
import org.bukkit.entity.Arrow ;
import org.bukkit.entity.EntityType ;
import org.bukkit.entity.LivingEntity ;
import org.bukkit.entity.Player ;
2013-07-27 21:49:25 +00:00
import org.bukkit.scheduler.BukkitRunnable ;
2012-12-09 03:42:29 +00:00
import org.bukkit.scheduler.BukkitTask ;
2011-10-10 12:09:19 +00:00
2015-10-19 17:43:46 +00:00
public class FPlayer
2011-10-01 17:59:46 +00:00
{
2015-10-19 17:43:46 +00:00
public static final long AUTO_PURGE_TICKS = 5L * 60L * 20L ;
2012-09-18 21:25:37 +00:00
2015-10-19 17:43:46 +00:00
@Getter
private final String name ;
@Getter
2014-12-21 09:23:50 +00:00
private final String ip ;
2015-10-19 17:43:46 +00:00
//
@Setter
private Player player ;
2014-12-21 09:23:50 +00:00
//
private BukkitTask unmuteTask ;
private BukkitTask unfreezeTask ;
2015-11-15 23:32:04 +00:00
@Getter
private final FreezeData freezeData = new FreezeData ( this ) ;
@Getter
private double fuckoffRadius = 0 ;
2014-12-21 09:23:50 +00:00
private int messageCount = 0 ;
private int totalBlockDestroy = 0 ;
private int totalBlockPlace = 0 ;
private int freecamDestroyCount = 0 ;
private int freecamPlaceCount = 0 ;
2015-11-15 23:32:04 +00:00
@Getter
private final CageData cageData = new CageData ( this ) ;
2015-02-16 16:00:38 +00:00
private boolean isOrbiting = false ;
private double orbitStrength = 10 . 0 ;
private boolean mobThrowerEnabled = false ;
private EntityType mobThrowerEntity = EntityType . PIG ;
private double mobThrowerSpeed = 4 . 0 ;
2015-10-19 17:43:46 +00:00
private final List < LivingEntity > mobThrowerQueue = new ArrayList < LivingEntity > ( ) ;
2015-02-16 16:00:38 +00:00
private BukkitTask mp44ScheduleTask = null ;
private boolean mp44Armed = false ;
private boolean mp44Firing = false ;
private BukkitTask lockupScheduleTask = null ;
2014-12-21 09:23:50 +00:00
private String lastMessage = " " ;
2015-02-16 16:00:38 +00:00
private boolean inAdminchat = false ;
private boolean allCommandsBlocked = false ;
private boolean verifiedSuperadminId = false ;
2014-12-21 09:23:50 +00:00
private String lastCommand = " " ;
2015-02-16 16:00:38 +00:00
private boolean cmdspyEnabled = false ;
2014-12-21 09:23:50 +00:00
private String tag = null ;
2015-02-16 16:00:38 +00:00
private int warningCount = 0 ;
2014-12-21 09:23:50 +00:00
2015-10-19 17:43:46 +00:00
public FPlayer ( Player player )
2014-12-21 09:23:50 +00:00
{
2015-10-19 17:43:46 +00:00
this ( player . getName ( ) , Ips . getIp ( player ) ) ;
2014-12-21 09:23:50 +00:00
}
2012-09-18 21:25:37 +00:00
2015-10-19 17:43:46 +00:00
private FPlayer ( String name , String ip )
2012-11-21 01:09:24 +00:00
{
2015-10-19 17:43:46 +00:00
this . name = name ;
this . ip = ip ;
2012-11-21 01:09:24 +00:00
}
2015-10-19 17:43:46 +00:00
public Player getPlayer ( )
2014-06-28 20:23:17 +00:00
{
2015-10-19 17:43:46 +00:00
if ( player ! = null & & ! player . isOnline ( ) )
{
player = null ;
}
if ( player = = null )
{
for ( Player onlinePlayer : Bukkit . getOnlinePlayers ( ) )
{
if ( Ips . getIp ( onlinePlayer ) . equals ( ip ) )
{
player = onlinePlayer ;
break ;
}
}
}
return player ;
2014-06-28 20:23:17 +00:00
}
2011-10-16 06:00:37 +00:00
public boolean isOrbiting ( )
{
2015-02-16 16:00:38 +00:00
return isOrbiting ;
2011-10-16 06:00:37 +00:00
}
2013-08-25 16:32:01 +00:00
public void startOrbiting ( double strength )
2011-10-16 06:00:37 +00:00
{
2013-08-25 16:32:01 +00:00
this . isOrbiting = true ;
this . orbitStrength = strength ;
2011-10-16 06:00:37 +00:00
}
2012-09-18 21:25:37 +00:00
2011-10-16 06:00:37 +00:00
public void stopOrbiting ( )
{
2013-08-25 16:32:01 +00:00
this . isOrbiting = false ;
2011-10-16 06:00:37 +00:00
}
public double orbitStrength ( )
{
2015-02-16 16:00:38 +00:00
return orbitStrength ;
2011-10-16 06:00:37 +00:00
}
2011-10-14 23:29:09 +00:00
2015-11-15 23:32:04 +00:00
public boolean isFuckOff ( )
2011-10-10 12:09:19 +00:00
{
2015-11-15 23:32:04 +00:00
return fuckoffRadius > 0 ;
2011-10-10 12:09:19 +00:00
}
2011-10-14 23:29:09 +00:00
2015-11-15 23:32:04 +00:00
public void setFuckoff ( double radius )
2011-10-10 12:09:19 +00:00
{
2015-11-15 23:32:04 +00:00
this . fuckoffRadius = radius ;
2011-10-10 12:09:19 +00:00
}
2011-10-14 23:29:09 +00:00
2015-11-15 23:32:04 +00:00
public void disableFuckoff ( )
2011-10-10 12:09:19 +00:00
{
2015-11-15 23:32:04 +00:00
this . fuckoffRadius = 0 ;
2011-10-01 17:59:46 +00:00
}
public void resetMsgCount ( )
{
2013-08-25 16:32:01 +00:00
this . messageCount = 0 ;
2011-10-01 17:59:46 +00:00
}
2011-10-02 04:18:52 +00:00
2013-08-13 17:42:43 +00:00
public int incrementAndGetMsgCount ( )
2011-10-01 17:59:46 +00:00
{
2013-08-25 16:32:01 +00:00
return this . messageCount + + ;
2011-10-01 17:59:46 +00:00
}
2011-10-02 04:18:52 +00:00
2013-08-13 17:42:43 +00:00
public int incrementAndGetBlockDestroyCount ( )
2011-10-01 17:59:46 +00:00
{
2013-08-25 16:32:01 +00:00
return this . totalBlockDestroy + + ;
2011-10-01 17:59:46 +00:00
}
2011-10-02 04:18:52 +00:00
2011-10-01 17:59:46 +00:00
public void resetBlockDestroyCount ( )
{
2013-08-25 16:32:01 +00:00
this . totalBlockDestroy = 0 ;
2011-10-05 19:07:45 +00:00
}
2012-09-18 21:25:37 +00:00
2013-08-13 17:42:43 +00:00
public int incrementAndGetBlockPlaceCount ( )
2011-10-18 04:08:40 +00:00
{
2013-08-25 16:32:01 +00:00
return this . totalBlockPlace + + ;
2011-10-18 04:08:40 +00:00
}
public void resetBlockPlaceCount ( )
{
2013-08-25 16:32:01 +00:00
this . totalBlockPlace = 0 ;
2011-10-18 04:08:40 +00:00
}
2011-10-14 23:29:09 +00:00
2013-08-13 17:42:43 +00:00
public int incrementAndGetFreecamDestroyCount ( )
2011-10-05 19:07:45 +00:00
{
2013-08-25 16:32:01 +00:00
return this . freecamDestroyCount + + ;
2011-10-05 19:07:45 +00:00
}
public void resetFreecamDestroyCount ( )
{
2013-08-25 16:32:01 +00:00
this . freecamDestroyCount = 0 ;
2011-10-05 19:07:45 +00:00
}
2011-10-14 23:29:09 +00:00
2013-08-13 17:42:43 +00:00
public int incrementAndGetFreecamPlaceCount ( )
2011-10-05 19:07:45 +00:00
{
2013-08-25 16:32:01 +00:00
return this . freecamPlaceCount + + ;
2011-10-05 19:07:45 +00:00
}
public void resetFreecamPlaceCount ( )
{
2013-08-25 16:32:01 +00:00
this . freecamPlaceCount = 0 ;
2011-10-01 17:59:46 +00:00
}
2011-10-16 06:00:37 +00:00
2013-08-25 16:32:01 +00:00
public void enableMobThrower ( EntityType mobThrowerCreature , double mobThrowerSpeed )
2011-10-16 06:00:37 +00:00
{
2013-08-25 16:32:01 +00:00
this . mobThrowerEnabled = true ;
this . mobThrowerEntity = mobThrowerCreature ;
this . mobThrowerSpeed = mobThrowerSpeed ;
2011-10-16 06:00:37 +00:00
}
2012-09-18 21:25:37 +00:00
2011-10-16 06:00:37 +00:00
public void disableMobThrower ( )
{
2013-08-25 16:32:01 +00:00
this . mobThrowerEnabled = false ;
2011-10-16 06:00:37 +00:00
}
2012-03-03 04:29:54 +00:00
public EntityType mobThrowerCreature ( )
2011-10-16 06:00:37 +00:00
{
2013-08-25 16:32:01 +00:00
return this . mobThrowerEntity ;
2011-10-16 06:00:37 +00:00
}
public double mobThrowerSpeed ( )
{
2013-08-25 16:32:01 +00:00
return this . mobThrowerSpeed ;
2011-10-16 06:00:37 +00:00
}
2012-09-18 21:25:37 +00:00
2011-10-16 06:00:37 +00:00
public boolean mobThrowerEnabled ( )
{
2013-08-25 16:32:01 +00:00
return this . mobThrowerEnabled ;
2011-10-16 06:00:37 +00:00
}
2012-09-18 21:25:37 +00:00
2011-10-16 06:00:37 +00:00
public void enqueueMob ( LivingEntity mob )
{
2013-08-25 16:32:01 +00:00
mobThrowerQueue . add ( mob ) ;
if ( mobThrowerQueue . size ( ) > 4 )
2011-10-16 06:00:37 +00:00
{
2013-08-25 16:32:01 +00:00
LivingEntity oldmob = mobThrowerQueue . remove ( 0 ) ;
2011-10-16 06:00:37 +00:00
if ( oldmob ! = null )
{
2013-07-02 23:08:31 +00:00
oldmob . damage ( 500 . 0 ) ;
2011-10-16 06:00:37 +00:00
}
}
}
2012-09-18 21:25:37 +00:00
2011-10-21 17:02:07 +00:00
public void startArrowShooter ( TotalFreedomMod plugin )
2011-10-16 06:00:37 +00:00
{
2011-10-21 17:02:07 +00:00
this . stopArrowShooter ( ) ;
2014-11-20 22:20:31 +00:00
this . mp44ScheduleTask = new ArrowShooter ( this . player ) . runTaskTimer ( plugin , 1L , 1L ) ;
2013-08-25 16:32:01 +00:00
this . mp44Firing = true ;
2011-10-16 06:00:37 +00:00
}
2012-09-18 21:25:37 +00:00
2011-10-19 00:37:00 +00:00
public void stopArrowShooter ( )
2011-10-16 06:00:37 +00:00
{
2014-11-20 22:20:31 +00:00
if ( this . mp44ScheduleTask ! = null )
2011-10-16 06:00:37 +00:00
{
2014-11-20 22:20:31 +00:00
this . mp44ScheduleTask . cancel ( ) ;
this . mp44ScheduleTask = null ;
2011-10-16 06:00:37 +00:00
}
2013-08-25 16:32:01 +00:00
this . mp44Firing = false ;
2011-10-21 17:02:07 +00:00
}
2012-09-18 21:25:37 +00:00
2011-10-21 17:02:07 +00:00
public void armMP44 ( )
{
2013-08-25 16:32:01 +00:00
this . mp44Armed = true ;
2011-10-21 17:02:07 +00:00
this . stopArrowShooter ( ) ;
}
2012-09-18 21:25:37 +00:00
2011-10-21 17:02:07 +00:00
public void disarmMP44 ( )
{
2013-08-25 16:32:01 +00:00
this . mp44Armed = false ;
2011-10-21 17:02:07 +00:00
this . stopArrowShooter ( ) ;
}
2012-09-18 21:25:37 +00:00
2011-10-21 17:02:07 +00:00
public boolean isMP44Armed ( )
{
2013-08-25 16:32:01 +00:00
return this . mp44Armed ;
2011-10-21 17:02:07 +00:00
}
2012-09-18 21:25:37 +00:00
2011-10-21 17:02:07 +00:00
public boolean toggleMP44Firing ( )
{
2013-08-25 16:32:01 +00:00
this . mp44Firing = ! this . mp44Firing ;
return mp44Firing ;
2011-10-16 06:00:37 +00:00
}
2012-09-14 22:49:44 +00:00
public boolean isMuted ( )
{
2014-11-20 22:20:31 +00:00
return unmuteTask ! = null ;
2012-09-14 22:49:44 +00:00
}
2013-08-25 16:32:01 +00:00
public void setMuted ( boolean muted )
2012-09-14 22:49:44 +00:00
{
2015-11-15 23:32:04 +00:00
FUtil . cancel ( unmuteTask ) ;
2014-11-20 22:20:31 +00:00
unmuteTask = null ;
if ( ! muted )
{
return ;
}
unmuteTask = new BukkitRunnable ( )
{
@Override
public void run ( )
{
2015-10-19 17:43:46 +00:00
FUtil . adminAction ( " TotalFreedom " , " Unmuting " + player . getName ( ) , false ) ;
2014-11-20 22:20:31 +00:00
setMuted ( false ) ;
}
2015-10-19 17:43:46 +00:00
} . runTaskLater ( TotalFreedomMod . plugin , AUTO_PURGE_TICKS ) ;
2012-09-14 22:49:44 +00:00
}
2012-09-18 21:25:37 +00:00
2012-12-09 03:42:29 +00:00
public BukkitTask getLockupScheduleID ( )
2012-09-19 02:21:25 +00:00
{
2014-11-20 22:20:31 +00:00
return this . lockupScheduleTask ;
2012-09-19 02:21:25 +00:00
}
2013-08-25 16:32:01 +00:00
public void setLockupScheduleID ( BukkitTask id )
2012-09-19 02:21:25 +00:00
{
2014-11-20 22:20:31 +00:00
this . lockupScheduleTask = id ;
2012-09-19 02:21:25 +00:00
}
2012-11-27 19:02:39 +00:00
2013-08-25 16:32:01 +00:00
public void setLastMessage ( String message )
2012-11-27 19:02:39 +00:00
{
2013-08-25 16:32:01 +00:00
this . lastMessage = message ;
2012-11-27 19:02:39 +00:00
}
public String getLastMessage ( )
{
2013-08-25 16:32:01 +00:00
return lastMessage ;
2012-11-27 19:02:39 +00:00
}
2012-11-28 18:31:01 +00:00
2013-08-25 16:32:01 +00:00
public void setAdminChat ( boolean inAdminchat )
2012-11-28 18:31:01 +00:00
{
2013-08-25 16:32:01 +00:00
this . inAdminchat = inAdminchat ;
2012-11-28 18:31:01 +00:00
}
public boolean inAdminChat ( )
{
2013-08-25 16:32:01 +00:00
return this . inAdminchat ;
2012-11-28 18:31:01 +00:00
}
2012-12-06 09:32:08 +00:00
2012-12-08 01:01:52 +00:00
public boolean allCommandsBlocked ( )
2012-12-06 09:32:08 +00:00
{
2013-08-25 16:32:01 +00:00
return this . allCommandsBlocked ;
2012-12-06 09:32:08 +00:00
}
2013-08-25 16:32:01 +00:00
public void setCommandsBlocked ( boolean commandsBlocked )
2012-12-06 09:32:08 +00:00
{
2013-08-25 16:32:01 +00:00
this . allCommandsBlocked = commandsBlocked ;
2012-12-06 09:32:08 +00:00
}
2012-12-20 01:25:29 +00:00
2013-08-25 16:32:01 +00:00
// If someone logs in to telnet or minecraft, and they are an admin, make sure that they are using a username that is associated with their IP.
// After the check for this is done in TFM_PlayerListener, never change it elsewhere.
2014-04-11 15:24:44 +00:00
public boolean isSuperadminIdVerified ( )
2012-12-20 01:25:29 +00:00
{
2013-08-25 16:32:01 +00:00
return this . verifiedSuperadminId ;
2012-12-20 01:25:29 +00:00
}
2013-08-25 16:32:01 +00:00
// If someone logs in to telnet or minecraft, and they are an admin, make sure that they are using a username that is associated with their IP.
// After the check for this is done in TFM_PlayerListener, never change it elsewhere.
2014-04-11 15:24:44 +00:00
public void setSuperadminIdVerified ( boolean verifiedSuperadminId )
2012-12-20 01:25:29 +00:00
{
2013-08-25 16:32:01 +00:00
this . verifiedSuperadminId = verifiedSuperadminId ;
2012-12-20 01:25:29 +00:00
}
2012-12-22 03:22:08 +00:00
public String getLastCommand ( )
{
2013-08-25 16:32:01 +00:00
return lastCommand ;
2012-12-22 03:22:08 +00:00
}
2013-08-25 16:32:01 +00:00
public void setLastCommand ( String lastCommand )
2012-12-22 03:22:08 +00:00
{
2013-08-25 16:32:01 +00:00
this . lastCommand = lastCommand ;
2012-12-22 03:22:08 +00:00
}
2013-01-21 18:58:42 +00:00
2013-08-25 16:32:01 +00:00
public void setCommandSpy ( boolean enabled )
2013-01-21 18:58:42 +00:00
{
2013-08-25 16:32:01 +00:00
this . cmdspyEnabled = enabled ;
2013-01-21 18:58:42 +00:00
}
public boolean cmdspyEnabled ( )
{
2013-08-25 16:32:01 +00:00
return cmdspyEnabled ;
2013-01-21 18:58:42 +00:00
}
2013-08-12 10:26:49 +00:00
public void setTag ( String tag )
{
if ( tag = = null )
{
this . tag = null ;
}
else
{
2015-10-19 17:43:46 +00:00
this . tag = FUtil . colorize ( tag ) + ChatColor . WHITE ;
2013-08-12 10:26:49 +00:00
}
}
public String getTag ( )
{
return this . tag ;
}
2014-10-27 11:23:08 +00:00
public int getWarningCount ( )
{
return this . warningCount ;
}
public void incrementWarnings ( )
{
this . warningCount + + ;
if ( this . warningCount % 2 = = 0 )
{
this . player . getWorld ( ) . strikeLightning ( this . player . getLocation ( ) ) ;
2015-10-19 17:43:46 +00:00
FUtil . playerMsg ( this . player , ChatColor . RED + " You have been warned at least twice now, make sure to read the rules at " + ConfigEntry . SERVER_BAN_URL . getString ( ) ) ;
2014-10-27 11:23:08 +00:00
}
}
2014-11-20 22:20:31 +00:00
2014-12-21 09:23:50 +00:00
private class ArrowShooter extends BukkitRunnable
{
2015-11-15 23:32:04 +00:00
private final Player player ;
2014-12-21 09:23:50 +00:00
private ArrowShooter ( Player player )
{
this . player = player ;
}
@Override
public void run ( )
{
Arrow shot = player . launchProjectile ( Arrow . class ) ;
shot . setVelocity ( shot . getVelocity ( ) . multiply ( 2 . 0 ) ) ;
}
}
2011-10-01 17:59:46 +00:00
}