public void textBoxEnter(TextBox sender) { if (sender.Text.Length >= this.minLength) { if (this.textBox.Selected == true) { this.textBox.Selected = false; } else { this.obelisk.CustomName = this.textBox.Text; if (Context.IsMainPlayer) { ModEntry.UpdateObeliskCustomName(this.obelisk); } else { // Notify the MasterPlayer of name change var updateMessage = new ObeliskUpdateMessage(this.obelisk); ModEntry.helper.Multiplayer.SendMessage(updateMessage, nameof(ObeliskUpdateMessage), modIDs: new[] { ModEntry.manifest.UniqueID }); } this.exitThisMenu(); // Paginate the obelisks to order them with the new name this.parentMenu.PaginateObelisks(); Game1.activeClickableMenu = this.parentMenu; } } }
private void OnModMessageReceived(object sender, ModMessageReceivedEventArgs e) { if (e.FromModID != this.ModManifest.UniqueID) { return; } if (Context.IsMainPlayer) { if (e.Type == nameof(ObeliskUpdateMessage)) { ObeliskUpdateMessage message = e.ReadAs <ObeliskUpdateMessage>(); Monitor.Log($"Received rename message: {message.Obelisk.CustomName} at {message.Obelisk.LocationName} [{message.Obelisk.Tile.X}, {message.Obelisk.Tile.Y}]", LogLevel.Trace); UpdateObeliskCustomName(message.Obelisk); } else if (e.Type == nameof(ObeliskTeleportRequestMessage)) { ObeliskTeleportRequestMessage message = e.ReadAs <ObeliskTeleportRequestMessage>(); Monitor.Log($"Received teleport request message from {message.FarmerId} with destination: {message.Obelisk.CustomName} at {message.Obelisk.LocationName} [{message.Obelisk.Tile.X}, {message.Obelisk.Tile.Y}]", LogLevel.Trace); ValidateTeleportDestination(message.Obelisk, message.FarmerId); } } else { if (e.Type == nameof(ObeliskTeleportStatusMessage)) { ObeliskTeleportStatusMessage message = e.ReadAs <ObeliskTeleportStatusMessage>(); if (message.FarmerId != Game1.player.UniqueMultiplayerID) { return; } Monitor.Log($"Teleport request result: {message.DoTeleport}", LogLevel.Trace); if (message.DoTeleport) { TeleportPlayerToDestination(message.DestinationName, message.DestinationTile); return; } Game1.showRedMessage(Game1.content.LoadString("Strings\\StringsFromCSFiles:MiniObelisk_NeedsSpace")); } } }