Need help with Network Ownership and GetPropertyChangedSignal

I want to track a position set. However the position is set on the client, however to allow it to transfer to server I’m using NetworkOwnership. This means that anytime I adjust the position it is seen on the server and by everyone else. I want GetPropertyChangedSignal to pick up on the change on the server side after ive set the value.

However the server doesnt seem to class it as a proper PropertyChangedSignal and ignores it but still places the part in the correct location.

However this happens, as intended but has no log into the console it just logs this which unfortunately is just because at the start via the server I set this value.

Now of course I could just run a while loop checking but thats very taxing on the server, also i’d like to avoid using remote events. (which could increase server speed but that is a security flaw in this case)

ServerSide

Players.PlayerAdded:Connect(function(player)
	workspace.TheRemoteEvent.Position = Vector3.new(0,0.5,0)
	workspace.TheRemoteEvent:SetNetworkOwner(player)
end)

part = workspace.Part1


local function onPositionChanged()
	print("My position is now "..part.Position.X)
end

part:GetPropertyChangedSignal("Position"):Connect(onPositionChanged)

ClientSide

button = script.Parent


function leftClick()
	workspace.TheRemoteEvent.Position = Vector3.new(0,10,0)
end
 
script.Parent.MouseButton1Click:Connect(leftClick)

So does anyone know any less taxing versions that achieve the same results?
or fix the issue im having?

You’ve got Network Ownership wrong. Network Ownership means who to replicate changes made by Roblox’s physics simulations for parts to first.

i.e. If you’ve got a projectile using pure Roblox physics and velocity. With Network Ownership, the projectile will appear smooth for the Player who’s set as the Network Owner of said part. However, without Network Ownership, said part will appear very choppy as it moves across the workspace.

[color=#FF8F00]TL;DR[/color]
Network Ownership is for parts simulated by Roblox’s physics and who to replicate these simulations to first.

This I understand, however what I’m doing is detecting if a value is set, as you can still use this to update the position value from a local script

Network Ownership doesn’t change how Server-Client communications work. But rather prioritizes who to replicate physics simulations to first. You still have to use RemoteEvents/RemoteFunctions.

:GetPropertyChangedSignal works as intended, however, the changes never get made Server-side.

What specifically is workspace.TheRemoteEvent and workspace.Part1?