Fix null location when teleporting to own playerbed destination. (#2487)
* Fix teleporting to a the calling player's bed * Change name to my-bed to prevent collisions with player names * Re-add old player bed for backwards compatibility * Remove second bed destination name * Give constant more sensible name
This commit is contained in:
parent
d041e0a8d1
commit
ed80083fe8
|
@ -23,7 +23,7 @@ import org.bukkit.util.Vector;
|
|||
* A bed-{@link MVDestination}.
|
||||
*/
|
||||
public class BedDestination implements MVDestination {
|
||||
public static final String OLD_BED_STRING = "b:playerbed";
|
||||
public static final String OWN_BED_STRING = "playerbed";
|
||||
private String playername = "";
|
||||
private boolean isValid;
|
||||
private Location knownBedLoc;
|
||||
|
@ -46,11 +46,11 @@ public class BedDestination implements MVDestination {
|
|||
boolean validFormat = split.length >= 1 && split.length <= 2 && split[0].equals(this.getIdentifier());
|
||||
|
||||
OfflinePlayer p = Bukkit.getOfflinePlayer(split[1]);
|
||||
boolean validPlayer = (p != null);
|
||||
boolean validPlayer = p.getName() != null && !p.getName().equals(OWN_BED_STRING);
|
||||
|
||||
if (validFormat && validPlayer) this.playername = p.getName();
|
||||
|
||||
this.isValid = destination.equals(OLD_BED_STRING) || (validFormat && validPlayer);
|
||||
this.isValid = destination.equals("b:" + OWN_BED_STRING) || (validFormat && validPlayer);
|
||||
|
||||
return this.isValid;
|
||||
}
|
||||
|
@ -136,6 +136,6 @@ public class BedDestination implements MVDestination {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return playername.isEmpty() ? OLD_BED_STRING : ("b:" + playername);
|
||||
return "b:" + (playername.isEmpty() ? OWN_BED_STRING : playername);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue