diff --git a/Torch.Server/Managers/MultiplayerManagerDedicated.cs b/Torch.Server/Managers/MultiplayerManagerDedicated.cs
index f336f36..8a380c5 100644
--- a/Torch.Server/Managers/MultiplayerManagerDedicated.cs
+++ b/Torch.Server/Managers/MultiplayerManagerDedicated.cs
@@ -210,9 +210,8 @@ namespace Torch.Server.Managers
private void ValidateAuthTicketResponse(ulong steamId, JoinResult response, ulong steamOwner)
{
var state = new MyP2PSessionState();
- //MySteamService.Static.Peer2Peer.GetSessionState(steamId, ref state);
- //var ip = new IPAddress(BitConverter.GetBytes(state.RemoteIP).Reverse().ToArray());
- string ip = "Can't acquire IP because Keen did a stupid";
+ MySteamServiceWrapper.Static.Peer2Peer.GetSessionState(steamId, ref state);
+ var ip = new IPAddress(BitConverter.GetBytes(state.RemoteIP).Reverse().ToArray());
Torch.CurrentSession.KeenSession.PromotedUsers.TryGetValue(steamId, out MyPromoteLevel promoteLevel);
diff --git a/Torch/Commands/TorchCommands.cs b/Torch/Commands/TorchCommands.cs
index 63c259d..52d52ed 100644
--- a/Torch/Commands/TorchCommands.cs
+++ b/Torch/Commands/TorchCommands.cs
@@ -37,14 +37,13 @@ namespace Torch.Commands
[Permission(MyPromoteLevel.None)]
public void GetIP(ulong steamId = 0)
{
- Context.Respond("Keen broke this command. Fix coming Soon(tm)");
- //if (steamId == 0)
- // steamId = Context.Player.SteamUserId;
-
- //VRage.GameServices.MyP2PSessionState statehack = new VRage.GameServices.MyP2PSessionState();
- //VRage.Steam.MySteamService.Static.Peer2Peer.GetSessionState(steamId, ref statehack);
- //var ip = new IPAddress(BitConverter.GetBytes(statehack.RemoteIP).Reverse().ToArray());
- //Context.Respond($"Your IP is {ip}");
+ if (steamId == 0)
+ steamId = Context.Player.SteamUserId;
+
+ VRage.GameServices.MyP2PSessionState statehack = new VRage.GameServices.MyP2PSessionState();
+ MySteamServiceWrapper.Static.Peer2Peer.GetSessionState(steamId, ref statehack);
+ var ip = new IPAddress(BitConverter.GetBytes(statehack.RemoteIP).Reverse().ToArray());
+ Context.Respond($"Your IP is {ip}");
}
[Command("help", "Displays help for a command")]
diff --git a/Torch/Managers/ChatManager/ChatManagerServer.cs b/Torch/Managers/ChatManager/ChatManagerServer.cs
index 452e9e0..253d928 100644
--- a/Torch/Managers/ChatManager/ChatManagerServer.cs
+++ b/Torch/Managers/ChatManager/ChatManagerServer.cs
@@ -22,7 +22,7 @@ using VRage.Network;
namespace Torch.Managers.ChatManager
{
- //[PatchShim]
+ [PatchShim]
internal static class ChatInterceptPatch
{
private static ChatManagerServer _chatManager;
@@ -30,7 +30,7 @@ namespace Torch.Managers.ChatManager
internal static void Patch(PatchContext context)
{
- var target = typeof(MyMultiplayerBase).GetMethod("OnChatMessageRecieved_Server", BindingFlags.Static | BindingFlags.NonPublic);
+ var target = typeof(MyMultiplayerBase).GetMethod("OnChatMessageReceived_Server", BindingFlags.Static | BindingFlags.NonPublic);
var patchMethod = typeof(ChatInterceptPatch).GetMethod(nameof(PrefixMessageProcessing), BindingFlags.Static | BindingFlags.NonPublic);
context.GetPattern(target).Prefixes.Add(patchMethod);
}
diff --git a/Torch/MySteamServiceWrapper.cs b/Torch/MySteamServiceWrapper.cs
new file mode 100644
index 0000000..c1ba92f
--- /dev/null
+++ b/Torch/MySteamServiceWrapper.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Reflection;
+using System.Windows.Data;
+using VRage.GameServices;
+
+namespace Torch
+{
+ ///
+ /// Provides static accessor for MySteamService because Keen made it internal
+ ///
+ public class MySteamServiceWrapper
+ {
+ private static readonly MethodInfo _getGameService;
+
+ public static IMyGameService Static => (IMyGameService)_getGameService.Invoke(null, null);
+
+ static MySteamServiceWrapper()
+ {
+ var type = Type.GetType("VRage.Steam.MySteamService, VRage.Steam");
+ var prop = type.GetProperty("Static", BindingFlags.Static | BindingFlags.Public);
+ _getGameService = prop.GetGetMethod();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Torch/Torch.csproj b/Torch/Torch.csproj
index 54ca7d7..c25afce 100644
--- a/Torch/Torch.csproj
+++ b/Torch/Torch.csproj
@@ -241,6 +241,7 @@
+
diff --git a/Torch/VRageGame.cs b/Torch/VRageGame.cs
index e5c06a3..7d45453 100644
--- a/Torch/VRageGame.cs
+++ b/Torch/VRageGame.cs
@@ -25,6 +25,7 @@ using SpaceEngineers.Game.GUI;
using Torch.Utils;
using VRage;
using VRage.Audio;
+using VRage.Dedicated;
using VRage.FileSystem;
using VRage.Game;
using VRage.Game.ObjectBuilder;
@@ -137,8 +138,11 @@ namespace Torch
bool dedicated = Sandbox.Engine.Platform.Game.IsDedicated;
Environment.SetEnvironmentVariable("SteamAppId", _appSteamId.ToString());
//KEEN WHY
- var service = Activator.CreateInstance(Type.GetType("VRage.Steam.MySteamService, VRage.Steam"), new object[] {dedicated, _appSteamId});
- MyServiceManager.Instance.AddService((IMyGameService)service);
+ Activator.CreateInstance(Type.GetType("VRage.Steam.MySteamService, VRage.Steam"), new object[] {dedicated, _appSteamId});
+ var service = MySteamServiceWrapper.Static;
+ MyServiceManager.Instance.AddService(service);
+ var serviceInstance = MySteamUgcService.Create(MyPerServerSettings.AppId, service);
+ MyServiceManager.Instance.AddService(serviceInstance);
if (dedicated && !MyGameService.HasGameServer)
{
_log.Warn("Steam service is not running! Please reinstall dedicated server.");