Non mi è chiaro .. scusa io facendo :

cloned.ground[x][y]=(Piece)ground[x][y].clone();

non clono l'array più interno??
Quando faccio quell'istruzione qualcosa cambia; infatti se all'inizio l'id del PIECE clonato è 69 dopo diventa 80 ma il problema è che cambia anche quello originario.