From 5063a0613d522f588f2c47a49bbaadd6eb3bb569 Mon Sep 17 00:00:00 2001 From: Steve Anton Date: Tue, 22 Dec 2015 22:06:19 -0600 Subject: [PATCH] Add PlayerInitialSpawnEvent --- .../0013-Add-PlayerInitialSpawnEvent.patch | 59 +++++++++++++++++++ .../0076-Add-PlayerInitialSpawnEvent.patch | 37 ++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 Spigot-API-Patches/0013-Add-PlayerInitialSpawnEvent.patch create mode 100644 Spigot-Server-Patches/0076-Add-PlayerInitialSpawnEvent.patch diff --git a/Spigot-API-Patches/0013-Add-PlayerInitialSpawnEvent.patch b/Spigot-API-Patches/0013-Add-PlayerInitialSpawnEvent.patch new file mode 100644 index 0000000..e4b4fc3 --- /dev/null +++ b/Spigot-API-Patches/0013-Add-PlayerInitialSpawnEvent.patch @@ -0,0 +1,59 @@ +From 391fd5f868cb9dcafb5be14f3a1efec2eec4faec Mon Sep 17 00:00:00 2001 +From: Steve Anton +Date: Tue, 22 Dec 2015 22:04:15 -0600 +Subject: [PATCH] Add PlayerInitialSpawnEvent + +For modifying a player's initial spawn location as they join the server + +diff --git a/src/main/java/org/bukkit/event/player/PlayerInitialSpawnEvent.java b/src/main/java/org/bukkit/event/player/PlayerInitialSpawnEvent.java +new file mode 100644 +index 0000000..be82593 +--- /dev/null ++++ b/src/main/java/org/bukkit/event/player/PlayerInitialSpawnEvent.java +@@ -0,0 +1,42 @@ ++package org.bukkit.event.player; ++ ++import org.bukkit.Location; ++import org.bukkit.entity.Player; ++import org.bukkit.event.HandlerList; ++ ++public class PlayerInitialSpawnEvent extends PlayerEvent { ++ private static final HandlerList handlers = new HandlerList(); ++ private Location spawnLocation; ++ ++ public PlayerInitialSpawnEvent(final Player player, final Location spawnLocation) { ++ super(player); ++ this.spawnLocation = spawnLocation; ++ } ++ ++ /** ++ * Gets the current spawn location ++ * ++ * @return Location current spawn location ++ */ ++ public Location getSpawnLocation() { ++ return this.spawnLocation; ++ } ++ ++ /** ++ * Sets the new spawn location ++ * ++ * @param spawnLocation new location for the spawn ++ */ ++ public void setSpawnLocation(Location spawnLocation) { ++ this.spawnLocation = spawnLocation; ++ } ++ ++ @Override ++ public HandlerList getHandlers() { ++ return handlers; ++ } ++ ++ public static HandlerList getHandlerList() { ++ return handlers; ++ } ++} +\ No newline at end of file +-- +2.6.4 + diff --git a/Spigot-Server-Patches/0076-Add-PlayerInitialSpawnEvent.patch b/Spigot-Server-Patches/0076-Add-PlayerInitialSpawnEvent.patch new file mode 100644 index 0000000..c7ed742 --- /dev/null +++ b/Spigot-Server-Patches/0076-Add-PlayerInitialSpawnEvent.patch @@ -0,0 +1,37 @@ +From 364348e091cd60843ae06ff5add8b4affcac2d83 Mon Sep 17 00:00:00 2001 +From: Steve Anton +Date: Tue, 22 Dec 2015 22:04:15 -0600 +Subject: [PATCH] Add PlayerInitialSpawnEvent + +For modifying a player's initial spawn location as they join the server + +diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java +index deb0b82..becd11c 100644 +--- a/src/main/java/net/minecraft/server/PlayerList.java ++++ b/src/main/java/net/minecraft/server/PlayerList.java +@@ -99,6 +88,22 @@ public abstract class PlayerList { + } + // CraftBukkit end + ++ // PaperSpigot start - support PlayerInitialSpawnEvent ++ Location originalLoc = new Location(entityplayer.world.getWorld(), entityplayer.locX, entityplayer.locY, entityplayer.locZ, entityplayer.yaw, entityplayer.pitch); ++ org.bukkit.event.player.PlayerInitialSpawnEvent event = new org.bukkit.event.player.PlayerInitialSpawnEvent(entityplayer.getBukkitEntity(), originalLoc); ++ this.server.server.getPluginManager().callEvent(event); ++ ++ Location newLoc = event.getSpawnLocation(); ++ entityplayer.world = ((CraftWorld) newLoc.getWorld()).getHandle(); ++ entityplayer.locX = newLoc.getX(); ++ entityplayer.locY = newLoc.getY(); ++ entityplayer.locZ = newLoc.getZ(); ++ entityplayer.yaw = newLoc.getYaw(); ++ entityplayer.pitch = newLoc.getPitch(); ++ entityplayer.dimension = ((CraftWorld) newLoc.getWorld()).getHandle().dimension; ++ entityplayer.spawnWorld = entityplayer.world.worldData.getName(); ++ // PaperSpigot end ++ + entityplayer.spawnIn(this.server.getWorldServer(entityplayer.dimension)); + entityplayer.playerInteractManager.a((WorldServer) entityplayer.world); + String s1 = "local"; +-- +2.6.4 +