diff --git a/Content.Server/Disposal/Tube/DisposalTubeSystem.cs b/Content.Server/Disposal/Tube/DisposalTubeSystem.cs index 24653ce8d4..7e63bc4e23 100644 --- a/Content.Server/Disposal/Tube/DisposalTubeSystem.cs +++ b/Content.Server/Disposal/Tube/DisposalTubeSystem.cs @@ -428,7 +428,7 @@ namespace Content.Server.Disposal.Tube foreach (var entity in from.Container.ContainedEntities.ToArray()) { - _disposableSystem.TryInsert(holder, entity, holderComponent); + _containerSystem.Insert(entity, holderComponent.Container); } _atmosSystem.Merge(holderComponent.Air, from.Air); diff --git a/Content.Server/Disposal/Unit/DisposableSystem.cs b/Content.Server/Disposal/Unit/DisposableSystem.cs index 091a91c14e..d307488110 100644 --- a/Content.Server/Disposal/Unit/DisposableSystem.cs +++ b/Content.Server/Disposal/Unit/DisposableSystem.cs @@ -43,6 +43,8 @@ namespace Content.Server.Disposal.Unit _xformQuery = GetEntityQuery(); SubscribeLocalEvent(OnComponentStartup); + SubscribeLocalEvent(CanInsert); + SubscribeLocalEvent(OnInsert); } private void OnComponentStartup(EntityUid uid, DisposalHolderComponent holder, ComponentStartup args) @@ -50,34 +52,16 @@ namespace Content.Server.Disposal.Unit holder.Container = _containerSystem.EnsureContainer(uid, nameof(DisposalHolderComponent)); } - public bool TryInsert(EntityUid uid, EntityUid toInsert, DisposalHolderComponent? holder = null) + private void CanInsert(Entity ent, ref ContainerIsInsertingAttemptEvent args) { - if (!Resolve(uid, ref holder)) - return false; - if (!CanInsert(uid, toInsert, holder)) - return false; - - if (!_containerSystem.Insert(toInsert, holder.Container)) - return false; - - if (_physicsQuery.TryGetComponent(toInsert, out var physBody)) - _physicsSystem.SetCanCollide(toInsert, false, body: physBody); - - return true; + if (!HasComp(args.EntityUid) && !HasComp(args.EntityUid)) + args.Cancel(); } - private bool CanInsert(EntityUid uid, EntityUid toInsert, DisposalHolderComponent? holder = null) + private void OnInsert(Entity ent, ref EntInsertedIntoContainerMessage args) { - if (!Resolve(uid, ref holder)) - return false; - - if (!_containerSystem.CanInsert(toInsert, holder.Container)) - { - return false; - } - - return HasComp(toInsert) || - HasComp(toInsert); + if (_physicsQuery.TryGetComponent(args.Entity, out var physBody)) + _physicsSystem.SetCanCollide(args.Entity, false, body: physBody); } public void ExitDisposals(EntityUid uid, DisposalHolderComponent? holder = null, TransformComponent? holderTransform = null)