There is a defect in the OnConveyorFiltersChange hook.

Player A has TC authorization but is not in the same team as the original owner. When Player A attempts to modify the filter list of an industrial conveyor, they are blocked, but at the same time, the filter list is also cleared. This does not truly prevent the player from modifying the filter list of the industrial conveyor.

Showing your code would be helpful here. Owners and teams has nothing todo with the hook itself.

private object OnConveyorFiltersChange(IndustrialConveyor conveyor, BasePlayer player,
ProtoBuf.IndustrialConveyor.ItemFilterList filterList)
{
if (player == null || conveyor == null) return null;
if (IsTeamMember(player, conveyor, "You cannot modify non team transmitter settings!")) return null;
return false;
}

My guess without seeing your IsTeamMember is that it is comparing two BasePlayers and conveyor is not one. You need to get the conveyor's ownerid or something. And I can't tell if that if statement is supposed to be inverted or you have the return values backwards. https://docs.oxidemod.com/hooks/industrial/OnConveyorFiltersChange

The return value of the IsTeamMember function is correct. The main issue lies in the OnConveyorFiltersChange hook, because I can adjust its return value to NULL, false, true, etc. However, the OnConveyorFiltersChange hook does not fully prevent the player's action. It only indicates that the action was blocked, but in reality, the conveyor's filter list has already been cleared.

I do see what you are saying now. And if you look at the location of the hook that makes sense. filterItems is getting cleared and then it would re-adds them all back, but because the hook blocks they never get re-added.. the hook should be ABOVE the .Clear() 

Thank you for your reply. I'll look further to see if there are any other solutions!