mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2026-06-05 02:46:54 +00:00
Mavenized project
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
package me.totalfreedom.totalfreedommod.freeze;
|
||||
|
||||
import lombok.Getter;
|
||||
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||
import static me.totalfreedom.totalfreedommod.player.FPlayer.AUTO_PURGE_TICKS;
|
||||
import me.totalfreedom.totalfreedommod.util.FLog;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
public class FreezeData
|
||||
{
|
||||
private final FPlayer fPlayer;
|
||||
//
|
||||
@Getter
|
||||
private Location location = null;
|
||||
private BukkitTask unfreeze = null;
|
||||
|
||||
public FreezeData(FPlayer fPlayer)
|
||||
{
|
||||
this.fPlayer = fPlayer;
|
||||
}
|
||||
|
||||
public boolean isFrozen()
|
||||
{
|
||||
return unfreeze != null;
|
||||
}
|
||||
|
||||
public void setFrozen(boolean freeze)
|
||||
{
|
||||
final Player player = fPlayer.getPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
FLog.info("Could not freeze " + fPlayer.getName() + ". Player not online!");
|
||||
return;
|
||||
}
|
||||
|
||||
FUtil.cancel(unfreeze);
|
||||
unfreeze = null;
|
||||
location = null;
|
||||
|
||||
if (!freeze)
|
||||
{
|
||||
if (fPlayer.getPlayer().getGameMode() != GameMode.CREATIVE)
|
||||
{
|
||||
FUtil.setFlying(player, false);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
location = player.getLocation(); // Blockify location
|
||||
FUtil.setFlying(player, true); // Avoid infinite falling
|
||||
unfreeze = new BukkitRunnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
FUtil.adminAction("TotalFreedom", "Unfreezing " + player.getName(), false);
|
||||
setFrozen(false);
|
||||
}
|
||||
|
||||
}.runTaskLater(TotalFreedomMod.plugin, AUTO_PURGE_TICKS);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package me.totalfreedom.totalfreedommod.freeze;
|
||||
|
||||
import lombok.Getter;
|
||||
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import net.pravian.aero.component.service.AbstractService;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
|
||||
public class Freezer extends AbstractService<TotalFreedomMod>
|
||||
{
|
||||
@Getter
|
||||
private boolean globalFreeze = false;
|
||||
|
||||
public Freezer(TotalFreedomMod plugin)
|
||||
{
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart()
|
||||
{
|
||||
globalFreeze = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop()
|
||||
{
|
||||
}
|
||||
|
||||
public void setGlobalFreeze(boolean frozen)
|
||||
{
|
||||
this.globalFreeze = true;
|
||||
}
|
||||
|
||||
public void purge()
|
||||
{
|
||||
setGlobalFreeze(false);
|
||||
|
||||
for (Player player : server.getOnlinePlayers())
|
||||
{
|
||||
plugin.pl.getPlayer(player).getFreezeData().setFrozen(false);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void onPlayerMove(PlayerMoveEvent event)
|
||||
{
|
||||
final Player player = event.getPlayer();
|
||||
|
||||
if (!plugin.al.isAdmin(player))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final FreezeData fd = plugin.pl.getPlayer(player).getFreezeData();
|
||||
if (globalFreeze || fd.isFrozen())
|
||||
{
|
||||
FUtil.setFlying(player, true);
|
||||
event.setTo(fd.getLocation());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user