Files
LegacyWeaveLoader/WeaveLoader.API/Item/PickaxeTierRegistry.cs
Jacobwasbeast d2be935ada feat(pickaxe): implement Hooked_PickaxeItemGetDestroySpeed and Hooked_PickaxeItemCanDestroySpecial
- Add hook implementations for custom pickaxe tier support
- Hooked_PickaxeItemGetDestroySpeed: use CustomPickaxeRegistry destroy speed for configured pickaxes when mining effective blocks
- Hooked_PickaxeItemCanDestroySpecial: use CustomPickaxeRegistry effective blocks and harvest level (obsidian requires level 3)
- Add TryReadItemIdFromPickaxe and TryReadTileId helpers for reading item/tile IDs from native pointers
2026-03-08 00:16:15 -06:00

60 lines
1.5 KiB
C#

namespace WeaveLoader.API.Item;
public sealed class PickaxeTierDefinition
{
private readonly ToolMaterialDefinition _inner = new();
internal ToolMaterialDefinition ToToolMaterialDefinition() => _inner;
public PickaxeTierDefinition BaseTier(ToolTier tier)
{
_inner.BaseTier(tier);
return this;
}
public PickaxeTierDefinition HarvestLevel(int harvestLevel)
{
if (harvestLevel < 0)
throw new ArgumentOutOfRangeException(nameof(harvestLevel));
_inner.HarvestLevel(harvestLevel);
return this;
}
public PickaxeTierDefinition DestroySpeed(float destroySpeed)
{
if (destroySpeed <= 0.0f)
throw new ArgumentOutOfRangeException(nameof(destroySpeed));
_inner.DestroySpeed(destroySpeed);
return this;
}
}
public sealed class RegisteredPickaxeTier
{
public Identifier StringId { get; }
internal RegisteredPickaxeTier(Identifier stringId)
{
StringId = stringId;
}
}
public static class PickaxeTierRegistry
{
public static RegisteredPickaxeTier Register(Identifier id, PickaxeTierDefinition definition)
{
ArgumentNullException.ThrowIfNull(definition);
ToolMaterialRegistry.Register(id, definition.ToToolMaterialDefinition());
return new RegisteredPickaxeTier(id);
}
internal static bool TryGetDefinition(Identifier id, out PickaxeTierDefinition? definition)
{
definition = null;
return false;
}
}