コード例 #1
0
        private Task OnPlayerJoin(PlayerJoinEventArgs e)
        {
            e.Server.Broadcast($"Player join event from sample plugin! {e.Joined.Username}");
            e.Logger.LogMessage($"Player join event to logger from sample plugin! {e.Joined.Username}");

            return Task.CompletedTask;
        }
コード例 #2
0
ファイル: SamplePlugin.cs プロジェクト: oliver4888/Obsidian
        public async Task OnPlayerJoin(PlayerJoinEventArgs playerJoinEvent)
        {
            var player = playerJoinEvent.Player;
            var server = playerJoinEvent.Server;

            await player.SendMessageAsync(IChatMessage.Simple($"Welcome {player.Username}!", ChatColor.Gold));
        }
コード例 #3
0
        /*public async Task OnIncomingChatMessage(IncomingChatMessageEventArgs e)
         * {
         *  var player = e.Player;
         *  var message = e.Message;
         *  await e.Server.BroadcastAsync($"<{player.Username}> {message}");
         *  e.Handled = true;
         * }*/

        public async Task OnPlayerJoin(PlayerJoinEventArgs e)
        {
            var player = e.Player;
            var server = e.Server;

            await player.SendMessageAsync(
                Globals.Configs.Motd.ReplaceKeywords(player));
        }
コード例 #4
0
        internal void InvokePlayerJoinEvent(Player player, ref string nickname)
        {
            var ev = new PlayerJoinEventArgs {
                Player = player, Nickname = nickname
            };

            PlayerJoinEvent?.Invoke(ev);
            nickname = ev.Nickname;
        }
コード例 #5
0
    public void OnPlayerJoinGame(PlayerJoinEventArgs playerJoinEvent)
    {
        IPlayer player = playerJoinEvent.Player;

        using var packet = new PlayerInfoPacket(PlayerInfoActionType.Add, player);

        IEnumerable <IMinecraftUser> players = _server.ConnectedPlayers.Where(x => x.Player.Id != player.Id);

        _server.SendTo(players, packet);
    }
コード例 #6
0
ファイル: Server.Events.cs プロジェクト: ObsidianMC/Obsidian
    private async Task OnPlayerJoin(PlayerJoinEventArgs e)
    {
        var joined = e.Player as Player;

        joined.World.TryAddPlayer(joined);

        BroadcastMessage(string.Format(Config.JoinMessage, e.Player.Username));
        foreach (Player other in Players)
        {
            await other.client.AddPlayerToListAsync(joined);
        }
    }
コード例 #7
0
ファイル: Server.cs プロジェクト: Czompi/Obsidian
        private async Task OnPlayerJoin(PlayerJoinEventArgs e)
        {
            var joined = e.Player as Player;

            this.World.AddPlayer(joined);//TODO Gotta make sure we add the player to whatever world they were last in so this has to change

            await this.BroadcastAsync(string.Format(this.Config.JoinMessage, e.Player.Username));

            foreach (var(_, other) in this.OnlinePlayers)
            {
                await other.client.AddPlayerToListAsync(joined);
            }
        }
コード例 #8
0
ファイル: Server.cs プロジェクト: ndelta0/Obsidian
        private async Task OnPlayerJoin(PlayerJoinEventArgs e)
        {
            var joined = e.Player;

            await this.BroadcastAsync(string.Format(this.Config.JoinMessage, e.Player.Username));

            foreach (var(_, other) in this.OnlinePlayers)
            {
                await other.client.AddPlayerToListAsync(joined);
            }

            // Need a delay here, otherwise players start flying
            await Task.Delay(500);

            await this.SendSpawnPlayerAsync(joined);
        }
コード例 #9
0
        public async Task OnPlayerJoin(PlayerJoinEventArgs e)
        {
            if (!(_config.Enabled && _config.JoinLeaveMessages.Enabled))
            {
                return;
            }

            _ = Task.Run(async() =>
            {
                if (_config.ChatSync.Enabled)
                {
                    string message = string.Format(_config.JoinLeaveMessages.JoinMessageTemplate, e.Player.Username);
                    await(await _client.GetChannelAsync(_config.JoinLeaveMessages.ChannelId)).SendMessageAsync(message);
                }
            });
            await Task.CompletedTask;
        }
コード例 #10
0
 internal Task InvokePlayerJoinAsync(PlayerJoinEventArgs eventArgs) =>
 this.playerJoin.InvokeAsync(eventArgs);
コード例 #11
0
 public static void OnPlayerJoin(PlayerJoinEventArgs args)
 {
     PlayerJoin?.Invoke(args);
 }
コード例 #12
0
        public async Task OnPlayerJoin(PlayerJoinEventArgs playerJoinEvent)
        {
            var player = playerJoinEvent.Player;

            await player.SendMessageAsync(message : ChatMessage.Simple(text: $"Welcome {player.Username}!", color: ChatColor.Gold));
        }
コード例 #13
0
 internal async Task InvokePlayerJoin(PlayerJoinEventArgs eventArgs)
 {
     await Task.Factory.StartNew(async() => { await this._playerJoin.InvokeAsync(eventArgs); });
 }
コード例 #14
0
        private async Task OnPlayerJoin(PlayerJoinEventArgs e)
        {
            await e.Server.BroadcastAsync($"Player join event from sample plugin! {e.Player.Username}");

            this.Logger.LogInformation($"Player join event to logger from sample plugin! {e.Player.Username}");
        }
コード例 #15
0
 private void OnPlayerJoinEvent(PlayerJoinEventArgs ev)
 => Timing.CallDelayed(0.75f, () => MakeAndSendData(ev));
コード例 #16
0
 internal ValueTask InvokePlayerJoinAsync(PlayerJoinEventArgs eventArgs) =>
 PlayerJoin.InvokeAsync(eventArgs);
コード例 #17
0
        private void ResourcePackClientResponsePacketHandle(ResourcePackClientResponsePacket pk)
        {
            if (this.PackSyncCompleted)
            {
                return;
            }
            else if (pk.ResponseStatus == ResourcePackClientResponsePacket.STATUS_REFUSED)
            {
                this.Close("disconnectionScreen.resourcePackn");
            }
            else if (pk.ResponseStatus == ResourcePackClientResponsePacket.STATUS_SEND_PACKS)
            {
                //TODO: ResourcePackDataInfoPacket
            }
            else if (pk.ResponseStatus == ResourcePackClientResponsePacket.STATUS_HAVE_ALL_PACKS)
            {
                ResourcePackStackPacket resourcePackStackPacket = new ResourcePackStackPacket();
                this.SendPacket(resourcePackStackPacket);

                this.HaveAllPacks = true;
            }
            else if (pk.ResponseStatus == ResourcePackClientResponsePacket.STATUS_COMPLETED && this.HaveAllPacks)
            {
                this.PackSyncCompleted = true;

                if (this.IsLogined)
                {
                    return;
                }
                PlayerLoginEventArgs playerLoginEvent = new PlayerLoginEventArgs(this, "");
                PlayerEvents.OnPlayerLogin(playerLoginEvent);
                if (playerLoginEvent.IsCancel)
                {
                    this.Close(playerLoginEvent.KickMessage);
                    return;
                }

                this.IsLogined = true;

                //if (World.Exists(worldName))
                //{
                //    this.World = World.GetWorld(worldName);
                //}
                //else
                //{
                this.World = World.GetMainWorld();
                //}

                this.LoadData();

                if (this.X == 0 && this.Y == 0 && this.Z == 0)
                {
                    this.X = this.World.SpawnPoint.FloorX;
                    this.Y = this.World.SpawnPoint.FloorY;
                    this.Z = this.World.SpawnPoint.FloorZ;
                }

                StartGamePacket startGamePacket = new StartGamePacket();
                startGamePacket.EntityUniqueId  = this.EntityID;
                startGamePacket.EntityRuntimeId = this.EntityID;
                startGamePacket.PlayerGamemode  = this.GameMode;
                startGamePacket.PlayerPosition  = new Vector3(this.X, this.Y, this.Z);
                startGamePacket.Direction       = new Vector2(this.Yaw, this.Pitch);
                startGamePacket.WorldGamemode   = this.World.DefaultGameMode.GameModeToInt();
                startGamePacket.Difficulty      = this.World.Difficulty;
                startGamePacket.SpawnX          = this.World.SpawnPoint.FloorX;
                startGamePacket.SpawnY          = this.World.SpawnPoint.FloorY;
                startGamePacket.SpawnZ          = this.World.SpawnPoint.FloorZ;
                startGamePacket.WorldName       = this.World.Name;
                this.SendPacket(startGamePacket);

                this.SendPlayerAttribute();

                AvailableCommandsPacket availableCommandsPacket = new AvailableCommandsPacket();
                availableCommandsPacket.commands = Server.Instance.CommandManager.CommandList;
                this.SendPacket(availableCommandsPacket);

                this.Inventory.SendContents();
                this.Inventory.ArmorInventory.SendContents();
                this.Inventory.SendCreativeItems();
                this.Inventory.SendMainHand(this);

                PlayerJoinEventArgs playerJoinEvent = new PlayerJoinEventArgs(this, $"§e{this.Name} が世界にやってきました", "");
                PlayerEvents.OnPlayerJoin(playerJoinEvent);
                if (playerJoinEvent.IsCancel)
                {
                    this.Close(playerJoinEvent.KickMessage);
                    return;
                }
                if (!string.IsNullOrEmpty(playerJoinEvent.JoinMessage))
                {
                    Server.Instance.BroadcastMessage(playerJoinEvent.JoinMessage);
                }
                Logger.Info($"§e{this.Name} join the game");

                this.SendPlayStatus(PlayStatusPacket.PLAYER_SPAWN);

                this.HasSpawned = true;

                GameRules rules = new GameRules();
                rules.Add(new GameRule <bool>("ShowCoordinates", true));

                GameRulesChangedPacket gameRulesChangedPacket = new GameRulesChangedPacket();
                gameRulesChangedPacket.GameRules = rules;
                this.SendPacket(gameRulesChangedPacket);

                this.PlayerListEntry = new PlayerListEntry(this.LoginData.ClientUUID, this.EntityID, this.Name, this.ClientData.DeviceOS, this.ClientData.Skin, this.LoginData.XUID);

                AdventureSettingsEntry adventureSettingsEntry = new AdventureSettingsEntry();
                adventureSettingsEntry.SetFlag(AdventureSettingsPacket.WORLD_IMMUTABLE, false);
                adventureSettingsEntry.SetFlag(AdventureSettingsPacket.NO_PVP, false);
                adventureSettingsEntry.SetFlag(AdventureSettingsPacket.AUTO_JUMP, false);
                adventureSettingsEntry.SetFlag(AdventureSettingsPacket.ALLOW_FLIGHT, true);
                adventureSettingsEntry.SetFlag(AdventureSettingsPacket.NO_CLIP, false);
                adventureSettingsEntry.SetFlag(AdventureSettingsPacket.FLYING, false);
                adventureSettingsEntry.CommandPermission = this.Op ? PlayerPermissions.OPERATOR : PlayerPermissions.MEMBER;
                adventureSettingsEntry.PlayerPermission  = this.Op ? PlayerPermissions.OPERATOR : PlayerPermissions.MEMBER;
                adventureSettingsEntry.EntityUniqueId    = this.EntityID;
                this.AdventureSettingsEntry = adventureSettingsEntry;

                this.SendSkin(this.Skin);

                Server.Instance.AddPlayer(this);

                this.World.AddPlayer(this);
                this.SendDataProperties();

                Server.Instance.CraftingManager.SendPacket(this);
            }
        }