You can no longer place unless you are in admin or sandbox.

This commit is contained in:
Pieter-Jan Briers
2020-02-08 20:45:02 +01:00
parent 6b93549ff6
commit eb7c80ba7a
5 changed files with 76 additions and 7 deletions

View File

@@ -1,6 +1,8 @@
using Content.Server.GameTicking;
using Content.Server.Interfaces.GameTicking;
using Content.Shared.Sandbox;
using Robust.Server.Console;
using Robust.Server.Interfaces.Placement;
using Robust.Server.Interfaces.Player;
using Robust.Server.Player;
using Robust.Shared.Enums;
@@ -15,6 +17,8 @@ namespace Content.Server.Sandbox
[Dependency] private readonly IPlayerManager _playerManager;
[Dependency] private readonly IServerNetManager _netManager;
[Dependency] private readonly IGameTicker _gameTicker;
[Dependency] private readonly IPlacementManager _placementManager;
[Dependency] private readonly IConGroupController _conGroupController;
#pragma warning restore 649
private bool _isSandboxEnabled;
@@ -36,6 +40,24 @@ namespace Content.Server.Sandbox
_playerManager.PlayerStatusChanged += OnPlayerStatusChanged;
_gameTicker.OnRunLevelChanged += GameTickerOnOnRunLevelChanged;
_placementManager.AllowPlacementFunc = placement =>
{
if (IsSandboxEnabled)
{
return true;
}
var channel = placement.MsgChannel;
var player = _playerManager.GetSessionByChannel(channel);
if (_conGroupController.CanAdminPlace(player))
{
return true;
}
return false;
};
}
private void GameTickerOnOnRunLevelChanged(GameRunLevelChangedEventArgs obj)