Improve authme login location fix

This commit is contained in:
Shevchik 2013-09-03 21:21:31 +04:00
parent cfe5ca1674
commit 3177a63ba2
2 changed files with 20 additions and 8 deletions

View File

@ -45,12 +45,25 @@ public class EventListener implements Listener {
Location loc = player.getLocation(); Location loc = player.getLocation();
if (Double.isNaN(loc.getY())) if (Double.isNaN(loc.getY()))
{ {
loc = player.getBedSpawnLocation(); Location teleportloc = null;
if (loc == null) //corect y, there should be a valid chair somewhere up
Location temploc = loc.clone();
for (int i = 1 ; i<loc.getWorld().getMaxHeight(); i++)
{ {
loc = player.getWorld().getSpawnLocation(); temploc.setY(i);
if (sitAllowed(player, temploc.getBlock()))
{
//maybe this is a chair we are looking for
teleportloc = temploc.clone();
break;
}
} }
player.teleport(loc); //if we didn't find the chair just teleport player to world spawn
if (teleportloc == null)
{
teleportloc = player.getWorld().getSpawnLocation();
}
player.teleport(teleportloc);
} }
} }
@ -305,6 +318,7 @@ public class EventListener implements Listener {
} }
plugin.sitstopteleportloc.put(player.getName(), player.getLocation()); plugin.sitstopteleportloc.put(player.getName(), player.getLocation());
player.teleport(sitlocation); player.teleport(sitlocation);
player.setSneaking(false);
Entity arrow = block.getWorld().spawnArrow(block.getLocation().add(0.5, 0 , 0.5), new Vector(0, 0, 0), 0, 0); Entity arrow = block.getWorld().spawnArrow(block.getLocation().add(0.5, 0 , 0.5), new Vector(0, 0, 0), 0, 0);
arrow.setPassenger(player); arrow.setPassenger(player);
plugin.sit.put(player.getName(), arrow); plugin.sit.put(player.getName(), arrow);
@ -325,8 +339,7 @@ public class EventListener implements Listener {
plugin.sittask.put(player.getName(), task); plugin.sittask.put(player.getName(), task);
} }
private boolean isValidChair(Block block) {
public boolean isValidChair(Block block) {
for (ChairBlock cb : plugin.allowedBlocks) { for (ChairBlock cb : plugin.allowedBlocks) {
if (cb.getMat().equals(block.getType())) { if (cb.getMat().equals(block.getType())) {
return true; return true;
@ -335,7 +348,6 @@ public class EventListener implements Listener {
return false; return false;
} }
private boolean isSitting(Player player) { private boolean isSitting(Player player) {
if (plugin.sit.containsKey(player.getName())) { if (plugin.sit.containsKey(player.getName())) {
if (player.isInsideVehicle()) { if (player.isInsideVehicle()) {

Binary file not shown.