Commits

Dinnerbone authored a0630362102
Fixed player handle being reset on death or disconnection
No tags

src/net/minecraft/server/NetServerHandler.java

Modified
20 20 public NetworkManager b;
21 21 public boolean c;
22 22 private MinecraftServer d;
23 23 private EntityPlayerMP e;
24 24 private int f;
25 25 private double g;
26 26 private double h;
27 27 private double i;
28 28 private boolean j;
29 29 private Map k;
30 - private final CraftServer server; // CraftBukkit
30 +
31 + // CraftBukkit - next 2 lines
32 + private final CraftServer server;
33 + private final CraftPlayer player;
31 34
32 35 public NetServerHandler(MinecraftServer minecraftserver, NetworkManager networkmanager, EntityPlayerMP entityplayermp) {
33 36 c = false;
34 37 f = 0;
35 38 j = true;
36 39 k = new HashMap();
37 40 d = minecraftserver;
38 41 b = networkmanager;
39 42 networkmanager.a(this);
40 43 e = entityplayermp;
41 44 entityplayermp.a = this;
42 - server = minecraftserver.server; // CraftBukkit
45 +
46 + // CraftBukkit - next 2 lines
47 + server = minecraftserver.server;
48 + player = new CraftPlayer(server, e);
49 + }
50 +
51 + // CraftBukkit start
52 + public CraftPlayer getPlayer() {
53 + return player;
43 54 }
55 + // CraftBukkit end
44 56
45 57 public void a() {
46 58 b.a();
47 59 if (f++ % 20 == 0) {
48 60 b.a(new Packet0KeepAlive());
49 61 }
50 62 }
51 63
52 64 public void a(String s) {
53 65 b.a(new Packet255KickDisconnect(s));
60 72 public void a(Packet10Flying packet10flying) {
61 73 if (!j) {
62 74 double d1 = packet10flying.b - h;
63 75
64 76 if (packet10flying.a == g && d1 * d1 < 0.01D && packet10flying.c == i) {
65 77 j = true;
66 78 }
67 79 }
68 80
69 81 // CraftBukkit start
70 - Player player = server.getPlayer(e);
71 82 Location from = new Location(player.getWorld(), g, h, i, e.v, e.w);
72 83 Location to = player.getLocation();
73 84 PlayerMoveEvent event = new PlayerMoveEvent(Type.PLAYER_MOVE, player, from, to);
74 85 server.getPluginManager().callEvent(event);
75 86
76 87 from = event.getFrom();
77 88 to = event.isCancelled() ? from : event.getTo();
78 89
79 90 e.p = to.getX();
80 91 e.q = to.getY();
187 198 e.A = packet10flying.g;
188 199 d.f.b(e);
189 200 e.b(e.q - d2, packet10flying.g);
190 201 }
191 202 }
192 203
193 204 public void a(double d1, double d2, double d3, float f1,
194 205 float f2) {
195 206
196 207 // CraftBukkit start
197 - Player player = server.getPlayer(e);
198 208 Location from = player.getLocation();
199 209 Location to = new Location(player.getWorld(), d1, d2, d3, f1, f2);
200 210 PlayerMoveEvent event = new PlayerMoveEvent(Type.PLAYER_TELEPORT, player, from, to);
201 211 server.getPluginManager().callEvent(event);
202 212
203 213 from = event.getFrom();
204 214 to = event.isCancelled() ? from : event.getTo();
205 215
206 216 d1 = to.getX();
207 217 d2 = to.getY();
371 381 if (FontAllowedCharacters.a.indexOf(s.charAt(l)) < 0) {
372 382 a("Illegal characters in chat");
373 383 return;
374 384 }
375 385 }
376 386
377 387 if (s.startsWith("/")) {
378 388 c(s);
379 389 } else {
380 390 // CraftBukkit start
381 - PlayerChatEvent event = new PlayerChatEvent(Type.PLAYER_CHAT, server.getPlayer(e), s);
391 + PlayerChatEvent event = new PlayerChatEvent(Type.PLAYER_CHAT, player, s);
382 392 server.getPluginManager().callEvent(event);
383 393 s = (new StringBuilder()).append("<").append(event.getPlayer().getName()).append("> ").append(event.getMessage()).toString();
384 394 // CraftBukkit stop
385 395
386 396 a.info(s);
387 397 d.f.a(new Packet3Chat(s));
388 398 }
389 399 }
390 400
391 401 private void c(String s) {
392 402 // CraftBukkit start
393 - PlayerChatEvent event = new PlayerChatEvent(Type.PLAYER_COMMAND, server.getPlayer(e), s);
403 + PlayerChatEvent event = new PlayerChatEvent(Type.PLAYER_COMMAND, player, s);
394 404 server.getPluginManager().callEvent(event);
395 405 if (event.isCancelled()) return;
396 406 s = event.getMessage();
397 407 CraftPlayer player = (CraftPlayer)event.getPlayer();
398 408 EntityPlayerMP e = player.getHandle();
399 409 // CraftBukkit stop
400 410
401 411 if (s.toLowerCase().startsWith("/me ")) {
402 412 s = (new StringBuilder()).append("* ").append(e.aw).append(" ").append(s.substring(s.indexOf(" ")).trim()).toString();
403 413 a.info(s);

Everything looks good. We'll let you know here if there's anything you should know about.

Add shortcut