private static bool MergeCheck(MyShipMergeBlock __instance) { if (!BlockLimiterConfig.Instance.EnableLimits) { return(true); } var mergeBlock = __instance; if (mergeBlock?.Other == null) { return(true); } if (mergeBlock.IsLocked || !mergeBlock.IsFunctional || !mergeBlock.Other.IsFunctional) { return(true); } if (BlockLimiterConfig.Instance.MergerBlocking) { if (!Grid.CanMerge(mergeBlock.CubeGrid, mergeBlock.Other.CubeGrid)) { mergeBlock.Enabled = false; return(false); } } return(true); }
private static void AddBlocks(MyShipMergeBlock __instance) { var id = __instance.CubeGrid.EntityId; Task.Run((() => { Thread.Sleep(10000); if (!GridCache.TryGetGridById(id, out var grid)) { return; } UpdateLimits.GridLimit(grid); })); }
private static bool MergeCheck(MyShipMergeBlock __instance) { if (!BlockLimiterConfig.Instance.EnableLimits || !BlockLimiterConfig.Instance.MergerBlocking) { return(true); } var mergeBlock = __instance; if (mergeBlock?.Other == null || MergeBlockCache.Contains(mergeBlock.CubeGrid.EntityId) || MergeBlockCache.Contains(mergeBlock.Other.CubeGrid.EntityId) || !mergeBlock.Enabled || !mergeBlock.Other.Enabled || mergeBlock.IsLocked || !mergeBlock.IsFunctional || !mergeBlock.Other.IsFunctional || mergeBlock.CubeGrid == mergeBlock.Other.CubeGrid) { return(true); } if (Grid.CanMerge(mergeBlock.CubeGrid, mergeBlock.Other.CubeGrid, out var blocks, out var count, out var limitName)) { if (!MergeBlockCache.Contains(mergeBlock.CubeGrid.EntityId)) { MergeBlockCache.Add(mergeBlock.CubeGrid.EntityId); } return(true); } mergeBlock.Enabled = false; if (DateTime.Now - _lastLogTime < TimeSpan.FromSeconds(1)) { return(false); } _lastLogTime = DateTime.Now; var msg = Utilities.GetMessage(BlockLimiterConfig.Instance.DenyMessage, blocks, limitName, count); var remoteUserId = MySession.Static.Players.TryGetSteamId(mergeBlock.OwnerId); if (remoteUserId != 0 && MySession.Static.Players.IsPlayerOnline(mergeBlock.OwnerId)) { BlockLimiter.Instance.Torch.CurrentSession.Managers.GetManager <ChatManagerServer>()? .SendMessageAsOther(BlockLimiterConfig.Instance.ServerName, msg, Color.Red, remoteUserId); } Utilities.SendFailSound(remoteUserId); Log.Info($"Blocked merger between {mergeBlock.CubeGrid?.DisplayName} and {mergeBlock.Other?.CubeGrid?.DisplayName}"); return(false); }
public MyDebugRenderComponentShipMergeBlock(MyShipMergeBlock shipConnector) : base(shipConnector) { m_shipMergeBlock = shipConnector; }