From 2d4c454febd797834d878953ca39b48c07b2be1f Mon Sep 17 00:00:00 2001 From: David Berdik Date: Wed, 7 Jul 2021 16:40:10 -0400 Subject: [PATCH] Add pitch and yaw to Herobrine's Graveyard teleportation cache. --- .../herobrine/AI/cores/Graveyard.java | 2 ++ .../herobrine/listeners/PlayerListener.java | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/theprogrammersworld/herobrine/AI/cores/Graveyard.java b/src/main/java/net/theprogrammersworld/herobrine/AI/cores/Graveyard.java index a2615bd..4d14c3b 100644 --- a/src/main/java/net/theprogrammersworld/herobrine/AI/cores/Graveyard.java +++ b/src/main/java/net/theprogrammersworld/herobrine/AI/cores/Graveyard.java @@ -171,6 +171,8 @@ public class Graveyard extends Core { cache.write(Double.toString(loc.getX()) + '\n'); cache.write(Double.toString(loc.getY()) + '\n'); cache.write(Double.toString(loc.getZ()) + '\n'); + cache.write(Double.toString(loc.getPitch()) + '\n'); + cache.write(Double.toString(loc.getYaw()) + '\n'); cache.write(loc.getWorld().getName()); cache.close(); } catch (IOException e) {e.printStackTrace();} diff --git a/src/main/java/net/theprogrammersworld/herobrine/listeners/PlayerListener.java b/src/main/java/net/theprogrammersworld/herobrine/listeners/PlayerListener.java index c6f0d58..ab6e927 100644 --- a/src/main/java/net/theprogrammersworld/herobrine/listeners/PlayerListener.java +++ b/src/main/java/net/theprogrammersworld/herobrine/listeners/PlayerListener.java @@ -68,8 +68,21 @@ public class PlayerListener implements Listener { } cache.close(); String[] cacheData = cacheDataString.split("\n"); - event.getPlayer().teleport(new Location(Bukkit.getServer().getWorld(cacheData[3]), Double.parseDouble(cacheData[0]), - Double.parseDouble(cacheData[1]), Double.parseDouble(cacheData[2]))); + + // If the cacheData length is 4, then the cache is from a version of the plugin prior to 2.2.0 and only contains the + // player's (X, Y, Z) coordinates and the world. Otherwise, the cache also contains the player's pitch and yaw. Parse + // the data appropriately and teleport them. + Location tpDest = new Location(null, Double.parseDouble(cacheData[0]), Double.parseDouble(cacheData[1]), Double.parseDouble(cacheData[2])); + if (cacheData.length == 4) { + tpDest.setWorld(Bukkit.getServer().getWorld(cacheData[3])); + } + else { + tpDest.setPitch(Float.parseFloat(cacheData[3])); + tpDest.setYaw(Float.parseFloat(cacheData[4])); + tpDest.setWorld(Bukkit.getServer().getWorld(cacheData[5])); + } + event.getPlayer().teleport(tpDest); + new File(graveyardCachePath).delete(); } catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}