Commits

SydMontague authored and md_5 committed aa3a2f27670
#645: Allow statistics to be accessed for offline players
No tags

nms-patches/PlayerList.patch

Modified
372 372
373 373 - return chatmessage;
374 374 + // return chatmessage;
375 375 + event.disallow(PlayerLoginEvent.Result.KICK_BANNED, CraftChatMessage.fromComponent(chatmessage));
376 376 } else {
377 377 - return this.players.size() >= this.maxPlayers && !this.f(gameprofile) ? new ChatMessage("multiplayer.disconnect.server_full", new Object[0]) : null;
378 378 + // return this.players.size() >= this.maxPlayers && !this.f(gameprofile) ? new ChatMessage("multiplayer.disconnect.server_full", new Object[0]) : null;
379 379 + if (this.players.size() >= this.maxPlayers && !this.f(gameprofile)) {
380 380 + event.disallow(PlayerLoginEvent.Result.KICK_FULL, "The server is full");
381 381 + }
382 - }
382 ++ }
383 383 +
384 384 + cserver.getPluginManager().callEvent(event);
385 385 + if (event.getResult() != PlayerLoginEvent.Result.ALLOWED) {
386 386 + loginlistener.disconnect(event.getKickMessage());
387 387 + return null;
388 -+ }
388 + }
389 389 + return entity;
390 390 }
391 391
392 392 - public EntityPlayer processLogin(GameProfile gameprofile) {
393 393 + public EntityPlayer processLogin(GameProfile gameprofile, EntityPlayer player) { // CraftBukkit - added EntityPlayer
394 394 + /* CraftBukkit startMoved up
395 395 UUID uuid = EntityHuman.a(gameprofile);
396 396 List<EntityPlayer> list = Lists.newArrayList();
397 397
398 398 @@ -372,14 +536,24 @@
459 459 - entityplayer1.playerConnection.sendPacket(new PacketPlayOutGameStateChange(0, 0.0F));
460 460 + if (optional.isPresent()) {
461 461 + Vec3D vec3d = (Vec3D) optional.get();
462 462 +
463 463 + isBedSpawn = true;
464 464 + location = new Location(cworld, vec3d.x, vec3d.y, vec3d.z);
465 465 + } else {
466 466 + entityplayer1.setRespawnPosition(null, true, false);
467 467 + entityplayer1.playerConnection.sendPacket(new PacketPlayOutGameStateChange(0, 0.0F));
468 468 + }
469 - }
469 ++ }
470 470 +
471 471 + if (location == null) {
472 472 + cworld = (CraftWorld) this.server.server.getWorlds().get(0);
473 473 + blockposition = entityplayer1.getSpawnPoint(cworld.getHandle());
474 474 + location = new Location(cworld, (double) ((float) blockposition.getX() + 0.5F), (double) ((float) blockposition.getY() + 0.1F), (double) ((float) blockposition.getZ() + 0.5F));
475 -+ }
475 + }
476 476 +
477 477 + Player respawnPlayer = cserver.getPlayer(entityplayer1);
478 478 + PlayerRespawnEvent respawnEvent = new PlayerRespawnEvent(respawnPlayer, location, isBedSpawn);
479 479 + cserver.getPluginManager().callEvent(respawnEvent);
480 480 +
481 481 + location = respawnEvent.getRespawnLocation();
482 482 + if (!flag) entityplayer.reset(); // SPIGOT-4785
483 483 + } else {
484 484 + location.setWorld(server.getWorldServer(dimensionmanager).getWorld());
485 485 }
651 651 + // entityplayer.triggerHealthUpdate();
652 652 + entityplayer.getBukkitEntity().updateScaledHealth(); // CraftBukkit - Update scaled health on respawn and worldchange
653 653 entityplayer.playerConnection.sendPacket(new PacketPlayOutHeldItemSlot(entityplayer.inventory.itemInHandIndex));
654 654 + // CraftBukkit start - from GameRules
655 655 + int i = entityplayer.world.getGameRules().getBoolean(GameRules.REDUCED_DEBUG_INFO) ? 22 : 23;
656 656 + entityplayer.playerConnection.sendPacket(new PacketPlayOutEntityStatus(entityplayer, (byte) i));
657 657 + // CraftBukkit end
658 658 }
659 659
660 660 public int getPlayerCount() {
661 -@@ -710,26 +993,39 @@
661 +@@ -710,33 +993,52 @@
662 662 }
663 663
664 664 public void shutdown() {
665 665 - for (int i = 0; i < this.players.size(); ++i) {
666 666 - ((EntityPlayer) this.players.get(i)).playerConnection.disconnect(new ChatMessage("multiplayer.disconnect.server_shutdown", new Object[0]));
667 667 + // CraftBukkit start - disconnect safely
668 668 + for (EntityPlayer player : this.players) {
669 669 + player.playerConnection.disconnect(this.server.server.getShutdownMessage()); // CraftBukkit - add custom shutdown message
670 670 }
671 671 + // CraftBukkit end
688 688 + // CraftBukkit start - we run this through our processor first so we can get web links etc
689 689 + this.sendAll(new PacketPlayOutChat(CraftChatMessage.fixComponent(ichatbasecomponent), chatmessagetype));
690 690 + // CraftBukkit end
691 691 }
692 692
693 693 public void sendMessage(IChatBaseComponent ichatbasecomponent) {
694 694 this.sendMessage(ichatbasecomponent, true);
695 695 }
696 696
697 697 - public ServerStatisticManager getStatisticManager(EntityHuman entityhuman) {
698 -+ public ServerStatisticManager getStatisticManager(EntityPlayer entityhuman) {
699 - UUID uuid = entityhuman.getUniqueID();
698 +- UUID uuid = entityhuman.getUniqueID();
700 699 - ServerStatisticManager serverstatisticmanager = uuid == null ? null : (ServerStatisticManager) this.o.get(uuid);
701 -+ ServerStatisticManager serverstatisticmanager = uuid == null ? null : (ServerStatisticManager) entityhuman.getStatisticManager();
700 ++ // CraftBukkit start
701 ++ public ServerStatisticManager getStatisticManager(EntityPlayer entityhuman) {
702 ++ ServerStatisticManager serverstatisticmanager = entityhuman.getStatisticManager();
703 ++ return serverstatisticmanager == null ? getStatisticManager(entityhuman.getUniqueID(), entityhuman.getDisplayName().getString()) : serverstatisticmanager;
704 ++ }
705 ++
706 ++ public ServerStatisticManager getStatisticManager(UUID uuid, String displayName) {
707 ++ EntityPlayer entityHuman = this.a(uuid);
708 ++ ServerStatisticManager serverstatisticmanager = entityHuman == null ? null : (ServerStatisticManager) entityHuman.getStatisticManager();
702 709 + // CraftBukkit end
703 710
704 711 if (serverstatisticmanager == null) {
705 712 File file = new File(this.server.getWorldServer(DimensionManager.OVERWORLD).getDataManager().getDirectory(), "stats");
706 -@@ -744,7 +1040,7 @@
713 + File file1 = new File(file, uuid + ".json");
714 +
715 + if (!file1.exists()) {
716 +- File file2 = new File(file, entityhuman.getDisplayName().getString() + ".json");
717 ++ File file2 = new File(file, displayName + ".json"); // CraftBukkit
718 +
719 + if (file2.exists() && file2.isFile()) {
720 + file2.renameTo(file1);
721 +@@ -744,7 +1046,7 @@
707 722 }
708 723
709 724 serverstatisticmanager = new ServerStatisticManager(this.server, file1);
710 725 - this.o.put(uuid, serverstatisticmanager);
711 726 + // this.o.put(uuid, serverstatisticmanager); // CraftBukkit
712 727 }
713 728
714 729 return serverstatisticmanager;
715 -@@ -752,14 +1048,14 @@
730 +@@ -752,14 +1054,14 @@
716 731
717 732 public AdvancementDataPlayer f(EntityPlayer entityplayer) {
718 733 UUID uuid = entityplayer.getUniqueID();
719 734 - AdvancementDataPlayer advancementdataplayer = (AdvancementDataPlayer) this.p.get(uuid);
720 735 + AdvancementDataPlayer advancementdataplayer = (AdvancementDataPlayer) entityplayer.getAdvancementData(); // CraftBukkit
721 736
722 737 if (advancementdataplayer == null) {
723 738 File file = new File(this.server.getWorldServer(DimensionManager.OVERWORLD).getDataManager().getDirectory(), "advancements");
724 739 File file1 = new File(file, uuid + ".json");
725 740
726 741 advancementdataplayer = new AdvancementDataPlayer(this.server, file1, entityplayer);
727 742 - this.p.put(uuid, advancementdataplayer);
728 743 + // this.p.put(uuid, advancementdataplayer); // CraftBukkit
729 744 }
730 745
731 746 advancementdataplayer.a(entityplayer);
732 -@@ -795,13 +1091,20 @@
747 +@@ -795,13 +1097,20 @@
733 748 }
734 749
735 750 public void reload() {
736 751 - Iterator iterator = this.p.values().iterator();
737 752 + // CraftBukkit start
738 753 + /*Iterator iterator = this.p.values().iterator();
739 754
740 755 while (iterator.hasNext()) {
741 756 AdvancementDataPlayer advancementdataplayer = (AdvancementDataPlayer) iterator.next();
742 757

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

Add shortcut