# Events & Callbacks

### Client → Server

```lua
-- Place beehive box where player is standing (server checks item and limit: spawns prop)
TriggerServerEvent('beekeeping:createHive', x, y, z, heading)

-- Beehive Status → server to client 'beekeeping:showStatus'
TriggerServerEvent('beekeeping:getStatus', hiveId)

-- Add queen ('bee' or 'bumblebee') – uses appropriate queen item
TriggerServerEvent('beekeeping:insertQueen', hiveId, 'bee' | 'bumbar')

-- Add workers ('bee' or 'bumblebee') – spends worker items, respects limit
TriggerServerEvent('beekeeping:addWorkers', hiveId, 'bee' | 'bumbar')

-- Maintain the hive (the server itself consumes items and captures gain/limit 0–100)
TriggerServerEvent('beekeeping:feedHive',  hiveId)
TriggerServerEvent('beekeeping:waterHive', hiveId)
TriggerServerEvent('beekeeping:cleanHive', hiveId)
TriggerServerEvent('beekeeping:healHive',  hiveId)

-- Collection (standard / special) – requires empty jars
TriggerServerEvent('beekeeping:collectHoney',        hiveId)   -- converts product -> honey_jar/propolis_jar
TriggerServerEvent('beekeeping:collectDarkHoney',    hiveId)   -- dark_honey / royal_jelly
TriggerServerEvent('beekeeping:collectGoldenHoney',  hiveId)   -- golden_honey / bee_venom
```

### Server → Client

```lua
-- Spawn prop hive + ox_target interactions
RegisterNetEvent('beekeeping:spawnHiveProp', function(hiveData) ... end)

-- Bulk loading of hives (on playerLoaded)
RegisterNetEvent('beekeeping:loadHives', function(hives) ... end)

-- Status payload for NUI/panel
RegisterNetEvent('beekeeping:showStatus', function(hive) ... end)

-- Collection animations (client at the end of the trigger finishCollect*)
RegisterNetEvent('beekeeping:playCollectAnim', function(hiveId) ... end)
RegisterNetEvent('beekeeping:playCollectAnimSpecial', function(hiveId, 'golden'|'dark') ... end)

-- Type change (e.g. after inserting a queen): specific channel by ID
RegisterNetEvent(('beekeeping:updateHiveType:%s'):format(hiveId), function(newType) ... end)

-- Admin NUI
RegisterNetEvent('beekeeping:openHiveManager', function(hives) ... end)
RegisterNetEvent('beekeeping:deleteHive', function(hiveId) ... end)
RegisterNetEvent('beekeeping:moveHive', function(data) ... end)
```

### Admin

```lua
TriggerServerEvent('beekeeping:adminDeleteHive', hiveId)
TriggerServerEvent('beekeeping:adminTeleportHiveToMe', hiveId)
TriggerServerEvent('beekeeping:adminSetMaxBees', hiveId) -- instant fill on Config.MaxBeesPerHive
```

### Examples

{% stepper %}
{% step %}

### Add a beehive from another resource

```lua
local ped = PlayerPedId()
local pos = GetOffsetFromEntityInWorldCoords(ped, 0.0, 0.5, 0.0)
TriggerServerEvent('beekeeping:createHive', pos.x, pos.y, pos.z, GetEntityHeading(ped))
```

{% endstep %}

{% step %}

### Insert the bumblebee queen

```lua
TriggerServerEvent('beekeeping:insertQueen', hiveId, 'bumbar')
```

{% endstep %}

{% step %}

### Add worker bees (if player has them in inventory)

```lua
TriggerServerEvent('beekeeping:addWorkers', hiveId, 'bee')
```

{% endstep %}

{% step %}

### Feed and collect honey

```lua
TriggerServerEvent('beekeeping:feedHive', hiveId)
TriggerServerEvent('beekeeping:collectHoney', hiveId)
```

{% endstep %}
{% endstepper %}
