diff --git a/EXILED/Exiled.CustomItems/API/Features/CustomItem.cs b/EXILED/Exiled.CustomItems/API/Features/CustomItem.cs index fa39569e0a..bfc884cea2 100644 --- a/EXILED/Exiled.CustomItems/API/Features/CustomItem.cs +++ b/EXILED/Exiled.CustomItems/API/Features/CustomItem.cs @@ -23,6 +23,7 @@ namespace Exiled.CustomItems.API.Features using Exiled.API.Features.Spawn; using Exiled.API.Interfaces; using Exiled.CustomItems.API.EventArgs; + using Exiled.Events.EventArgs.Map; using Exiled.Events.EventArgs.Player; using Exiled.Events.EventArgs.Scp914; using Exiled.Loader; @@ -779,16 +780,21 @@ internal bool TryUnregister() protected virtual void SubscribeEvents() { Exiled.Events.Handlers.Player.Dying += OnInternalOwnerDying; - Exiled.Events.Handlers.Player.DroppingItem += OnInternalDroppingItem; - Exiled.Events.Handlers.Player.DroppingAmmo += OnInternalDroppingAmmo; + Exiled.Events.Handlers.Player.ItemAdded += OnInternalItemAdded; Exiled.Events.Handlers.Player.ChangingItem += OnInternalChanging; Exiled.Events.Handlers.Player.Escaping += OnInternalOwnerEscaping; Exiled.Events.Handlers.Player.PickingUpItem += OnInternalPickingUp; - Exiled.Events.Handlers.Player.ItemAdded += OnInternalItemAdded; - Exiled.Events.Handlers.Scp914.UpgradingPickup += OnInternalUpgradingPickup; - Exiled.Events.Handlers.Server.WaitingForPlayers += OnWaitingForPlayers; + Exiled.Events.Handlers.Player.DroppingItem += OnInternalDroppingItem; + Exiled.Events.Handlers.Player.DroppingAmmo += OnInternalDroppingAmmo; Exiled.Events.Handlers.Player.Handcuffing += OnInternalOwnerHandcuffing; Exiled.Events.Handlers.Player.ChangingRole += OnInternalOwnerChangingRole; + + Exiled.Events.Handlers.Map.PickupAdded += OnInternalPickupSpawned; + Exiled.Events.Handlers.Map.PickupDestroyed += OnInternalPickupDestroyed; + + Exiled.Events.Handlers.Server.WaitingForPlayers += OnWaitingForPlayers; + + Exiled.Events.Handlers.Scp914.UpgradingPickup += OnInternalUpgradingPickup; Exiled.Events.Handlers.Scp914.UpgradingInventoryItem += OnInternalUpgradingInventoryItem; } @@ -798,16 +804,21 @@ protected virtual void SubscribeEvents() protected virtual void UnsubscribeEvents() { Exiled.Events.Handlers.Player.Dying -= OnInternalOwnerDying; - Exiled.Events.Handlers.Player.DroppingItem -= OnInternalDroppingItem; - Exiled.Events.Handlers.Player.DroppingAmmo -= OnInternalDroppingAmmo; + Exiled.Events.Handlers.Player.ItemAdded -= OnInternalItemAdded; Exiled.Events.Handlers.Player.ChangingItem -= OnInternalChanging; Exiled.Events.Handlers.Player.Escaping -= OnInternalOwnerEscaping; Exiled.Events.Handlers.Player.PickingUpItem -= OnInternalPickingUp; - Exiled.Events.Handlers.Player.ItemAdded -= OnInternalItemAdded; - Exiled.Events.Handlers.Scp914.UpgradingPickup -= OnInternalUpgradingPickup; - Exiled.Events.Handlers.Server.WaitingForPlayers -= OnWaitingForPlayers; + Exiled.Events.Handlers.Player.DroppingItem -= OnInternalDroppingItem; + Exiled.Events.Handlers.Player.DroppingAmmo -= OnInternalDroppingAmmo; Exiled.Events.Handlers.Player.Handcuffing -= OnInternalOwnerHandcuffing; Exiled.Events.Handlers.Player.ChangingRole -= OnInternalOwnerChangingRole; + + Exiled.Events.Handlers.Map.PickupAdded -= OnInternalPickupSpawned; + Exiled.Events.Handlers.Map.PickupDestroyed -= OnInternalPickupDestroyed; + + Exiled.Events.Handlers.Server.WaitingForPlayers -= OnWaitingForPlayers; + + Exiled.Events.Handlers.Scp914.UpgradingPickup -= OnInternalUpgradingPickup; Exiled.Events.Handlers.Scp914.UpgradingInventoryItem -= OnInternalUpgradingInventoryItem; } @@ -844,10 +855,18 @@ protected virtual void OnOwnerHandcuffing(OwnerHandcuffingEventArgs ev) } /// - /// Handles tracking items when they are dropped by a player. + /// Handles tracking custom items when their pickups are spawned in the scene. /// - /// . - protected virtual void OnDroppingItem(DroppingItemEventArgs ev) + /// . + protected virtual void OnPickupSpawned(PickupAddedEventArgs ev) + { + } + + /// + /// Handles untracking custom items when their pickups are destroyed in the scene. + /// + /// . + protected virtual void OnPickupDestroyed(PickupDestroyedEventArgs ev) { } @@ -855,8 +874,7 @@ protected virtual void OnDroppingItem(DroppingItemEventArgs ev) /// Handles tracking items when they are dropped by a player. /// /// . - [Obsolete("Use OnDroppingItem instead.", false)] - protected virtual void OnDropping(DroppingItemEventArgs ev) + protected virtual void OnDroppingItem(DroppingItemEventArgs ev) { } @@ -1025,17 +1043,28 @@ private void OnInternalOwnerHandcuffing(HandcuffingEventArgs ev) } } + private void OnInternalPickupSpawned(PickupAddedEventArgs ev) + { + if (!Check(ev.Pickup)) + return; + + OnPickupSpawned(ev); + } + + private void OnInternalPickupDestroyed(PickupDestroyedEventArgs ev) + { + if (!Check(ev.Pickup)) + return; + + OnPickupDestroyed(ev); + } + private void OnInternalDroppingItem(DroppingItemEventArgs ev) { if (!Check(ev.Item)) return; OnDroppingItem(ev); - - // TODO: Don't forget to remove this with next update -#pragma warning disable CS0618 - OnDropping(ev); -#pragma warning restore CS0618 } private void OnInternalDroppingAmmo(DroppingAmmoEventArgs ev) diff --git a/EXILED/Exiled.Events/Config.cs b/EXILED/Exiled.Events/Config.cs index fd244f699b..8416e5180e 100644 --- a/EXILED/Exiled.Events/Config.cs +++ b/EXILED/Exiled.Events/Config.cs @@ -68,19 +68,6 @@ public sealed class Config : IConfig [Description("Indicates whether the inventory should be dropped before being set as spectator, through commands or plugins")] public bool ShouldDropInventory { get; set; } = true; - /// - /// Gets or sets a value indicating whether the blood can be spawned. - /// - [Description("Indicates whether the blood can be spawned")] - public bool CanSpawnBlood { get; set; } = true; - - /// - /// Gets or sets a value indicating whether keycard throw can affect basic doors. - /// - /// TODO: Make a poll about removing this config. (unimplemented since 9.6.0-beta7) - [Description("Indicates whether thrown keycards can affect doors that don't require any permissions")] - public bool CanKeycardThrowAffectDoors { get; set; } = false; - /// /// Gets or sets a value indicating whether the SCP079 will recontained if there are no SCPs left. ///