/// <summary>
        /// Displays an error message if a user does not have EqualMoneySplit installed properly
        /// </summary>
        /// <param name="newPlayerData"></param>
        /// <param name="newPlayerName"></param>
        private void CheckForValidModInstall(IMultiplayerPeer newPlayerData, string newPlayerName)
        {
            var    currentPlayerMod = EqualMoneyMod.SMAPI.ModRegistry.Get(Models.Constants.ModId);
            var    newPlayerModData = newPlayerData.GetMod(Models.Constants.ModId);
            string errorMessage     = "";

            if (!newPlayerData.HasSmapi)
            {
                errorMessage = $"Player {newPlayerName} does not have SMAPI installed! EqualMoneySplit will not function properly!";
            }
            else if (newPlayerData.Mods.Count() == 0)
            {
                errorMessage = $"Player {newPlayerName} does not have any mods installed! EqualMoneySplit will not function properly!";
            }
            else if (newPlayerModData == null)
            {
                errorMessage = $"Player {newPlayerName} does not have EqualMoneySplit installed! EqualMoneySplit will not function properly!";
            }
            else if (newPlayerModData.Version.IsOlderThan(currentPlayerMod.Manifest.Version))
            {
                errorMessage = $"Player {newPlayerName} has an older version ({newPlayerModData.Version.ToString()}) EqualMoneySplit than yours ({currentPlayerMod.Manifest.Version.ToString()})! EqualMoneySplit will not function properly!";
            }
            else if (newPlayerModData.Version.IsNewerThan(currentPlayerMod.Manifest.Version))
            {
                errorMessage = $"Player {newPlayerName} has a newer version ({newPlayerModData.Version.ToString()}) of EqualMoneySplit than yours ({currentPlayerMod.Manifest.Version.ToString()})! EqualMoneySplit will not function properly!";
            }

            if (!string.IsNullOrEmpty(errorMessage))
            {
                Game1.chatBox.addErrorMessage(errorMessage);
            }
        }
예제 #2
0
        private void MultiplayerEmotesAvailable(string command, string[] args)
        {
            if (!Context.IsMultiplayer)
            {
                this.Monitor.Log("You are not currently in a online session.", LogLevel.Info);
                return;
            }

            // Number of players excluding the host
            int numPlayers = Game1.getOnlineFarmers().Count - 1;

            if (numPlayers <= 0)
            {
                this.Monitor.Log("No players connected in the current session.", LogLevel.Info);
                return;
            }

            int           playersWithMod = 0;
            StringBuilder sb             = new StringBuilder();

            foreach (Farmer farmer in Game1.getOnlineFarmers())
            {
                // Check that is not the current player
                if (Game1.player.UniqueMultiplayerID != farmer.UniqueMultiplayerID)
                {
                    IMultiplayerPeer peer = this.Helper.Multiplayer.GetConnectedPlayer(farmer.UniqueMultiplayerID);

                    if (peer.HasSmapi && peer.GetMod(this.ModManifest.UniqueID) != null)
                    {
                        playersWithMod++;
                        sb.Append($"{playersWithMod}: \"{Game1.getFarmer(peer.PlayerID).Name}\"");
                    }
                }
            }

            if (playersWithMod > 0)
            {
                this.Monitor.Log($"From {numPlayers} player(s), {playersWithMod} have this mod:\n{sb}", LogLevel.Info);
            }
            else
            {
                this.Monitor.Log($"From {numPlayers} player(s), none has this mod.", LogLevel.Info);
            }
        }