Skip to content

Commit 91a1fa5

Browse files
committed
CustomItem fixes
1 parent e517377 commit 91a1fa5

5 files changed

Lines changed: 379 additions & 87 deletions

File tree

LabExtended/API/Custom/Items/CustomItem.cs

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using LabExtended.API.Custom.Items.Enums;
1212
using LabExtended.API.Custom.Items.Events;
1313

14+
using LabExtended.Core;
1415
using LabExtended.Core.Configs.Objects;
1516

1617
using LabExtended.Events;
@@ -360,6 +361,8 @@ public bool Register()
360361
Registered?.Invoke(this);
361362

362363
OnRegistered();
364+
365+
ApiLog.Info("Custom Items", $"&2Registered&r custom item &3{Name}&r (&6{Id}&r)");
363366
return true;
364367
}
365368

@@ -376,6 +379,8 @@ public bool Unregister()
376379
Unregistered?.Invoke(this);
377380

378381
OnUnregistered();
382+
383+
ApiLog.Info("Custom Items", $"&1Unregistered&r custom item &3{Name}&r (&6{Id}&r)");
379384
return true;
380385
}
381386

@@ -1699,6 +1704,7 @@ internal static void Internal_Init()
16991704
{
17001705
// is this what adhd is??
17011706
PlayerEvents.PickingUpItem += Internal_PickingUpItem;
1707+
PlayerEvents.PickedUpItem += Internal_PickedUp;
17021708

17031709
PlayerEvents.TogglingFlashlight += Internal_TogglingFlashlight;
17041710
PlayerEvents.ToggledFlashlight += Internal_ToggledFlashlight;
@@ -1792,6 +1798,69 @@ private static void Internal_Collided(PickupCollidedEventArgs args)
17921798
}
17931799
}
17941800

1801+
private static void Internal_PickedUp(PlayerPickedUpItemEventArgs args)
1802+
{
1803+
if (args.Item?.Base == null)
1804+
return;
1805+
1806+
if (args.Player is not ExPlayer player)
1807+
return;
1808+
1809+
if (!Internal_GetCustomItem(args.Item.Serial, out var customItem, out var tracker))
1810+
return;
1811+
1812+
if (customItem.InventoryType == args.Item.Type)
1813+
{
1814+
var eventArgs = new CustomItemAddedEventArgs(player, customItem, CustomItemAddReason.PickedUp, args.Item.Base, tracker.Data, tracker.Pickup, tracker.Data);
1815+
1816+
customItem.OnItemAdded(eventArgs);
1817+
1818+
tracker.Data = eventArgs.AddedData;
1819+
1820+
tracker.Item = args.Item.Base;
1821+
tracker.Owner = player;
1822+
1823+
tracker.Pickup = null;
1824+
}
1825+
else
1826+
{
1827+
if (customItem.InventoryType is ItemType.None)
1828+
{
1829+
ApiLog.Warn("Custom Items", $"&3{customItem.Id}&r has not defined it's inventory type!");
1830+
return;
1831+
}
1832+
1833+
if (customItem.InventoryType.IsAmmo())
1834+
{
1835+
ApiLog.Warn("Custom Items", $"&3{customItem.Id}&r has defined it's inventory type as ammo, which is not supported!");
1836+
return;
1837+
}
1838+
1839+
var itemInstance = customItem.InventoryType.GetItemInstance<ItemBase>(args.Item.Serial);
1840+
1841+
if (itemInstance == null)
1842+
{
1843+
ApiLog.Warn("Custom Items", $"&3{customItem.Id}&r failed to create an item instance for item &3{args.Item.Serial}&r!");
1844+
return;
1845+
}
1846+
1847+
args.Item.Base.DestroyItem();
1848+
1849+
itemInstance.TransferItem(player.ReferenceHub);
1850+
1851+
var eventArgs = new CustomItemAddedEventArgs(player, customItem, CustomItemAddReason.PickedUp, itemInstance, tracker.Data, tracker.Pickup, tracker.Data);
1852+
1853+
customItem.OnItemAdded(eventArgs);
1854+
1855+
tracker.Data = eventArgs.AddedData;
1856+
1857+
tracker.Item = itemInstance;
1858+
tracker.Owner = player;
1859+
1860+
tracker.Pickup = null;
1861+
}
1862+
}
1863+
17951864
private static void Internal_TogglingFlashlight(PlayerTogglingFlashlightEventArgs args)
17961865
{
17971866
if (args.LightItem?.Base != null)

LabExtended/API/Custom/Items/ExampleCustomItem.cs

Lines changed: 0 additions & 84 deletions
This file was deleted.

0 commit comments

Comments
 (0)