Commits
SydMontague authored and md_5 committed aa3a2f27670
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 | |
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 - | |
661 + | |
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 - | |
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 + | |
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 - | |
730 + | |
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 - | |
747 + | |
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 | |