local PLUGIN = PLUGIN
PLUGIN.name = "Carrying Entities"
PLUGIN.author = "Scripty"
PLUGIN.description = "Позволяет игрокам поднимать любые энтити на клавишу E через стандартную механику."

-- Список классов, которые ЗАПРЕЩЕНО поднимать
local BLACKLIST = {
    ["player"] = true,
    ["worldspawn"] = true,
    ["func_door"] = true,
    ["func_door_rotating"] = true,
    ["prop_door_rotating"] = true,
    ["func_movelinear"] = true,
    ["prop_dynamic"] = true,
    ["ix_vendor"] = true,
    ["gmod_hands"] = true,
    ["viewmodel"] = true
}

if SERVER then
    -- Этот хук вызывается ядром Helix во время GM:AllowPlayerPickup
    function PLUGIN:CanPlayerPickupEntity(client, entity)
        if (!IsValid(entity) or entity:IsPlayer() or entity:IsWorld()) then
            return false
        end

        local class = entity:GetClass()
        if (BLACKLIST[class]) then
            return false
        end

        -- Проверка защиты Helix (Prop Protection)
        local char = client:GetCharacter()
        local owner = entity:GetNetVar("owner", 0)

        -- Разрешаем владельцу, админу или если объект ничей
        if (owner == 0 or (char and owner == char:GetID()) or client:IsAdmin()) then
            local phys = entity:GetPhysicsObject()
            
            -- Разрешаем подбирать только то, что имеет физику
            if (IsValid(phys) and phys:IsMoveable()) then
                return true
            end
            
            -- Прямое разрешение для пакетов крови (если физика считается не-moveable)
            if (class == "bloodbag_medicmod") then
                return true
            end
        end

        return false
    end
end
