summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDinnerbone <dinnerbone@dinnerbone.com>2010-12-30 05:35:30 +0000
committerDinnerbone <dinnerbone@dinnerbone.com>2010-12-30 05:35:30 +0000
commita06303621022b97cbf19d3fb2754781c18152d1a (patch)
treece155e0fa4f858a56317e258d757f8a4ea794a3c
parentbd53a823d2213af917a0065e64e20901b5974d80 (diff)
downloadcraftbukkit-a06303621022b97cbf19d3fb2754781c18152d1a.tar
craftbukkit-a06303621022b97cbf19d3fb2754781c18152d1a.tar.gz
craftbukkit-a06303621022b97cbf19d3fb2754781c18152d1a.tar.lz
craftbukkit-a06303621022b97cbf19d3fb2754781c18152d1a.tar.xz
craftbukkit-a06303621022b97cbf19d3fb2754781c18152d1a.zip
Fixed player handle being reset on death or disconnection
-rw-r--r--src/net/minecraft/server/NetServerHandler.java22
-rw-r--r--src/net/minecraft/server/ServerConfigurationManager.java3
-rw-r--r--src/org/bukkit/craftbukkit/CraftPlayer.java18
-rw-r--r--src/org/bukkit/craftbukkit/CraftServer.java21
4 files changed, 35 insertions, 29 deletions
diff --git a/src/net/minecraft/server/NetServerHandler.java b/src/net/minecraft/server/NetServerHandler.java
index a745b030..02ac31d7 100644
--- a/src/net/minecraft/server/NetServerHandler.java
+++ b/src/net/minecraft/server/NetServerHandler.java
@@ -27,7 +27,10 @@ public class NetServerHandler extends NetHandler
private double i;
private boolean j;
private Map k;
- private final CraftServer server; // CraftBukkit
+
+ // CraftBukkit - next 2 lines
+ private final CraftServer server;
+ private final CraftPlayer player;
public NetServerHandler(MinecraftServer minecraftserver, NetworkManager networkmanager, EntityPlayerMP entityplayermp) {
c = false;
@@ -39,8 +42,17 @@ public class NetServerHandler extends NetHandler
networkmanager.a(this);
e = entityplayermp;
entityplayermp.a = this;
- server = minecraftserver.server; // CraftBukkit
+
+ // CraftBukkit - next 2 lines
+ server = minecraftserver.server;
+ player = new CraftPlayer(server, e);
+ }
+
+ // CraftBukkit start
+ public CraftPlayer getPlayer() {
+ return player;
}
+ // CraftBukkit end
public void a() {
b.a();
@@ -67,7 +79,6 @@ public class NetServerHandler extends NetHandler
}
// CraftBukkit start
- Player player = server.getPlayer(e);
Location from = new Location(player.getWorld(), g, h, i, e.v, e.w);
Location to = player.getLocation();
PlayerMoveEvent event = new PlayerMoveEvent(Type.PLAYER_MOVE, player, from, to);
@@ -194,7 +205,6 @@ public class NetServerHandler extends NetHandler
float f2) {
// CraftBukkit start
- Player player = server.getPlayer(e);
Location from = player.getLocation();
Location to = new Location(player.getWorld(), d1, d2, d3, f1, f2);
PlayerMoveEvent event = new PlayerMoveEvent(Type.PLAYER_TELEPORT, player, from, to);
@@ -378,7 +388,7 @@ public class NetServerHandler extends NetHandler
c(s);
} else {
// CraftBukkit start
- PlayerChatEvent event = new PlayerChatEvent(Type.PLAYER_CHAT, server.getPlayer(e), s);
+ PlayerChatEvent event = new PlayerChatEvent(Type.PLAYER_CHAT, player, s);
server.getPluginManager().callEvent(event);
s = (new StringBuilder()).append("<").append(event.getPlayer().getName()).append("> ").append(event.getMessage()).toString();
// CraftBukkit stop
@@ -390,7 +400,7 @@ public class NetServerHandler extends NetHandler
private void c(String s) {
// CraftBukkit start
- PlayerChatEvent event = new PlayerChatEvent(Type.PLAYER_COMMAND, server.getPlayer(e), s);
+ PlayerChatEvent event = new PlayerChatEvent(Type.PLAYER_COMMAND, player, s);
server.getPluginManager().callEvent(event);
if (event.isCancelled()) return;
s = event.getMessage();
diff --git a/src/net/minecraft/server/ServerConfigurationManager.java b/src/net/minecraft/server/ServerConfigurationManager.java
index e841da97..dac524b8 100644
--- a/src/net/minecraft/server/ServerConfigurationManager.java
+++ b/src/net/minecraft/server/ServerConfigurationManager.java
@@ -3,6 +3,7 @@ package net.minecraft.server;
import java.io.*;
import java.util.*;
import java.util.logging.Logger;
+import org.bukkit.craftbukkit.CraftPlayer;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.event.Event.Type;
@@ -90,7 +91,7 @@ public class ServerConfigurationManager {
// depending on the outcome.
EntityPlayerMP entity = new EntityPlayerMP(c, c.e, s, new ItemInWorldManager(c.e));
- PlayerLoginEvent event = new PlayerLoginEvent(Type.PLAYER_LOGIN, server.getPlayer(entity));
+ PlayerLoginEvent event = new PlayerLoginEvent(Type.PLAYER_LOGIN, new CraftPlayer(server, entity));
String s2 = netloginhandler.b.b().toString();
s2 = s2.substring(s2.indexOf("/") + 1);
diff --git a/src/org/bukkit/craftbukkit/CraftPlayer.java b/src/org/bukkit/craftbukkit/CraftPlayer.java
index 9e6d44fb..f10d920c 100644
--- a/src/org/bukkit/craftbukkit/CraftPlayer.java
+++ b/src/org/bukkit/craftbukkit/CraftPlayer.java
@@ -3,10 +3,11 @@ package org.bukkit.craftbukkit;
import net.minecraft.server.EntityPlayerMP;
import net.minecraft.server.Packet3Chat;
+import org.bukkit.Location;
import org.bukkit.Player;
public class CraftPlayer extends CraftHumanEntity implements Player {
- private final EntityPlayerMP entity;
+ private EntityPlayerMP entity;
public CraftPlayer(CraftServer server, EntityPlayerMP entity) {
super(server, entity);
@@ -22,12 +23,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return entity;
}
- @Override
- public String toString() {
- return "CraftPlayer{" + "name=" + getName() + '}';
+ public void setHandle(final EntityPlayerMP entity) {
+ this.entity = entity;
}
public void sendMessage(String message) {
entity.a.b(new Packet3Chat(message));
}
+
+ @Override
+ public void teleportTo(Location location) {
+ entity.a.a(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
+ }
+
+ @Override
+ public String toString() {
+ return "CraftPlayer{" + "name=" + getName() + '}';
+ }
}
diff --git a/src/org/bukkit/craftbukkit/CraftServer.java b/src/org/bukkit/craftbukkit/CraftServer.java
index 9060d062..1fe1ee44 100644
--- a/src/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/org/bukkit/craftbukkit/CraftServer.java
@@ -18,7 +18,6 @@ import org.bukkit.plugin.java.JavaPluginLoader;
public final class CraftServer implements Server {
private final String serverName = "Craftbukkit";
private final String serverVersion;
- private final HashMap<String, Player> playerCache = new HashMap<String, Player>();
private final PluginManager pluginManager = new SimplePluginManager(this);
protected final MinecraftServer console;
@@ -57,28 +56,14 @@ public final class CraftServer implements Server {
Player[] players = new Player[online.size()];
for (int i = 0; i < players.length; i++) {
- String name = online.get(i).aw;
-
- if (playerCache.containsKey(name)) {
- players[i] = playerCache.get(name);
- } else {
- players[i] = new CraftPlayer(this, online.get(i));
- playerCache.put(name, players[i]);
- }
+ players[i] = online.get(i).a.getPlayer();
}
return players;
}
- public Player getPlayer(EntityPlayerMP entity) {
- Player result = playerCache.get(entity.aw);
-
- if (result == null) {
- result = new CraftPlayer(this, entity);
- playerCache.put(entity.aw, result);
- }
-
- return result;
+ public Player getPlayer(final EntityPlayerMP entity) {
+ return entity.a.getPlayer();
}
public PluginManager getPluginManager() {