--!native --!optimize 2 local ReplicatedStorage = game:GetService("ReplicatedStorage") local PlacementState = {} local selectedId: string = "" local selectedName: string = "" local changed = Instance.new("BindableEvent") PlacementState.Changed = changed.Event local valueObject = ReplicatedStorage:FindFirstChild("HotbarSelectedBlock") if not valueObject then valueObject = Instance.new("StringValue") valueObject.Name = "HotbarSelectedBlock" valueObject.Parent = ReplicatedStorage end PlacementState.ValueObject = valueObject function PlacementState:SetSelected(id: string?, name: string?) selectedId = id or "" selectedName = name or selectedId valueObject.Value = selectedName or "" local Util = require(ReplicatedStorage:WaitForChild("Shared"):WaitForChild("Util")) Util.StudioLog("[PLACE][CLIENT][SELECT]", "id", selectedId, "name", selectedName) changed:Fire(selectedId, selectedName) end function PlacementState:GetSelected() return selectedId, selectedName end return PlacementState