If anyone was curious at the solution. I figured it out hopefully. It's the way I wrote my packer reader method. Sometimes with TCP you my get more or less bytes than what you expect per packet as I suspected so you have to split up the packets once you receive it. The problem was I was getting some packets with item spawn message combined with the movement message and this was what was causing my item not spawning on the client side.