Save player location if he quit sitting on chair and restore it on join
This commit is contained in:
parent
8da5322de5
commit
6eae9eb644
@ -1,6 +1,7 @@
|
||||
package com.cnaude.chairs;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
@ -12,7 +13,10 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
@ -73,6 +77,7 @@ public class Chairs extends JavaPlugin {
|
||||
protocolManager.getAsynchronousManager().unregisterAsyncHandlers(this);
|
||||
protocolManager = null;
|
||||
for (String pName : new HashSet<String>(sit.keySet())) {
|
||||
savePlayerSitstoploc(pName);
|
||||
ejectPlayerOnDisable(Bukkit.getPlayerExact(pName));
|
||||
}
|
||||
if (ignoreList != null) {
|
||||
@ -167,6 +172,36 @@ public class Chairs extends JavaPlugin {
|
||||
}
|
||||
|
||||
|
||||
protected void savePlayerSitstoploc(String player)
|
||||
{
|
||||
FileConfiguration plconfig = new YamlConfiguration();
|
||||
Location sitstop = sitstopteleportloc.get(player);
|
||||
plconfig.set(player+".world", sitstop.getWorld().getName());
|
||||
plconfig.set(player+".xyz", sitstop.toVector());
|
||||
plconfig.set(player+".pitch", sitstop.getPitch());
|
||||
plconfig.set(player+".yaw", sitstop.getYaw());
|
||||
try {
|
||||
plconfig.save(new File(getDataFolder(),"playersdata"+File.separator+player+".yml"));
|
||||
} catch (IOException e) {
|
||||
}
|
||||
}
|
||||
protected Location getPlayerSitstoploc(String player)
|
||||
{
|
||||
File plfile = new File(getDataFolder(),"playersdata"+File.separator+player+".yml");
|
||||
if (plfile.exists())
|
||||
{
|
||||
FileConfiguration plconfig = YamlConfiguration.loadConfiguration(plfile);
|
||||
World world = Bukkit.getWorld(plconfig.getString(player+".world"));
|
||||
Vector xyz = plconfig.getVector(player+".xyz");
|
||||
Location sitstop = new Location(world,xyz.getX(),xyz.getY(),xyz.getZ());
|
||||
sitstop.setPitch((float) plconfig.getDouble(player+".pitch"));
|
||||
sitstop.setYaw((float) plconfig.getDouble(player+".yaw"));
|
||||
plfile.delete();
|
||||
return sitstop;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void loadConfig() {
|
||||
autoRotate = getConfig().getBoolean("auto-rotate");
|
||||
signCheck = getConfig().getBoolean("sign-check");
|
||||
|
@ -35,35 +35,12 @@ public class EventListener implements Listener {
|
||||
|
||||
@EventHandler(priority=EventPriority.LOWEST,ignoreCancelled=true)
|
||||
public void onJoin(PlayerJoinEvent e)
|
||||
{
|
||||
if (!plugin.authmelogincorrection)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
{
|
||||
Player player = e.getPlayer();
|
||||
Location loc = player.getLocation();
|
||||
if (Double.isNaN(loc.getY()))
|
||||
Location loc = plugin.getPlayerSitstoploc(player.getName());
|
||||
if (loc != null)
|
||||
{
|
||||
Location teleportloc = null;
|
||||
//corect y, there should be a valid chair somewhere up
|
||||
Location temploc = loc.clone();
|
||||
for (int i = 1 ; i<loc.getWorld().getMaxHeight(); i++)
|
||||
{
|
||||
temploc.setY(i);
|
||||
if (sitAllowed(player, temploc.getBlock()))
|
||||
{
|
||||
//maybe this is a chair we are looking for
|
||||
teleportloc = temploc.clone();
|
||||
break;
|
||||
}
|
||||
}
|
||||
//if we didn't find the chair just teleport player to world spawn
|
||||
if (teleportloc == null)
|
||||
{
|
||||
teleportloc = player.getWorld().getSpawnLocation();
|
||||
}
|
||||
player.teleport(teleportloc);
|
||||
player.teleport(loc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -73,6 +50,7 @@ public class EventListener implements Listener {
|
||||
Player player = event.getPlayer();
|
||||
if (plugin.sit.containsKey(player.getName()))
|
||||
{
|
||||
plugin.savePlayerSitstoploc(player.getName());
|
||||
plugin.ejectPlayer(player);
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user