TotalFreedomMod/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java

417 lines
9.6 KiB
Java
Raw Normal View History

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;
import lombok.Getter;
import lombok.Setter;
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
import me.totalfreedom.totalfreedommod.caging.CageData;
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
import me.totalfreedom.totalfreedommod.freeze.FreezeData;
import me.totalfreedom.totalfreedommod.util.FUtil;
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;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;
2011-10-10 12:09:19 +00:00
public class FPlayer
2011-10-01 17:59:46 +00:00
{
public static final long AUTO_PURGE_TICKS = 5L * 60L * 20L;
@Getter
private final String name;
@Getter
private final String ip;
//
@Setter
private Player player;
//
private BukkitTask unmuteTask;
private BukkitTask unfreezeTask;
@Getter
private final FreezeData freezeData = new FreezeData(this);
@Getter
private double fuckoffRadius = 0;
private int messageCount = 0;
private int totalBlockDestroy = 0;
private int totalBlockPlace = 0;
private int freecamDestroyCount = 0;
private int freecamPlaceCount = 0;
@Getter
private final CageData cageData = new CageData(this);
private boolean isOrbiting = false;
private double orbitStrength = 10.0;
private boolean mobThrowerEnabled = false;
private EntityType mobThrowerEntity = EntityType.PIG;
private double mobThrowerSpeed = 4.0;
private final List<LivingEntity> mobThrowerQueue = new ArrayList<>();
private BukkitTask mp44ScheduleTask = null;
private boolean mp44Armed = false;
private boolean mp44Firing = false;
private BukkitTask lockupScheduleTask = null;
private String lastMessage = "";
private boolean inAdminchat = false;
private boolean allCommandsBlocked = false;
private boolean verifiedSuperadminId = false;
private String lastCommand = "";
private boolean cmdspyEnabled = false;
private String tag = null;
private int warningCount = 0;
public FPlayer(Player player)
{
this(player.getName(), Ips.getIp(player));
}
private FPlayer(String name, String ip)
{
this.name = name;
this.ip = ip;
}
public Player getPlayer()
{
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;
}
2011-10-16 06:00:37 +00:00
public boolean isOrbiting()
{
return isOrbiting;
2011-10-16 06:00:37 +00:00
}
public void startOrbiting(double strength)
2011-10-16 06:00:37 +00:00
{
this.isOrbiting = true;
this.orbitStrength = strength;
2011-10-16 06:00:37 +00:00
}
2011-10-16 06:00:37 +00:00
public void stopOrbiting()
{
this.isOrbiting = false;
2011-10-16 06:00:37 +00:00
}
public double orbitStrength()
{
return orbitStrength;
2011-10-16 06:00:37 +00:00
}
2011-10-14 23:29:09 +00:00
public boolean isFuckOff()
2011-10-10 12:09:19 +00:00
{
return fuckoffRadius > 0;
2011-10-10 12:09:19 +00:00
}
2011-10-14 23:29:09 +00:00
public void setFuckoff(double radius)
2011-10-10 12:09:19 +00:00
{
this.fuckoffRadius = radius;
2011-10-10 12:09:19 +00:00
}
2011-10-14 23:29:09 +00:00
public void disableFuckoff()
2011-10-10 12:09:19 +00:00
{
this.fuckoffRadius = 0;
2011-10-01 17:59:46 +00:00
}
public void resetMsgCount()
{
this.messageCount = 0;
2011-10-01 17:59:46 +00:00
}
2011-10-02 04:18:52 +00:00
public int incrementAndGetMsgCount()
2011-10-01 17:59:46 +00:00
{
return this.messageCount++;
2011-10-01 17:59:46 +00:00
}
2011-10-02 04:18:52 +00:00
public int incrementAndGetBlockDestroyCount()
2011-10-01 17:59:46 +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()
{
this.totalBlockDestroy = 0;
2011-10-05 19:07:45 +00:00
}
public int incrementAndGetBlockPlaceCount()
2011-10-18 04:08:40 +00:00
{
return this.totalBlockPlace++;
2011-10-18 04:08:40 +00:00
}
public void resetBlockPlaceCount()
{
this.totalBlockPlace = 0;
2011-10-18 04:08:40 +00:00
}
2011-10-14 23:29:09 +00:00
public int incrementAndGetFreecamDestroyCount()
2011-10-05 19:07:45 +00:00
{
return this.freecamDestroyCount++;
2011-10-05 19:07:45 +00:00
}
public void resetFreecamDestroyCount()
{
this.freecamDestroyCount = 0;
2011-10-05 19:07:45 +00:00
}
2011-10-14 23:29:09 +00:00
public int incrementAndGetFreecamPlaceCount()
2011-10-05 19:07:45 +00:00
{
return this.freecamPlaceCount++;
2011-10-05 19:07:45 +00:00
}
public void resetFreecamPlaceCount()
{
this.freecamPlaceCount = 0;
2011-10-01 17:59:46 +00:00
}
2011-10-16 06:00:37 +00:00
public void enableMobThrower(EntityType mobThrowerCreature, double mobThrowerSpeed)
2011-10-16 06:00:37 +00:00
{
this.mobThrowerEnabled = true;
this.mobThrowerEntity = mobThrowerCreature;
this.mobThrowerSpeed = mobThrowerSpeed;
2011-10-16 06:00:37 +00:00
}
2011-10-16 06:00:37 +00:00
public void disableMobThrower()
{
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
{
return this.mobThrowerEntity;
2011-10-16 06:00:37 +00:00
}
public double mobThrowerSpeed()
{
return this.mobThrowerSpeed;
2011-10-16 06:00:37 +00:00
}
2011-10-16 06:00:37 +00:00
public boolean mobThrowerEnabled()
{
return this.mobThrowerEnabled;
2011-10-16 06:00:37 +00:00
}
2011-10-16 06:00:37 +00:00
public void enqueueMob(LivingEntity mob)
{
mobThrowerQueue.add(mob);
if (mobThrowerQueue.size() > 4)
2011-10-16 06:00:37 +00:00
{
LivingEntity oldmob = mobThrowerQueue.remove(0);
2011-10-16 06:00:37 +00:00
if (oldmob != null)
{
oldmob.damage(500.0);
2011-10-16 06:00: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();
this.mp44ScheduleTask = new ArrowShooter(this.player).runTaskTimer(plugin, 1L, 1L);
this.mp44Firing = true;
2011-10-16 06:00:37 +00:00
}
2011-10-19 00:37:00 +00:00
public void stopArrowShooter()
2011-10-16 06:00:37 +00:00
{
if (this.mp44ScheduleTask != null)
2011-10-16 06:00:37 +00:00
{
this.mp44ScheduleTask.cancel();
this.mp44ScheduleTask = null;
2011-10-16 06:00:37 +00:00
}
this.mp44Firing = false;
2011-10-21 17:02:07 +00:00
}
2011-10-21 17:02:07 +00:00
public void armMP44()
{
this.mp44Armed = true;
2011-10-21 17:02:07 +00:00
this.stopArrowShooter();
}
2011-10-21 17:02:07 +00:00
public void disarmMP44()
{
this.mp44Armed = false;
2011-10-21 17:02:07 +00:00
this.stopArrowShooter();
}
2011-10-21 17:02:07 +00:00
public boolean isMP44Armed()
{
return this.mp44Armed;
2011-10-21 17:02:07 +00:00
}
2011-10-21 17:02:07 +00:00
public boolean toggleMP44Firing()
{
this.mp44Firing = !this.mp44Firing;
return mp44Firing;
2011-10-16 06:00:37 +00:00
}
public boolean isMuted()
{
return unmuteTask != null;
}
public void setMuted(boolean muted)
{
FUtil.cancel(unmuteTask);
unmuteTask = null;
if (!muted)
{
return;
}
unmuteTask = new BukkitRunnable()
{
@Override
public void run()
{
FUtil.adminAction("TotalFreedom", "Unmuting " + player.getName(), false);
setMuted(false);
}
}.runTaskLater(TotalFreedomMod.plugin, AUTO_PURGE_TICKS);
}
public BukkitTask getLockupScheduleID()
{
return this.lockupScheduleTask;
}
public void setLockupScheduleId(BukkitTask id)
{
this.lockupScheduleTask = id;
}
2012-11-27 19:02:39 +00:00
public void setLastMessage(String message)
2012-11-27 19:02:39 +00:00
{
this.lastMessage = message;
2012-11-27 19:02:39 +00:00
}
public String getLastMessage()
{
return lastMessage;
2012-11-27 19:02:39 +00:00
}
public void setAdminChat(boolean inAdminchat)
{
this.inAdminchat = inAdminchat;
}
public boolean inAdminChat()
{
return this.inAdminchat;
}
2012-12-06 09:32:08 +00:00
public boolean allCommandsBlocked()
2012-12-06 09:32:08 +00:00
{
return this.allCommandsBlocked;
2012-12-06 09:32:08 +00:00
}
public void setCommandsBlocked(boolean commandsBlocked)
2012-12-06 09:32:08 +00:00
{
this.allCommandsBlocked = commandsBlocked;
2012-12-06 09:32:08 +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.
public boolean isSuperadminIdVerified()
{
return this.verifiedSuperadminId;
}
// 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.
public void setSuperadminIdVerified(boolean verifiedSuperadminId)
{
this.verifiedSuperadminId = verifiedSuperadminId;
}
public String getLastCommand()
{
return lastCommand;
}
public void setLastCommand(String lastCommand)
{
this.lastCommand = lastCommand;
}
2013-01-21 18:58:42 +00:00
public void setCommandSpy(boolean enabled)
2013-01-21 18:58:42 +00:00
{
this.cmdspyEnabled = enabled;
2013-01-21 18:58:42 +00:00
}
public boolean cmdspyEnabled()
{
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
{
this.tag = FUtil.colorize(tag) + ChatColor.WHITE;
2013-08-12 10:26:49 +00:00
}
}
public String getTag()
{
return this.tag;
}
public int getWarningCount()
{
return this.warningCount;
}
public void incrementWarnings()
{
this.warningCount++;
if (this.warningCount % 2 == 0)
{
this.player.getWorld().strikeLightning(this.player.getLocation());
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());
}
}
private class ArrowShooter extends BukkitRunnable
{
private final Player player;
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
}