diff --git a/src/main/java/serverutils/command/tp/CmdBack.java b/src/main/java/serverutils/command/tp/CmdBack.java index d2526133..da250bc8 100644 --- a/src/main/java/serverutils/command/tp/CmdBack.java +++ b/src/main/java/serverutils/command/tp/CmdBack.java @@ -12,6 +12,7 @@ import serverutils.lib.command.CmdBase; import serverutils.lib.command.CommandUtils; import serverutils.lib.data.ForgePlayer; +import serverutils.lib.math.BlockDimPos; import serverutils.lib.util.permission.PermissionAPI; public class CmdBack extends CmdBase { @@ -33,6 +34,11 @@ public void processCommand(ICommandSender sender, String[] args) throws CommandE throw ServerUtilities.error(sender, "serverutilities.lang.warps.no_dp"); } + BlockDimPos noPosFound = new BlockDimPos(0, 0, 0, 0); + if (lastTeleportLog.getBlockDimPos().equalsPos(noPosFound)) { + throw ServerUtilities.error(sender, "serverutilities.lang.warps.no_pos_found"); + } + data.checkTeleportCooldown(sender, ServerUtilitiesPlayerData.Timer.BACK); ServerUtilitiesPlayerData.Timer.BACK.teleport(player, playerMP -> lastTeleportLog.teleporter(), universe -> { diff --git a/src/main/java/serverutils/data/ServerUtilitiesPlayerData.java b/src/main/java/serverutils/data/ServerUtilitiesPlayerData.java index 79c8a12d..bea21a1d 100644 --- a/src/main/java/serverutils/data/ServerUtilitiesPlayerData.java +++ b/src/main/java/serverutils/data/ServerUtilitiesPlayerData.java @@ -164,7 +164,7 @@ public static ServerUtilitiesPlayerData get(ForgePlayer player) { private BlockDimPos lastSafePos; private final long[] lastTeleport; public final BlockDimPosStorage homes; - private TeleportTracker teleportTracker; + private final TeleportTracker teleportTracker; public ServerUtilitiesPlayerData(ForgePlayer player) { super(player); @@ -186,7 +186,7 @@ public NBTTagCompound serializeNBT() { nbt.setBoolean("DisableGlobalBadges", disableGlobalBadge); nbt.setBoolean("EnablePVP", enablePVP); nbt.setTag("Homes", homes.serializeNBT()); - + nbt.setTag("TeleportTracker", teleportTracker.serializeNBT()); nbt.setString("Nickname", nickname); nbt.setString("AFK", EnumMessageLocation.NAME_MAP.getName(afkMesageLocation)); return nbt; @@ -198,8 +198,7 @@ public void deserializeNBT(NBTTagCompound nbt) { disableGlobalBadge = nbt.getBoolean("DisableGlobalBadges"); enablePVP = !nbt.hasKey("EnablePVP") || nbt.getBoolean("EnablePVP"); homes.deserializeNBT(nbt.getCompoundTag("Homes")); - teleportTracker = new TeleportTracker(); - teleportTracker.deserializeNBT(nbt.getCompoundTag("teleportTracker")); + teleportTracker.deserializeNBT(nbt.getCompoundTag("TeleportTracker")); setLastDeath(BlockDimPos.fromIntArray(nbt.getIntArray("LastDeath")), 0); nickname = nbt.getString("Nickname"); afkMesageLocation = EnumMessageLocation.NAME_MAP.get(nbt.getString("AFK")); diff --git a/src/main/java/serverutils/data/TeleportTracker.java b/src/main/java/serverutils/data/TeleportTracker.java index 1225e15d..434c19d2 100644 --- a/src/main/java/serverutils/data/TeleportTracker.java +++ b/src/main/java/serverutils/data/TeleportTracker.java @@ -14,8 +14,8 @@ public class TeleportTracker implements INBTSerializable { - private TeleportLog[] logs; - private IPermissionHandler permissionHandler; + private final TeleportLog[] logs; + private final IPermissionHandler permissionHandler; public TeleportTracker() { this(PermissionAPI.getPermissionHandler()); @@ -63,6 +63,7 @@ public void clearLog(TeleportType teleportType) { public NBTTagCompound serializeNBT() { NBTTagCompound nbt = new NBTTagCompound(); for (int i = 0; i < logs.length; i++) { + if (logs[i] == null) continue; nbt.setTag(String.valueOf(i), logs[i].serializeNBT()); } return nbt; diff --git a/src/main/resources/assets/serverutilities/lang/en_US.lang b/src/main/resources/assets/serverutilities/lang/en_US.lang index 6b9de659..e892c7ba 100644 --- a/src/main/resources/assets/serverutilities/lang/en_US.lang +++ b/src/main/resources/assets/serverutilities/lang/en_US.lang @@ -435,6 +435,7 @@ serverutilities.lang.warps.not_set=Unknown Warp: '%s'! serverutilities.lang.warps.cooldown=You can only use warp in %s! serverutilities.lang.warps.tp=Teleported to '%s'! serverutilities.lang.warps.no_dp=You can only go back once! +serverutilities.lang.warps.no_pos_found=No position to go back to! # Homes serverutilities.lang.homes.set=Home '%s' set!