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.
///