void Server_PacketReceived(PrecisionPacket packet)
        {
            if (packet.GridId == 0)
            {
                Server_PrecisionData.Remove(packet.OriginalSenderSteamId);
            }
            else
            {
                PrecisionData data;
                if (!Server_PrecisionData.TryGetValue(packet.OriginalSenderSteamId, out data))
                {
                    data = new PrecisionData();
                    Server_PrecisionData[packet.OriginalSenderSteamId] = data;
                }

                data.GridEntId = packet.GridId;
                data.BlockPos  = packet.BlockPos;
            }
        }
        public override void Register()
        {
            Packet = new PrecisionPacket();

            if (Networking.IsPlayer)
            {
                Main.GrinderHandler.GrinderChanged += Local_EquippedGrinderChanged;
            }

            if (MyAPIGateway.Session.IsServer)
            {
                Server_PrecisionData = new Dictionary <ulong, PrecisionData>();

                Main.GrindDamageHandler.GrindingBlock          += Server_GrindingBlock;
                Main.GrindDamageHandler.GrindingFloatingObject += Server_GrindingFloatingObject;

                PrecisionPacket.OnReceive += Server_PacketReceived;
                MyVisualScriptLogicProvider.PlayerDisconnected += Server_PlayerDisconnected;
            }
        }